原文链接1
原文链接2
原文链接3
原文链接4
查询单列
SELECT 列名 FROM 表名;
//起别名时AS 可以省略
SELECT 列名 [AS] 列的别名 FROM 表名;
查询多个列
SELECT 列名1, 列名2, ... 列名n FROM 表名;
查询所有列
尽量避免使用*号,会影响性能
SELECT * FROM 表名;
去除相同的查询结果
SELECT DISTINCT 列名 FROM 表名;
- 去除多列的重复结果
查询结果是以行为单位返回的,所以两行记录重复就过滤
两条记录重复的意思是:两条记录的每一个列中的值都相同
SELECT DISTINCT 列名1, 列名2, ... 列名n FROM 表名;
department |
major |
计算机学院 |
计算机科学与工程 |
计算机学院 |
计算机科学与工程 |
计算机学院 |
软件工程 |
计算机学院 |
软件工程 |
航天学院 |
飞行器设计 |
航天学院 |
电子信息 |
SELECT DISTINCT department,major FROM student
department |
major |
计算机学院 |
计算机科学与工程 |
计算机学院 |
软件工程 |
航天学院 |
飞行器设计 |
航天学院 |
电子信息 |
限制查询结果条数
LIMIT 开始行, 限制条数;
LIMIT 限制条数; //默认从第0行开始
对查询结果排序
ORDER BY 列名 ASC|DESC
ORDER BY 列1 ASC|DESC, 列2 ASC|DESC ...
说明:
ASC和DESC指的是排序方向。
ASC是由小到大进行排序,也叫做升序,
DESC是由大到小进行排序,也叫做降序,
中间的|表示这两种方式只能选一个
默认ASC 升序列列,所以ASC可省略。
搜索条件
操作符 |
示例 |
说明 |
= |
a=b |
等于 |
<> 或 != |
a<>b |
不等于 |
< |
a<b |
小于 |
> |
a>b |
大于 |
<= |
a<=b |
不大于 |
>= |
a>=b |
不小于 |
BETWEEN |
a BETWEEN b and C |
c <= a <= b |
NOT BETWEEN |
a NOT BETWEEN b and C |
|
IN |
a IN (b1,b2...) |
|
NOT IN |
a NOT IN(b1,b2...) |
|
IS NULL |
a IS NULL |
值为NULL |
IS NOT NULL |
a IS NOT NULL |
|
OR |
或条件 |
|
AND |
与条件 |
优先级高于OR |
LIKE |
|
匹配 |
NOT LIKE |
|
不匹配 |
关于通配符
- %:代表任意一个字符串
- _:代表任意一个字符
- '%'代表普通字符'%','%'代表普通字符'%'
子查询
操作符 |
示例 |
说明 |
EXISTS |
EXISTS(select...) |
子查询有结果时为真 |
NOT EXISTS |
NOT EXISTS(select...) |
子查询没有结果时为真 |
SELECT * FROM student_score
WHERE EXISTS
(SELECT * FROM student_info WHERE number = 20180108);
如果子查询没有结果直接返回false,
外层查询也就不再查,直接返回 Empty set,
查询科目成绩大于平均值
//错误 聚合函数不能放在where内
SELECT * FROM studentScore
WHERE subject = '母猪护理' AND score > AVG(score);
//正确
SELECT * FROM studentScore
WHERE subject = '母猪护理'
AND score >
(SELECT AVG(score) FROM studentScore WHERE subject = '母猪护理');
组合查询
SELECT m1, n1 FROM t1
WHERE m1 < 2
OR m1 > 10
OR m1 = 5;
或组合查询
SELECT m1, n1 FROM t1 WHERE m1 < 2
UNION
SELECT m1, n1 FROM t1 WHERE m1 > 10
UNION
SELECT m1, n1 FROM t1 WHERE m1 = 5
- 查询列表不同
虽然m1、n1和m2、n2是两个不同的查询列表,
但是m1和m2都是整数类型的,n1和n2都是字符串类型的,
所以查询结果拼接到一起。
查询的结果集中显示的列名将以第一个查询中的列名为准
SELECT m1, n1 FROM t1 WHERE m1 < 2
UNION
SELECT m2, n2 FROM t2 WHERE m2> 10
ORDER BY m1 DESC
- 使用UNION来合并多个查询的记录会默认过滤掉重复的记录,如果想要保留重复记录,可以使用UNION ALL来连接多个查询。
网友评论