《Mysql数据库应用》 第2版 郭文明 实验2 数据查询操作核心操作与思路解析

【实验2.1】字段查询

(1)查询商品名称为"挡风玻璃"的商品信息。

(2)查询ID为1的订单。

1.查询用户ID为1的订单:

2.查询订单ID为1的订单:

【实验2.2】多条件查询

查询所有促销的价格小于1000的商品信息。

【实验2.3】DISTINCT

(1)查询所有对商品ID为1的商品发表过评论的用户ID。

(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。

【实验2.4】ORDER BY

(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。

(2)查询今年新增的所有会员,结果按照用户名字排序。

【实验2.5】GROUP BY

(1)查询每个用户的消费总金额(所有订单)。

注:由于order表名与关键字order冲突,所以要用``框起来(ESC下面那个键)。

(2)查询类别价格一样的各种商品数量总和。

【实验2.6】COUNT()

(1)查询类别的数量。

(2)查询汽车用品网上商城的每天的接单数。

【实验2.7】 SUM()

查询该商城每天的销售额。

【实验 2.8 AVG()

(1)查询所有订单的平均销售金额。

【实验 2.9 MAX()

(1)查询所有商品中的数量最大者。

(2)查询所有用户按字母排序中名字最靠前者。

【实验 2.10 MIN()

(1)查询所有商品中价格最低者。

【实验 2.11 】内连接查询

(1)查询所有订单的发出者名字。

(2)查询每个用户购物车中的商品名称。

【实验 2.12 】外连接查询

(1)查询列出所有用户ID,以及他们的评论,如果有的话。(left outer join)

(2)查询列出所有用户ID,以及他们的评论,如果有的话。(right outer join)

【实验 2.13 】复合条件连接查询

(1)查询用户ID为1的客户的订单信息和客户名。

(2)查询每个用户的购物车中的商品价格,并且按照价格顺序排列。

【实验 2.14 IN

(1)查询订购商品ID为1的订单ID,并根据订单ID查询发出此订单的用户ID。

(2)查询订购商品ID为1的订单ID,并根据订单ID查询未发出此订单的用户ID。

【实验 2.15 】比较运算符

(1)查询今年新增会员的订单,并且列出所有订单总价小于100的订单ID。

(2)查询所有订单商品数量总和小于100的商品ID,并将不在此商品所在类别的其他类别的ID列出来。

【实验 2.16 EXISTS

(1)查询表中是否存在用户ID为100的用户,如果存在,列出此用户的信息。

(2)查询表中是否存在类别ID为100的商品类别,如果存在,列出此类别中商品价格小于5的商品ID。

【实验 2.17 ANY

查询所有商品表中价格比订单表中商品ID对应的价格大的商品ID。

【实验 2.18 ALL

查询所有商品表中价格比订单表中所有商品ID对应的价格大的商品ID。

【实验 2.19 】集合查询

(1)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNION连接查询结果。

(2)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNION ALL连接查询结果。


以下为代码:

sql 复制代码
【实验2.1】字段查询
(1)查询商品名称为"挡风玻璃"的商品信息。

select * from autoparts where apname="挡风玻璃";

(2)查询ID为1的订单。

1.查询用户ID为1的订单:

select * from shopping.order where client_cid=1;

2.查询订单ID为1的订单:

select * from shopping.order where oid=1;

【实验2.2】多条件查询
查询所有促销的价格小于1000的商品信息。

select * from autoparts where is_sale=1 and price<1000;

【实验2.3】DISTINCT
(1)查询所有对商品ID为1的商品发表过评论的用户ID。

select distinct client_cid from comment where autoparts_apid=1;

(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。

select distinct year(createtime) from client;

【实验2.4】ORDER BY
(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。

select * from autoparts where secondclass_scid=1 order by apid desc;

(2)查询今年新增的所有会员,结果按照用户名字排序。

select * from client where year(createtime)=year(now()) order by cname;

【实验2.5】GROUP BY
(1)查询每个用户的消费总金额(所有订单)。

select client_cid,sum(total_price) from`order`group by client_cid;

注:由于order表名与关键字order冲突,所以要用``框起来(ESC下面那个键)。

(2)查询类别价格一样的各种商品数量总和。

select secondclass_scid,sum(hot_product) from autoparts group by secondcalss_scid,price;

【实验2.6】COUNT()
(1)查询类别的数量。

select count(category_id) from category;

(2)查询汽车用品网上商城的每天的接单数。

select order_date,count(oid) from `order` group by order_date;

【实验2.7】 SUM()
查询该商城每天的销售额。

select order_date,sum(total_price) from `order` group by order_date;

【实验2.8】AVG()
(1)查询所有订单的平均销售金额。

select avg(total_price) from `order`;

【实验2.9】MAX()
(1)查询所有商品中的数量最大者。

select max(hot_product) from autoparts;

(2)查询所有用户按字母排序中名字最靠前者。

select max(cname) from client;

【实验2.10】MIN()
(1)查询所有商品中价格最低者。

select min(price) from autoparts;

【实验2.11】内连接查询
(1)查询所有订单的发出者名字。

select oid,cname from `order` join client on(client.cid=`order`.client_cid);

(2)查询每个用户购物车中的商品名称。

select client_cid,apname from shoppingcart join autoparts on(autoparts.apid=shoppingcart.autoparts_apid);

【实验2.12】外连接查询
(1)查询列出所有用户ID,以及他们的评论,如果有的话。(left outer join)

select cid,comments from client left outer join comment on(client.cid=comment.client_cid);

(2)查询列出所有用户ID,以及他们的评论,如果有的话。(right outer join)

select cid,comments from comment right outer join client on(client.cid=comment.client_cid);

【实验2.13】复合条件连接查询
(1)查询用户ID为1的客户的订单信息和客户名。

select cname `order`.* from `order` join client on(`order`.client_cid=client.cid and cid=1);

(2)查询每个用户的购物车中的商品价格,并且按照价格顺序排列。

select client_cid,price from shoppingcart join autoparts on(shoppingcart.autoparts_apid=autoparts.apid) order by price;

【实验2.14】 IN
(1)查询订购商品ID为1的订单ID,并根据订单ID查询发出此订单的用户ID。

select oid,client_cid from `order` where oid in(select order_oid from order_has_autoparts where autoparts_apid=1);

(2)查询订购商品ID为1的订单ID,并根据订单ID查询未发出此订单的用户ID。

select oid,client_cid from `order` where oid not in(select order_oid fromorder_has_autoparts where autoparts_apid=1)

【实验2.15】比较运算符
(1)查询今年新增会员的订单,并且列出所有订单总价小于100的订单ID。

select oid from `order` where clinet_cid in(select cid from client where year(createtime)=year(now())) and total_price<100;

(2)查询所有订单商品数量总和小于100的商品ID,并将不在此商品所在类别的其他类别的ID列出来。

select distinct secondclass_scid from autoparts where apid notin(select autoparts_apid from order_has_autoparts group by autoparts_apid having sum(number)<100);

【实验2.16】EXISTS
(1)查询表中是否存在用户ID为100的用户,如果存在,列出此用户的信息。

select * from client where exists(select cid from client where cid=100) and cid=100;

(2)查询表中是否存在类别ID为100的商品类别,如果存在,列出此类别中商品价格小于5的商品ID。

select apid from autoparts where exists(select * from autoparts where secondclass_scid=100) and price<5;

【实验2.17】ANY
查询所有商品表中价格比订单表中商品ID对应的价格大的商品ID。

select apid from autoparts where price >any(select total_price from `order`);

【实验2.18】ALL
查询所有商品表中价格比订单表中所有商品ID对应的价格大的商品ID。

select apid from autoparts where price >all(select total_price from `order`);

【实验2.19】集合查询
(1)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNION连接查询结果。

select * from autoparts where price<5 unionselect * from autoparts where secondclass_scid=1 or secondclass_scid=2;

(2)查询所有价格小于5的商品,查询类别ID为1和2的所有商品,使用UNION ALL连接查询结果。

select * from autoparts where price<5 unionallselect * from autoparts where secondclass_scid=1 or secondclass_scid=2;
相关推荐
霖霖总总2 小时前
[小技巧33]MySQL 事务持久化的一致性保障:binlog 与 redo log 的两阶段提交机制解析
数据库·mysql
九章-2 小时前
2026国产向量数据库选型新趋势:融合架构如何支撑AI与信创双轮驱动
数据库·向量数据库
三不原则3 小时前
故障案例:数据库慢查询导致交易延迟,AIOps 如何自动定位?
运维·数据库
Elieal3 小时前
MybatisPlus难懂点
数据库·mybatis
一只专注api接口开发的技术猿3 小时前
微服务架构下集成淘宝商品 API 的实践与思考
java·大数据·开发语言·数据库·微服务·架构
AC赳赳老秦3 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
明洞日记3 小时前
【软考每日一练009】计算机系统性能评价:基准程序分类与 TPC 实战案例详解
大数据·数据库
Hoxy.R3 小时前
海量数据库安装部署初体验
服务器·网络·数据库
癫狂的兔子3 小时前
【Python】【爬虫】爬取虎扑网NBA排行数据
数据库·爬虫·python
你才是臭弟弟4 小时前
时序数据库(TDengine TSDB)基本SQL使用
sql·时序数据库·tdengine