您的位置:首页 > 房产 > 建筑 > MySQL周内训参照3、简单查询与多表联合复杂查询

MySQL周内训参照3、简单查询与多表联合复杂查询

2024/12/22 13:56:02 来源:https://blog.csdn.net/wangzihuan_5/article/details/140021882  浏览:    关键词:MySQL周内训参照3、简单查询与多表联合复杂查询

 基础查询

1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列

SELECT user_id  AS '编号', phone AS '电话' FROM user;

2. 根据订购表进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。使用explain测试给出的查询语句,需要显示走了索引查询。

CREATE INDEX idx_order_id ON `order`(order_id);

 

不能用模糊查询的符号作为查询的开头,否则不走索引。

EXPLAIN SELECT * FROM `order` WHERE order_id LIKE '小%';

 

可以看到已经走了索引了。

3.统计用户订单信息,查询所有用户的下单数量,并进行倒序排列。使用聚合函数查询处所有用户的订单数量,倒序排列结果

SELECT user_id, COUNT(order_id) AS '订购数量'
FROM `order`
GROUP BY user_id
ORDER BY `订购数量` DESC;

复杂查询 

 1.查询用户的基本信息,订单信息。正确显示用户信息,正确显示订单信息,正确进行多表联合查询

    u.user_id, -- 选择用户的用户IDu.username, -- 选择用户名u.age,-- 选择年龄u.sex,-- 选择性别u.phone, -- 选择电话u.email, -- 选择邮箱uo.quantity,uo.book_id
FROM user u -- 从用户表中选择数据
JOIN `order` uo ON u.user_id = uo.user_id; -- 使用JOIN连接用户表和订单表,连接条件是两个表中的user_id相同

 


2.查看订单中下单最多的书籍。正确使用聚合函数,正确使用子查询,正确显示结果 

SELECT pt.book_id -- 选择书籍名称
FROM `books` p -- 从书籍表中选择数据
JOIN `order` pt ON p.book_id = pt.book_id -- 使用JOIN连接书籍表和订单表,连接条件是书籍表中的book_id与订单表中的book_id相同
JOIN (SELECT book_id, -- 子查询中选择书籍编号IDCOUNT(order_id) AS order_count -- 子查询中对每个书籍ID的订单ID进行计数,并命名为order_countFROM `order` -- 子查询从订单表中选择数据GROUP BY book_id -- 按书籍ID进行分组ORDER BY order_count DESC -- 按订单数量降序排列LIMIT 3) oi ON p.book_id = oi.book_id; -- 子查询的结果作为临时表oi,与产品表通过book_id进行连接

 

3.查询 订单中购买书籍最多的数量,和库存中剩余书籍总数量

SELECT   o.order_id, -- 选择订单ID  o.quantity, -- 选择订单数量  uo.stock_qty -- 选择书籍库存  
FROM   orders o  -- 从订单表中选择数据  
JOIN   (  SELECT   order_id, -- 子查询中选择订单ID  SUM(quantity) AS total_quantity -- 子查询中对每个订单的商品数量进行求和,并命名为total_quantity  FROM   orders -- 子查询从订单表中选择数据  GROUP BY   order_id -- 按订单ID进行分组(如果您想按用户分组,应使用user_id)  ORDER BY   total_quantity DESC -- 按总订单数量降序排列  LIMIT 1 -- 只选择总订单数量最多的那个订单  ) o_max ON o.order_id = o_max.order_id -- 子查询的结果作为临时表o_max,与订单表通过order_id进行连接  
JOIN   stock uo ON uo.stock_id = o.stock_id; -- 假设库存表有一个stock_id字段与订单表的stock_id字段关联

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com