SQL-基础查询与排序

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值