Task02-天池龙珠计划SQL训练营

该文介绍了SQL的基础查询操作,包括使用SELECT选取数据、应用算术和比较运算符、逻辑运算符,以及聚合查询和分组查询。还详细讲解了如何使用WHERE和HAVING子句过滤条件,以及ORDERBY进行结果排序。文章通过一系列练习题帮助读者巩固所学知识。
摘要由CSDN通过智能技术生成

学习目标

  • SQL基础查询与排序

学习内容

一、SELECT语句基础
1.1 从表中选取数据
1.2从表中选取符合条件的数据
1.3 相关法则


二、算术运算符和比较运算符
2.1 算术运算符
2.2 比较运算符
2.3 常用法则


三、逻辑运算符
3.1 NOT运算符
3.2 AND运算符和OR运算符
3.3 通过括号优先处理
3.4 真值表
3.5 含有NULL时的真值


四、对表进行聚合查询
4.1 聚合函数
4.2 使用聚合函数删除重复值
4.3 常用法则


五、对表进行分组
5.1 GROUP BY语句
5.2 聚合键中包含NULL时
5.3 GROUP BY书写位置
5.4 在WHERE子句中使用GROUP BY
5.5 常见错误


六、为聚合结果指定条件
6.1 用HAVING得到特定分组
6.2 HAVING特点


七、对查询结果进行排序
7.1 ORDER BY
7.2 ORDER BY中列名可使用别名


学习产出

  • 练习题-Part01

  • 练习题一

编写一条SQL语句,从product(商品)表中选取出“登记日期(regist在2009年4月28日之后”的商品,查询结果要包含product_name和regist_date两列。

SELECT
	product_name,
	regist_date 
FROM
	product 
WHERE
	regist_date > '2009-04-28';

  • 练习题二

请说出对product 表执行如下3条SELECT语句时的返回结果。

product表:

 

SELECT *
  FROM product
 WHERE purchase_price = NULL;

SELECT *
  FROM product
 WHERE purchase_price <> NULL;

SELECT *
  FROM product
 WHERE product_name > NULL;

运行代码后我们发现全部为空值,这是因为MySQL中不能用“ = NULL ”,而是要用“ IS NULL ”。

 将上述代码进行修改,因为NULL值无法用" > ",  " < "符号比较,部分③的代码没有实际意义。

  • 练习题三

代码清单2-22(2-2节)中的SELECT语句能够从product表中取出“销售单价(saleprice)比进货单价(purchase price)高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。

 语句①:

SELECT
	product_name,
	sale_price,
	purchase_price 
FROM
	product 
WHERE
	sale_price >= purchase_price + 500;

语句②:

SELECT
	product_name,
	sale_price,
	purchase_price 
FROM
	product 
WHERE
	sale_price - 500 >= purchase_price;

 运行结果:

  • 练习题四

请写出一条SELECT语句,从product表中选取出满足“销售单价打九折之后利润高于100日元的办公用品和厨房用具”条件的记录。查询结果要包括product_name列、product_type列以及销售单价打九折之后的利润(别名设定为profit)。

提示:销售单价打九折,可以通过saleprice列的值乘以0.9获得,利润可以通过该值减去purchase_price列的值获得。

SELECT
	product_name,
	product_type,
	sale_price * 0.9 - purchase_price AS profit 
FROM
	product 
WHERE
	sale_price * 0.9 - purchase_price > 100 
	AND ( product_type = '办公用品' OR product_type = '厨房用具' );

 

  • 练习题-Part02

  • 练习题一

请指出下述SELECT语句中所有的语法错误。

SELECT product_id, SUM(product_name)
--本SELECT语句中存在错误。
  FROM product 
 GROUP BY product_type 
 WHERE regist_date > '2009-09-01';

" GROUP BY "不应该在" WHERE "前面,并且" GROUP BY "和" SELECT "里面的字段不匹配,另外" product_name "字段无法求值。

  • 练习题二

请编写一条SELECT语句,求出销售单价(sale_price列)合计值大于进货单价(purchase_price列)合计值1.5倍的商品种类。执行结果如下所示。

product_type | sum  | sum 
-------------+------+------
衣服         | 5000 | 3300
办公用品      |  600 | 320
SELECT
	product_type,
	sum( sale_price ) AS "售价",
	sum( purchase_price ) AS "进价" 
FROM
	product 
GROUP BY
	product_type 
HAVING
	sum( sale_price ) > sum( purchase_price )* 1.5;
  • 练习题三

此前我们曾经使用SELECT语句选取出了product(商品)表中的全部记录。当时我们使用了ORDERBY子句来指定排列顺序,但现在已经无法记起当时如何指定的了。请根据下列执行结果,思考ORDERBY子句的内容。

图片

SELECT
	* 
FROM
	product 
ORDER BY
	regist_date DESC,
	sale_price;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值