INSERT
INSERT [INTO] 表名 [(列名1,列名2,...)] VALUES(列值1,列值2,...),(...),...;
NULL
或DEFAULT
,系統將自動依次遞增編號;md5()
函數進行加密(如md5('123'));INSERT [INTO] 表名 SET 列名1=列值1, 列名2=列值2,...;
Boolean
類型都可以不賦值(使用子查詢)INSERT [INTO] 表名(列名1,...) SELECT 列名1,... FROM 表名 [GROUP BY/HAVING/ORDER BY/LIMIT...]; --示例 INSERT test SELECT username FROM users WHERE age >=30; --上面會有字段不匹配提示,改成 INSERT test(username) SELECT username FROM users WHERE age >=30;
UPDATE
UPDATE 表名 SET 列名1=列值1 [,列名2=列值2, ...] [WHERE 條件]; --(如條件爲 列名=列值 修改某一字段的值)
DELETE
DELETE FROM 表名 [WHERE 條件];
SELECT
SELECT select_expr [,select expr2...] --只查找某一個函數或表達式 [ FROM table_references --查詢表名 [WHERE where_conditon] --查詢條件 [GROUP BY {col_name|position} [ASC|DESC],...] --按某個字段進行分組,相同的只顯示第一個 [HAVING where_conditon] --分組時,給出顯示條件 [ORDER BY {col_name|expr|position} [ASC|DESC],...] --排序 [LIMIT {[offset,]row_count | row_count OFFSET offset}] --限制返回數量 ]
GROUP BY
,ORDRE BY
或HAVING
子句WHERE
WHERE 關鍵字後根據sql
>、<、=、>=、<=、!=、<>、IS NOT NULL
and,or
left join、right join
IN、NOT IN、like、not like、regexp
等各類MySQL函數和表達式,從表集合中篩選記錄。函數
GROUP BY
GROUP BY
只能顯示每組第一條,因此通常用來統計每組的條數,某個值的和等等,要顯示所有數據的話最好用 ORDER BY
加密
[GROUP BY {col_name|position} [ASC|DESC],...]
ASC
:升序,默認DESC
:降序position
:SELECT語句中列的序號age
可能有多個相同的值),只會保留一個。但使用ORDER BY
就不會省略。示例:SELECT sex FROM users GROUP BY sex;
對users中的sex按sex進行分組 code
SELECT * FROM users GROUP BY 1;
這裏查詢全部字段,1表示SELECT語句中第一個出現的字段,即位置。 建議GROUP BY
後寫列名稱,不寫位置,由於位置容易數錯.regexp
HAVING
[HAVING 聚合函數()] [HAVING where_condition]
用在GROUP BY
後面追加條件,HAVING
後面能夠跟聚合函數(如count()
,max()
等等),或者跟判斷式.
注意where_condition
中的字段必須出如今前面SELECT
中,不然缺乏字段無法進行篩選.
示例:SELECT sex FROM users GROUP BY 1 HAVING age > 35;
有錯,應該改成: SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;
排序
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
這條指令按照sex分組,分紅了兩組sex=0和sex=NULL,條件id個數大於2的留下顯示,顯然sex=0個數有8>2故留下,而sex=NULL個數爲1,不知足條件,故不顯示。若是條件改爲count(id)>=1,則會顯示sex爲0和NULL兩個分組。
聚合函數永遠只有一個返回結果.md5
ORDER BY
ORDER BY { col_name | expr | position } [ASC|DESC],...
對查詢結果進行排序,默認是升序
能夠同時按多條字段進行排序,規則是先按前面的字段排,在基礎上再按後面字段排。it
--對一個字段排序 SELECT * FROM users ORDER BY id DESC; --先按照age排序,若是age有重複的,重複的字段裏按id排序 SELECT * FROM users ORDER BY age,id DESC;
LIMIT
LIMIT {[offset,]row_count | row_count OFFSET offset}
限制查詢結果返回的行數io
-- 從第一條開始(第一個爲0),返回兩條 SELECT * FROM users LIMIT 2; --從第三條開始(第一個爲0),返回三條 SELECT * FROM users LIMIT 2,3 ;