DDL語句
1.創建數據庫:
CREATE DATABASE dbname
2.獲取系統中所有數據庫
SHOW databases
3.選擇數據庫
USE dbname
4.顯示數據庫中創建的所有數據表
SHOW tables
5.刪除數據庫
drop database dbname
6.創建表
CREATE TABLE tablename(
colum_name_1 colum_type_1 constraints,
colum_name_2 colum_type_2 constraints,
...
colum_name_n colum_type_n constraints
)
7.查看錶的定義
DESC tablename
8.查看創建表的SQL語句
SHOW CREATE TABLE tablename
9.刪除表
DROP TABLE tablename
10.修改表
修改字段類型:
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]
增加表字段
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name]
刪除表字段
ALTER TABLE tablename DROP [COLUMN] col_name
字段改名
ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]
修改字段排列順序
在前面介紹的字段增加和修改語法中[ADD/CHANGE/MODIFY]中, 可選項first|after col_name,這個選項可以用來修改字段在表中位置,其中ADD增加字段默認是加在表的最後位置,而CHANGE/MODIFY默認不會改變字段的位置。
注:該可選字端屬於mysql 在標準 SQL上的擴展,其他數據庫不一定適用。
更改表名
ALTER TABLE tablename RENAME [TO] new_talbename
DML語句
1.插入記錄:
基本語法:
INSERT INTO tablename(field1, field2,...,fieldn) VALUES (value1, value2, ... ,valuen)
也可以不指定字段名稱,但是values後面的順序應該和字段的順序一致
INSERT INTO tablename VALUES (value1, value2, ... ,valuen)
含有空字段、非空但是含有默認值得字段、自增字段,可以不用在inset後的字段列表裏面出現,values後面只寫對應字段名稱的 value,它們會被設置爲null,、默認值、自增的下一數字。
在MySQL中,insert語句可以一次性插入多條記錄,語法如下:
INSERT INTO tablename (field1, field2, fieldn)
VALUES
(record1_value1,record1_value2,..., record1_valuen),
(record2_value1,record2_value2,..., record2_valuen),
...
(recordn_value1,recordn_value2,..., recordn_valuen);
2.更新記錄
基本語法:
UPDATE tablename SET field1=value1, field2=value2,...,fieldn=valuen [WHERE CONDITION]
在MySQL中,update命令可以同時更新多個表中數據:
UPDATE t1, t2, ..., tn set t1.field1=expr1, tn.fieldn=exprn [WHERE CONDITION]
注意:多表更新的語法更多地用在根據一個表的字段來動態地更新另一個表的字段。
3.刪除記錄
基本語法:
DELETE FROM tablename [WHERE CONDITION]
在MySQL中可以一次刪除多個表中的數據,語法如下:
DELETE t1, t2,..., tn FROM t1, t2, ..., tn [WHERE CONDITION]
如果from的表要用別名,在delete後面也要用相應的別名
4.查詢記錄
基本語法:
SELECT * FROM table [WHERE CONDITION]
查詢不重複的記錄
SELECT disinct col_name1, col_name2,.., col_namen FROM table [WHERE CONDITION]
條件查詢:
SELECT * FROM tablename WHERE field1 = value1
在where後面的條件可以使用>、<、 >=、<=、!=等比較運算符,多個條件鍵可以使用or、and等邏輯運算符進行多條件聯合查詢。
排序和限制
利用ORDER BY來實現數據庫克排序操作
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC | ASC], ..., fieldn [DESC|ASC]]
其中,DESC爲降序排列,ASC爲升序排列(默認)。如果排序字段的值一樣,則按照下一個排序字段排序,如果沒有下一個字段,則這些相同字段會無序排列。
利用LIMIT限制顯示
SELETCT ... [LIMIT offset_start, row_count]
其中,offset_start 表示記錄的初始偏移量,默認爲0,row_count 表示顯示的行數。
limit和order by一起配合使用來進行記錄分頁顯示。
注意:limit屬於MySQL擴展SQL92後的方法,在氣體數據庫上並不通用。
聚合
基本語法:
SELECT [field1, field2, ..., fieldn] fun_name
FROM tablename
[WHERE where_condition]
[GROUP BY field1, field2, ..., fieldn
[WITH ROLLUP]]
[HAVING where_condition]
對參數進行說明:
fun_name表示要做的聚合操作,常有sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值).
GROUP BY表示要進行分類聚合的字段,比如安裝部門分類統計員工數量,部門就應該寫在group by後面。
WHITH ROLLUP爲可選語法,表明是否對分類聚合後的結果進行再彙總。
HAVING關鍵字表示對分類後的結果再進行條件的過濾。
注:having和where區別在於,having是對聚合後的結果進行條件的過濾,而where是在聚合前就記錄進行過濾。如果邏輯允許我們儘可能先用where過濾記錄,因爲結果集建設對聚合的效率大大提高。
表連接
表連接分爲內連接客和外連接,它們最主要的區別是,內連接僅選出表中互相匹配的記錄,而外連接會選出其他不匹配的記錄。
內連接
SELECT t1.field1,..., t1.fieldn, t2.field1,..., t2.fieldn
FROM t1, t2
WHERE t1.fieldi = t2.fieldi
外連接右分爲左連接和右連接,具體定義如下:
左連接:包含所有左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄。
右連接:包含所有右邊表中的記錄設置是左邊表中沒喲和它匹配的記錄。
SELECT t1.field1,..., t1.fieldn, t2.field1,..., t2.fieldn
FROM t1, t2
LEFT JOIN t1 ON t1.fieldi = t2.fieldi
6.子查詢:
在某些情況下,當進行查詢的時候,需要的條件是另一個select語句的結果,這時就要用到子查詢。用於子查詢的關鍵字主要包括in, not in, = , != , exists, not exists等
7.記錄聯合
將兩個表的數據按照一定的查詢條件查詢出來後,將結果合併到一起顯示出來。
SELECT * FROM t1
UNION\UNION ALL
SELECT * FROM t2
...
SELECT * FROM tn;
UNION和UNION ALL主要的區別是UNION ALL是包結果集直接合併在一起,而UNION是將UNION ALL後的結果再進行一次DISTINCT,去除重複記錄後的結果。
DCL語句
DCL語句主要是DBA用來管理系統中的對象權限時使用。