SELECT语句
SELECT <列名>, FROM <表名>;
WHERE语句 : 从表中选取符合条件的数据
SELECT <列名>, …FROM <表名> WHERE <条件表达式>;
相关法则
星号()代表全部列的意思。 SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。 设定汉语别名时需要使用双引号(")括起来。
在SELECT语句中使用DISTINCT可以删除重复行。 注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释"–“和多行注释两种”/ */"。
算术运算符
+,-,*,/
比较运算符
=, <>, <=, >, <=, <
逻辑运算符
NOT, AND, OR,
括号内的优先运行
聚合查询
COUNT, SUM, AVG, MAX, MIN
删除重复值 DISTINCT
COUNT函数的结果根据参数的不同而不同。COUNT()会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
聚合函数会将NULL排除在外。但COUNT()例外,并不会排除NULL。
MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。
想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。
在聚合函数的参数中使用DISTINCT,可以删除重复数据。
分组
GROUP BY : 聚合键中包含NULL时,会将NULL作为一组特殊数据进行处理
GROUP BY的子句书写顺序有严格要求,不按要求会导致SQL无法正常执行,目前出现过的子句书写****顺序为:
1**.**SELECT → 2. FROM → 3. WHERE → 4. GROUP BY
常见错误:在使用聚合函数及GROUP BY子句时,经常出现的错误有:
①在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)。
②在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
③在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。
为聚合结果指定条件
用HAVING得到特定分组, HAVING子句用于对分组进行过滤,可以使用数字、聚合函数和GROUP BY中指定的列名(聚合键)
对查询结果进行排序
ORDER BY
在ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名
分页函数
LIMIT
LIMIT 2 检索前两行
LIMIT 3,2 从第四行开始,取两行(LIMIT是从0开始计数)
LIMIT 4,6 从第四行开始,往后取6行