DISTINCT
DISTINCT常与SELECT连用,如:SELECT DISTINCT。用于返回唯一且不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
现有account表:
id | name | money |
---|---|---|
1 | aaa | 1000 |
2 | bbb | 1000 |
3 | ccc | 1000 |
4 | ccc | 1000 |
SELECT DISTINCT name FROM account
结果:
name |
---|
aaa |
bbb |
ccc |
ORDER BY
ORDER BY 语句用于对结果集进行排序。
语法:
SELECT 列1,列2 FROM 表 ORDER BY 列1
IN
IN 操作符允许我们在 WHERE 子句中规定多个值。
语法:
SELECT 列1,列2
FROM table_name
WHERE 列1 IN (value1,value2,…)扫描二维码关注公众号,回复: 10589397 查看本文章
JOIN
JOIN等同于INNER JOIN,即内连接。用于根据两个或多个表中的列之间的关系,从这些表中查询数据。说白了就是拼接两个表。
语法:
SELECT * FROM 表1 JOIN 表2 ON 表1的某个属性 = 表2的某个属性
student表:
id | name | class_id |
---|---|---|
1 | sam | 1 |
2 | jack | 1 |
3 | paul | 2 |
4 | louis | 2 |
5 | thomas | 4 |
6 | stevie | 3 |
class表:
id | name |
---|---|
1 | 一班 |
2 | 二班 |
3 | 三班 |
SELECT * FROM student JOIN class ON student.class_id = class.id
执行结果为:
可以注意到只有5条记录,不满足ON条件的会直接过滤掉。相当于
SELECT * FROM student,class WHERE student.class_id = class.id
LEFT JOIN
左外连接,不满足ON条件的会保留左边那张表的数据,右边表数据直接显示NULL(左边的数据会全盘保留)。
SELECT * FROM student LEFT JOIN class ON student.class_id = class.id
结果如下:
可以看到,Thomas的班级id和name为空,因为是左连接,即使不满足ON条件,左表得以保留。
UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SELECT name FROM student
UNION
SELECT name FROM class;
结果为:
GROUP BY
与一些统计函数结合对结果集进行分组
ORDER表如下:
id | customer | order_price |
---|---|---|
1 | sam | 1000 |
2 | bush | 700 |
3 | bush | 2700 |
4 | sam | 2100 |
5 | kat | 500 |
6 | sam | 1400 |
7 | kat | 1100 |
8 | bush | 200 |
执行如下SQL语句:
SELECT customer,SUM(order_price)
FROM order
GROUP BY customer;
结果为:
HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。现在,我们希望查找订单总金额大于 2000 的客户。
SQL 语句如下:
SELECT customer,SUM(order_price)
FROM order
GROUP BY customer
HAVING SUM(order_price)>2000;
注意GROUP BY要在HAVING前面,因为HAVING是在最后结果集中处理。结果如下: