本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun/specials/promotion/aicampsql 

Part1:学习知识点概要

本笔记主要记录SQL语言的SELECT语句、运算符、聚合及分组查询的用法。

Part2:学习内容

一、SELECT语句基础

# 从表中选取数据
SELECT <列名>,
  FROM <表名>;

# 从表中选取符合条件的数据
SELECT <列名>, ……
  FROM <表名>
 WHERE <条件表达式>;

备注:1、星号代表全部列;2、SQL中可以随意使用换行符,不影响语句执行;3、设定汉语别名时需要用双引号括起来;4、DISTINCT语句可删除重复行;5、单行注释“--”,多行注释“/*  */ ”。

SELECT product_id     AS id,
     product_name   AS name,
     purchase_price AS "进货单价"
FROM product;
# 使用DISTINCT删除product_type列中重复的数据
SELECT DISTINCT product_type
FROM product;

二、运算符

算数运算符:+ ;-;*;/

比较运算符:=;<>;>=;>;<=;<

    备注:1、SELECT子句可使用常数或表达式;2、条件表达式中使用IS NULL或IS NOT NULL。

逻辑运算符:NOT;AND;OR

    备注:1、AND优先于OR,可使用括号优先处理;NULL是除真假外的不确定。

三、聚合分组查询

1、对表进行聚合查询

SQL中用于汇总的函数叫做聚合函数,常用的有:1、COUNT:计算表中的记录数(行数);2、SUM:列中数据的合计值;3、AVG:列中数据的平均值;4、MAX:任意列中数据的最大值;5、MIN:任意列中数据的最小值。

# 计算全部数据的行数(包含NULL)
SELECT COUNT(*)
  FROM product;

# 聚合函数参数中使用DISTINCT删除重复值
# 是否使用DISTINCT时的动作差异(SUM函数)
SELECT SUM(sale_price), SUM(DISTINCT sale_price)
 FROM product;

 备注:

1、COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数;2、聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL;3、MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列;4、想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。

2、对表进行分组

# 想将进行分组汇总时(即:将现有的数据按照某列来汇总统计)
# GROUP BY 子句中指定的列称为聚合键或者分组列。
# 书写顺序:SELECT → FROM →  WHERE →  GROUP BY
SELECT <列名1>,<列名2>, <列名3>, ……
  FROM <表名>
 GROUP BY <列名1>, <列名2>, <列名3>, ……;

备注: 

1、使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键);2、SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名;3、在WHERE中不能使用聚合函数 , 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。

3、其他

  • 为聚合结果指定条件:HAVING;对查询结果进行排序:ORDER BY
  • ORDER BY子句可以使用别名,因为SQL在使用 HAVING 子句时 SELECT 语句的执行顺序为:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

Part3:学习问题与解答

暂无

Part4:学习思考与总结

SQL的学习要勤动手,在实践中发现和解决问题!

更多推荐

SQL训练营:SQL基础-查询与排序