1、SELECT语句基础
1.1 从表中选取数据
从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思。通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query)。
基本SELECT语句包含了SELECT和FROM两个子句(clause)。示例如下:
SELECT <列名>,
FROM <表名>;
1.2 从表中选取符合条件的数据
WHERE语句
当不需要取出全部数据,而是选取出满足“商品种类为衣服”“销售单价在1000日元以上”等某些条件的数据时,使用WHERE语句。
SELECT 语句通过WHERE子句来指定查询数据的条件。在WHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件。执行含有这些条件的SELECT语句,就可以查询出只符合该条件的记录了。
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
比较下面两者输出结果的不同:
-- 用来选取product type列为衣服的记录的SELECT语句
SELECT product_name, product_type
FROM product
WHERE product_type = '衣服';
-- 也可以选取出不是查询条件的列(条件列与输出列不同)
SELECT product_name
FROM product
WHERE product_type = '衣服';
1.3 相关法则
星号()代表全部列的意思。
SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。
设定汉语别名时需要使用双引号(“)括起来。
在SELECT语句中使用DISTINCT可以删除重复行。
注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释”-- “和多行注释两种”/ */"。
-- 想要查询出全部列时,可以使用代表所有列的星号(*)。
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.4 聚合函数
SQL中用于汇总的函数叫做聚合函数。以下五个是最常用的聚合函数:
SUM:计算表中某数值列中的合计值
AVG:计算表中某数值列中的平均值
MAX:计算表中任意列中数据的最大值,包括文本类型和数字类型
MIN:计算表中任意列中数据的最小值,包括文本类型和数字类型
COUNT:计算表中的记录条数(行数)
-- 计算销售单价和进货单价的合计值
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;
1.4.1使用 DISTINCT 进行删除重复值的聚合运算
当对整表进行聚合运算时,表中可能存在多行相同的数据,比如商品类型(product_type 列)。
在某些场景下,就不能直接使用聚合函数进行聚合运算了,必须搭配 DISTINCT 函数使用。
比如:要计算总共有几种咖啡类型在售,该怎么计算呢?
如前所述,DISTINCT 函数用于删除重复数据,应用 COUNT 聚合函数之前,加上 DISTINCT 关键字就可以实现需求。
SELECT COUNT(DISTINCT product_type)
FROM product
1.4.2聚合函数应用法则
COUNT 聚合函数运算结果与参数有关,COUNT(*) / COUNT(1) 得到包含 NULL 值的所有行,COUNT(<列名>) 得到不包含 NULL 值的所有行。
聚合函数不处理包含 NULL 值的行,但是 COUNT(*) 除外。
MAX / MIN 函数适用于文本类型和数字类型的列,而 SUM / AVG 函数仅适用于数字类型的列。
在聚合函数的参数中使用 DISTINCT 关键字,可以得到删除重复值的聚合结果。
参考资料
https://linklearner.com/datawhale-homepage/#/learn/detail/70