天池SQL训练营(二)—— SQL基础查询与排序

引言

本节主要介绍了SQL查询语句的用法,并介绍了算术运算符和逻辑运算符,其中多个逻辑运算时要注意先后顺序,之后介绍了聚合函数,主要是Count、Sum、Max、Min等,然后介绍了分组操作以及制定分组操作,最后介绍了排序查询。

文本连接

Task02:SQL基础查询与排序-天池龙珠计划SQL训练营

Select语句

SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;

SELECT product_name, product_type FROM `product` 
	 WHERE `product_type` = '衣服';
一些运算符

在这里插入图片描述
在这里插入图片描述
注意: 选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

-- WHERE子句的条件表达式中也可以使用计算表达式
SELECT product_name, sale_price, purchase_price FROM `product` 
	 WHERE `sale_price` - `purchase_price` >= 500;

-- 选取NULL的记录
SELECT product_name, purchase_price FROM `product`
	 WHERE `purchase_price` IS NULL ;
     
-- 选取不为NULL的记录
SELECT product_name, purchase_price FROM `product`
	 WHERE `purchase_price` IS NOT NULL ;
逻辑运算符:与 或 非

在这里插入图片描述
注意: 在使用多个逻辑符号时,注意运算顺序,用括号标记优先运算

-- 通过使用括号让OR运算符先于AND运算符执行
SELECT product_name, product_type, regist_date
  FROM product
 WHERE product_type = '办公用品'
   AND ( regist_date = '2009-09-11'
        OR regist_date = '2009-09-20');

含有NULL时的真值表
在这里插入图片描述

聚合查询

COUNT:计算表中的记录数(行数)
SUM:计算表中数值列中数据的合计值
AVG:计算表中数值列中数据的平均值
MAX:求出表中任意列中数据的最大值
MIN:求出表中任意列中数据的最小值

-- 计算全部数据的行数(包含NULL)
SELECT COUNT(*)
  FROM product;
-- 计算NULL以外数据的行数
SELECT COUNT(purchase_price)
  FROM product;
-- 计算销售单价和进货单价的合计值
SELECT SUM(sale_price), SUM(purchase_price) 
  FROM product;
-- 计算销售单价和进货单价的平均值
SELECT AVG(sale_price), AVG(purchase_price)
  FROM product;
-- MAX和MIN也可用于非数值型数据
SELECT MAX(regist_date), MIN(regist_date)
  FROM product;

使用 DISTINCT 可以获得去除重复值后的数据

SELECT COUNT(DISTINCT product_type)
 FROM product;
分组操作

SELECT <列名1>,<列名2>, <列名3>, ……
FROM <表名>
GROUP BY <列名1>, <列名2>, <列名3>, ……;

SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type;

在这里插入图片描述

GROUP BY书写位置
1.SELECT2. FROM3. WHERE4. GROUP BY
SELECT purchase_price, COUNT(*)
  FROM product
 WHERE product_type = '衣服'
 GROUP BY purchase_price;
注意
  1. 在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)。
  2. 在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
  3. 在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。
Having:用于对分组后的数据再筛选出特定分组

在这里插入图片描述

SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type
HAVING COUNT(*) = 2;
对查询结果进行排序

SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
ORDER BY <排序基准列1>, <排序基准列2>, ……

-- 降序排列
SELECT product_id, product_name, sale_price, purchase_price
  FROM product
 ORDER BY sale_price DESC;
-- 多个排序键
SELECT product_id, product_name, sale_price, purchase_price
  FROM product
 ORDER BY sale_price, product_id;
ORDER BY运行顺序
FROMWHEREGROUP BYHAVINGSELECTORDER BY

注意: 在ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值