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 ;