MySQL管理與優化(1):SQL基礎

工程師WWW發表於2014-08-29

SQL簡介

  • SQL: Structure Query Language(結構化查詢語句), 是我們與資料庫互動的一種方式。

(MySQL)使用入門

  • SQL分類:

       1. DDL(Data Definition Language),資料定義語言。主要操作物件為資料庫,表,欄位,索引等。

       2. DML(Data Manipulation Language), 資料操縱語句。主要運算元據庫表記錄。

       3. DCL(Data Control Language), 資料控制語言。主要對錶,欄位等進行安全控制和授權。

DDL語句

  • 建立資料庫
?
1
CREATEDATABASE <資料庫名>;
  • 刪除資料庫
?
1
DROPDATABASE <資料庫名>;
  • 建立表
?
1
2
3
4
5
CREATETABLE <表名> (
    列名1, 資料型別1, 約束條件1,
    列名2, 資料型別2, 約束條件2,
    ...
)
例如:
?
1
2
3
4
5
6
CREATETABLE emp(
    enameVARCHAR(10) COMMENT '僱員名稱',
    hiredate DATETIME COMMENT '僱傭時間',
    salDECIMAL(10, 2) COMMENT '薪水',
    deptnoINT(2) COMMENT '部門編號'
);
  • 檢視錶資訊

  • 檢視建立表的詳細資訊

  • 刪除表
?
1
droptable <table_name>
  • 修改表

    1.修改欄位型別:

     2.增加表欄位:

    3.刪除表欄位:

     4.欄位改名:

     5.修改欄位排列順序

     6.修改表名:

DML語句:

  • 插入記錄
?
1
2
3
4
5
6
INSERTINTO <table_name>
(field1, field2, ...)
VALUES
(val1, val2, ...),
(val1', val2', ...),
...
  • 更新記錄
?
1
2
3
4
UPDATE<table_name>
SET
field1=val1, field2=val2, ...
[WHERE] ...
  • 刪除記錄
?
1
2
DELETEFROM <table_name>
WHERE...
  • 查詢記錄
?
1
SELECT* FROM<table_name> WHERE...
(1)查詢不重複的記錄
?
1
SELECTDISTINCT field_name FROM<table_name>;
(2)分頁查詢
?
1
SELECT* FROM<table_name> LIMIT <offset>, <pagesize>
(3)聚合
?
1
2
3
4
5
6
SELECT(field1, field2, ...) func_name #表示某種聚合函式,如max,sum
FROM<table_name>
[WHEREcondition] #where條件語句, 分類前過濾
[GROUPBY field1, field2, ... #分組語句
[WITHROLLUP]] #是否再彙總
[HAVINGcondition] #對分類後再過濾
(4)聯合
?
1
2
3
SELECT* FROMtable1
UNION/UNIONALL #前者合併時做一次DISTINCT, 後者直接合並
SELECT* FROMtable2

DCL語句:

(1)授權:

?
1
GRANT[SELECT/UPDATE/INSERT/DELETE]on[DB.*/DB.<table>]TO'<username>'@'<host>'IDENTIFIED BY'<password>';
(2)回收授權:
?
1
REVOKE[SELECT/UPDATE/INSERT/DELETE]ON[DB.*/DB.<table>]FROM'<username>'@'<host>';
不吝指正。

相關文章