1.带IN关键字的查询。
IN用来指定某字段的取值的集合。
[NOT] IN (元素1, 元素2...)
例如:SELECT * FROM employee WHERE id IN(1001,1002);
代表查询表中id为1001和1002的记录。
2.带BETWEEN AND 关键字
表示字段值是否在指定范围内。
[NOT] IBETWEEN 取值1 AND 取值2
例如:SELECT * FROM employee WHERE age BETWEEN 15 AND 20;
代表查询表中年龄大于等于15小于等于20的记录。
3.带LIKE关键字查询
表示匹配字符串是否符合
[NOT] LIKE '字符串'
例如:SELECT * FROM employee where name like 'Aric%'
代表查询表中名字以Aric开头的记录
匹配字符串中可以包含‘%’或'_'的通配字符
其中(1)"%"代表任意长度的字符串,长度可以为0;例如b%k可以匹配bk, bak, book等字符串。
(2)‘_’只能表示单个字符。当需要匹配的字符为汉字时,因为汉字占两个字符位,所以需要两个下划线代表一个汉字,例如:需要匹配张三,则需要写为‘张__’(两个下划线)
4.空值查询
IS [NOT] NULL
例如:SELECT * FROM work WHERE info is NOT NULL;
代表查询表中info字段不为空的记录。
5.多条件查询:AND OR 可以连接多个条件
其中OR可以和AND一起使用,两者一起使用时,AND要比OR先选择。
6.消除属性名字段中的重复结果
SELECT DISTINCT 属性名
例如:SELECT DISTINCT id FROM employee;
返回id不重复的记录
7.对结果进行排序
ORDER BY 属性名 [ASC|DESC]
ASC代表升序(默认值,可省略不写),DESC代表降序
例如:SELECT * FROM employee ORDER BY age DESC;
返回年龄从大到小的记录合集。空值代表最小值
8.使用LIMIT限制查询结果的数量
例如:
SELECT * FROM employee LIMIT 2 只显示前两条记录
SELECT * FROM employee LIMIT 0,2 0代表初始位置,2代表记录数
9.分组查询
查询的字段中值相等的为一组。
GROUP BY 属性名 [HAVING 表达式 ] [WITH ROLLUP]
(1)单独使用GROUP BY关键字分组,查询结果只显示一个分组的一条记录。
SELECT * FROM employee GROUP BY sex;
只显示男女两条记录,这种用法意义不大。一般在集合函数中才使用GROUP BY
(2)与GROUP_CONCAT()函数一起使用。
每个分组中指定字段值都显示出来。
例如:SELECT sex, GROUP_CONCAT(name) FROM employee GROUP BY sex;
结果:
sex | GROUT_CONCAT(name)
女 | 张三
男 | 李四,王五,Aric
(3)与集合函数一起使用,可记录分组的总记录最小值最大值等。
例如:SELECT sex, COUNT(name) FROM employee GROUP BY sex;
SELECT sex, COUNT(sex) FROM employee GROUP BY sex HAVING COUNT(sex)>=3 ;结果:
sex | GROUT_CONCAT(name)
女 | 1
男 | 3
聚会函数包括:COUNT(),SUM(),AVG(),MAX(),MIN()(4)与HAVING 一起使用,限制输出的结果
例如:SELECT sex, COUNT(sex) FROM employee GROUP BY sex HAVING COUNT(sex)>=3 ;
注意:'WHERE' 作用于表或视图;'HAVING' 作用于分组后的记录,用于选择满足条件的组。
(5)按多个字段进行分组
例如:SELECT * FROM employee GROUP BY id,sex;
先按照id进行分组,id字段值相等则按照sex分组。
(6)与WITH ROLLUP 一起使用
将会在在所以记录的最后加上一条记录,代表上面记录的总和。
例如:SELECT sex, COUNT(sex) FROM employee GROUP BY sex WITH ROLLUP;
结果:
sex | GROUT_CONCAT(name)
女 | 张三
男 | 李四,王五,Aric
NULL | 张三,李四,王五,Aric