SQL基础查询与排序-天池龙珠计划SQL训练营-笔记
1. SELECT语句基础
1.1 从表中选取数据
根据列选出所有行
select <列名>,from <表名>
1.2从表中选取符合条件的数据
需要用到where 语句,对列加入约束, 从句语法
select <list_name>, …
from <table_name>
where <condition_>;
1.3相关法则
- 星号(*) 代表全部。
- 汉语别名用双括号。
- 一行注释 “–” 多行注释 ‘/* */’
- select distinct 删除重复行
2. 算数运算符和比较运算符
2.1 算数运算符
- 常数使用‘’ 与字符串的引号不同
- +,-,*,/
2.2 比较运算符
注意不相等符号。NULL不可用来比大小吗,而是用逻辑判断 is, is not。
3. 逻辑运算符
- and or not
- NULL 数据不知道真假 结果为YNKNOWN
- and 优先级高于or ,使用括号优先处理
4. 聚合查询
聚合的是行
- count 计算行数 不会将NULL排除在外,其他会
- sum
- avg
- max
- min
使用语法:
select function(<list_name>)
from <table_name>;
除去重复值:
select function( distinct<list_name>)
from <table_name>;
5.对表进行分组
5.1group by 语句
在未使用之前,聚合函数是对单列进行独立操作,分组之后(按照列的具体值分组),是对单列分组操作。NULL作为一组特殊值进行处理。
如图所示:
5.2 GROUP BY书写位置以及常见错误
严格!
select from where group by
- 在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)
- 在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
- 在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。
- 实践中总结
6. 为聚合结果指定条件
where只能指定行的条件,不能指定组的条件,因此又和having。 在group by之后使用。
SELECT product_type, COUNT(*)
FROM product
GROUP BY product_type
HAVING product_name = ‘圆珠笔’;
7. 对查询结果进行排序
- select from order by
- select from order by desc
- FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY