1.1 SELECT
1.1.1 SELECT基本语句
SELECT 语句用于从表中选取数据。基本SELECT语句包含了SELECT和FROM两个子句(clause
注意:a.星号(*)是选取所有列的快捷方式。(示例:SELECT * FROM <表名>)
b.SELECT语句中使用DISTINCT可以删除重复行。(实例:SELECT DISTINCT 列名称 FROM 表名称)
c.设定汉语别名时需要使用双引号(")括起来。(SELECT product_id As id,purchase_price AS “进货单价” FROM product;)
1.1.1 WHERE语句
当需选取出满足某些条件的数据时,使用WHERE语句。
WHERE也可以选取出不是查询条件的列,即条件列与输出列不同。(示例:SELECT product_name FROM product WHERE product_type = ‘衣服’;)
1.2 算数运算符和比较运算符
注意:字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
1.3逻辑运算符
1.3.1 注意:AND 运算符优先于 OR 运算符,想要优先执行OR运算,需要使用括号。
1.3.2 真值表
一般的逻辑运算并不存在这第三种值。SQL 之外的语言也基本上只使用真和假这两种真值。与通常的逻辑运算被称为二值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。
1.4 聚合函数
SQL中用于汇总的函数叫做聚合函数,主要有count/sum/avg/max/min.
COUNT:计算表中的记录数(行数)
SUM:计算表中数值列中数据的合计值
AVG:计算表中数值列中数据的平均值
MAX:求出表中任意列中数据的最大值
MIN:求出表中任意列中数据的最小值
注意:a.聚合函数去重
示例:-- 计算去除重复数据后的数据行数
SELECT COUNT(DISTINCT product_type) FROM product
b.聚合函数会将NULL排除在外。但COUNT()例外,并不会排除NULL;COUNT函数的结果根据参数的不同而不同。**COUNT()会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数**。
1.5 GROUP BY
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组.
注意:a.在 GROUP BY 子句中指定的列称为聚合键或者分组列。对一个以上的列GROUP BY 时用“,”区分,列名可用1,2,3…99代替
b.聚合键中包含NULL时,会将NULL作为一组特殊数据进行处理
c.在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
d.WHERE中使用聚合函数会出现矛盾,因为where正在处理数据集,但是聚合函数需要在确定的集中使用。
1.6 HAVING
HAVING可在GROUP BY后面使用,用法类似WHERE。
HAVING子句用于对分组进行过滤,可以使用数字、聚合函数和GROUP BY中指定的列名(聚合键)。
1.7 排序
1.7.1 ORDER BY 默认为升序排列,降序排列为DESC
1.7.2 ORDER 可用SELECT定义的别名
原因:ORDER BY的执行顺序在SELECT之后;
SQL在使用 HAVING 子句时 SELECT 语句的顺序为:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY