Task02:SQL基础查询与排序
一、SELECT语句基础
1.1 从表中选取数据
1.2从表中选取符合条件的数据
1.3 相关法则
二、算术运算符和比较运算符
2.1 算术运算符
2.2 比较运算符
2.3 常用法则
三、逻辑运算符
3.1 NOT运算符
3.2 AND运算符和OR运算符
3.3 通过括号优先处理
3.4 真值表
3.5 含有NULL时的真值
练习题-第一部分
练习题1
练习题2
练习题3
练习题4
四、对表进行聚合查询
4.1 聚合函数
4.2 使用聚合函数删除重复值
4.3 常用法则
五、对表进行分组
5.1 GROUP BY语句
5.2 聚合键中包含NULL时
5.3 GROUP BY书写位置
5.4 在WHERE子句中使用GROUP BY
5.5 常见错误
六、为聚合结果指定条件
6.1 用HAVING得到特定分组
6.2 HAVING特点
七、对查询结果进行排序
7.1 ORDER BY
7.2 ORDER BY中列名可使用别名
练习题-第二部分
练习题5
练习题6
练习题7
SQL训练营页面地址:https://tianchi.aliyun.com/specials/promotion/aicampsql
天池龙珠计划训练营地址:https://tianchi.aliyun.com/specials/promotion/aicamps
只有 SQL 中的逻辑运算被称为三值逻辑
-- 将查询条件原封不动地写入条件表达式,会得到错误结果
SELECT product_name, product_type, regist_date
FROM product
WHERE product_type = '办公用品'
AND regist_date = '2009-09-11'
OR regist_date = '2009-09-20';
-- 通过使用括号让OR运算符先于AND运算符执行
SELECT product_name, product_type, regist_date
FROM product
WHERE product_type = '办公用品'
AND ( regist_date = '2009-09-11'
OR regist_date = '2009-09-20');
is null ,is not null;
=null和<>null是错误的写法
-- 计算去除重复数据后的数据行数
SELECT COUNT(DISTINCT product_type)
FROM product;
-- 是否使用DISTINCT时的动作差异(SUM函数)
SELECT SUM(sale_price), SUM(DISTINCT sale_price)
FROM product;
4.3 常用法则
COUNT函数的结果根据参数的不同而不同。COUNT()会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
聚合函数会将NULL排除在外。但COUNT()例外,并不会排除NULL。
MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。
想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。
在聚合函数的参数中使用DISTINCT,可以删除重复数据。
关键字段需严格遵守书写次序
SELECT purchase_price, COUNT(*)
FROM product
WHERE product_type = '衣服'
GROUP BY purchase_price;
在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行
7.2 ORDER BY中列名可使用别名
前文讲GROUP BY中提到,GROUP BY 子句中不能使用SELECT 子句中定义的别名,但是在 ORDER BY 子句中却可以使用别名。为什么在GROUP BY中不可以而在ORDER BY中可以呢?
这是因为SQL在使用 HAVING 子句时 SELECT 语句的执行****顺序为:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
其中SELECT的执行顺序在 GROUP BY 子句之后,ORDER BY 子句之前。也就是说,当在ORDER BY中使用别名时,已经知道了SELECT设置的别名存在,但是在GROUP BY中使用别名时还不知道别名的存在,所以在ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名****。
更多内容详见
task2