入门精通2-查询
sql查询学习,内容有分组、排序、子查询、表连接以及集合操作
查询的结构如下:
1 | select |
在SELECT子句中,列数据类型为数字类型和时间类型可以使用+、-、*、/、()。也可以使用 DISTINCT关键字去除重复行。WHERE子句用于筛选查询结果,筛选的方式可以分为如下:
- 逻辑:A>B、A=B、A<B、A!=B、A LIKE('%','_')、NOT A
- 连接:AND、OR
- 关于NULL:IS NULL、IS NOT NULLORDER BY子句用于对查询的结果集按指定列排序。如果有多个列排序,则列名之间使用逗号隔开。排序分为升序ASC和降序DESC,不写名则默认ASC。GROUP BY子句用于对查询集进行分组。一般分组会使用统计函数,常用的统计函数有:COUNT()、MAX()、MIN()、SUM()、AVG()。分组时还可以使用关键字ROLLUP或CUBE将统计结果汇总,它们的不同在于ROLLUP汇总行在底端、CUBE汇总行在顶端
演示1:
1 | select job, max(sal), min(sal), count(sal), avg(sal), sum(sal) |

演示2:
1 | select job, max(sal), min(sal), count(sal), avg(sal), sum(sal) |
HAVING子句可以对分组后的数据进行再一次筛选。如果没有GROUP BY子句,则HAVING的条件在WHERE后执行。FROM子句为查询的数据来源,可以为多个数据表。若查询多个表,则需要连接。
多表连接
简单连接:多个表使用逗号分隔开,得到的集合为笛卡尔积。
限制连接:使用WHERE子句限制笛卡尔积的连接方式。
JOIN连接
形式如下:
1 | ... |
内连接:INNER JOIN可以省略为JOIN
自然连接:NATURAL JOIN。相同列进行连接,所以不需要连接表达式NO join_condition
左连接:LEFT OUTER JOIN可以省略OUTER
右连接:RIGHT OUTER JOIN可以省略OUTER
全连接:FULL OUTER JOIN可以省略OUTER
集合操作
表示对多个查询结果做集合操作,及对多个SELECT子句进行运算,得到最终的结果集。UNION:多个查询结果相加,即查询集的并集运算UNION ALL:UNION所得的结果中不进行重复行的删除INTEREST:对查询集进行交集运算MINUS:前查询集合对后查询集合做差所得差集,为结果集
子查询
IN:列值是否属于IN集合EXISTS:子查询的结果集是否为空