目录
2.2 请说出对product 表执行如下3条SELECT语句时的返回结果。
2.6 请编写一条SELECT语句,求出销售单价(sale_price列)合计值大于进货单价(purchase_price列)合计值1.5倍的商品种类。执行结果如下所示。
Ch2.基础查询与排序
·完整语句框架:
SELECT <列名1>[,<列名2>, <列名3>,……,聚合函数]
FROM <表名>
WHERE <条件表达式>
GROUP BY <列名1>[,<列名2>,<列名3>,……]
HAVING <条件表达式>
ORDER BY <排序基准列1> [ASC,DESC][,<排序基准列2> [ASC,DESC],……];
一、SELECT语句基础
SELECT <列名> //选择哪些数据
FROM <表名> //从哪里选择
WHERE <条件表达式>; //还需要满足哪些条件(不使用时选择整列数据)
通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query)。
·相关法则
①星号(*)代表全部列的意思。
②SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。
③设定汉语别名时需要使用双引号(")括起来。
④在SELECT语句中使用DISTINCT可以删除重复行。
⑤注释是SQL语句中用来标识说明或者注意事项的部分。分为单行注释"--"和多行注释"/* */"两种。
--想要查询出全部列时,可以使用代表所有列的星号(*)。
SELECT *
FROM <表名>;
-- SQL语句可以使用AS关键字为列设定别名(用中文时需要双引号(“”))。
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 <聚合函数>
SQL中用于汇总的函数叫做聚合函数。以下五个是最常用的聚合函数:
①SUM:计算表中某数值列中的合计值
②AVG:计算表中某数值列中的平均值
③MAX:计算表中任意列中数据的最大值,包括文本类型和数字类型
④MIN:计算表中任意列中数据的最小值,包括文本类型和数字类型
⑤COUNT:计算表中的记录条数(行数)
·相关法则
①COUNT聚合函数运算结果与参数有关,COUNT(*) COUNT(1)得到包含NULL值的所有行,COUNT(<列名>)得到不包含NULL值的所有行。
②聚合函数不处理包含NULL值的行,但是COUNT(*)除外。
③MAX/MIN函数适用于文本类型和数字类型的列,而SUM/AVG函数仅适用于数字类型的列。
④在聚合函数的参数中使用DISTINCT关键字,可以得到删除重复值的聚合结果。
-- 计算销售单价和进货单价的合计值
SELECT SUM(sale_price), SUM(purchase_price)
FROM product;
-- 计算销售单价和进货单价的平均值
SELECT AVG(sale_price), AVG(purchase_price)
FROM product;
-- 计算销售单价的最大值和最小值
SELECT MAX(sale_price), MIN(sale_price)
FROM product;
-- MAX和MIN也可用于非数值型数据
SELECT MAX(regist_date), MIN(regist_date)
FROM product;
-- 计算全部数据的行数(包含 NULL 所在行)
SELECT COUNT(*)
FROM product;
-- 计算 NULL 以外数据的行数
SELECT COUNT(purchase_price)
FROM product;
-- 计算共有多少种类型
SELECT COUNT(DISTINCT product_type)
FROM product;
2. 分组操作
2.1 分组聚合
SELECT <列名1>,<列名2>, <列名3>, ……
FROM <表名>
WHERE <条件表达式>
GROUP BY <列名1>, <列名2>, <列名3>, ……;
GROUP BY可以实现按照某列来进行分组汇总。
在GROUP BY子句中指定的列称为聚合键或者分组列。
【注】NULL会作为一