MySQL是一款流行的开源数据库。它也是一个关系型数据库管理系统,本章就来简单的对MySQL查询进行一个小练习。
往期内容回顾
python教程】保姆版教使用pymysql模块连接MySQL实现增删改查
python+requests+BeautifulSoup实现对数据保存到mysql数据库
selenium自动化测试实战案例哔哩哔哩信息至Excel
舍友打一把游戏的时间,我实现了一个selenium自动化测试并把数据保存到MySQL
⏰
题目:从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。
用户信息表:customers
- 姓名(cust_name)
- 客户id(cust_id)
如: 有表Customers,cust_id代表客户id,cust_name代表客户姓名。
根据示例,你的查询应返回以下结果:
DROP TABLE IF EXISTS `Customers`;
# 创建表
CREATE TABLE IF NOT EXISTS `Customers`(
cust_id VARCHAR(255) NOT NULL COMMENT '客户id',
cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
# 添加信息
INSERT `Customers` VALUES ('a1','andy'),('a2','ben'),('a3','tony'),('a4','tom'),('a5','an'),('a6','lee'),('a7','hex');
⏰
题目:编写 SQL 语句,从 Orders 表中检索顾客 ID(cust_id)和订单号(order_num),并先按顾客 ID 对结果进行排序,再按订单日期倒序排列。
信息表:orders
- 顾客 ID(cust_id)
- 订单号(order_num)
- 订单日期(order_date)
如:
第一行表示:cust_id为andy的用户的订单号是aaaa,订单日期为2021-01-01 00:00:00
根据示例,你的查询应返回以下结果:
DROP TABLE IF EXISTS `Orders`;
# 建表
CREATE TABLE IF NOT EXISTS `Orders` (
`cust_id` varchar(255) NOT NULL COMMENT '顾客 ID',
`order_num` varchar(255) NOT NULL COMMENT '订单号',
`order_date` timestamp NOT NULL COMMENT '订单时间'
);
# 添加数据
INSERT INTO `Orders` VALUES ('andy','aaaa','2021-01-01 00:00:00'),
('andy','bbbb','2021-01-01 12:00:00'),
('bob','cccc','2021-01-10 12:00:00'),
('dick','dddd','2021-01-11 00:00:00');
⏰
题目:编写 SQL 语句,显示 OrderItems 表中的数量(quantity)和价格(item_price),并按数量由多到少、价格由高到低排序。
示例:orderitems表
- 数量(quantity)
- 价格(item_price)
DROP TABLE IF EXISTS `OrderItems`;
# 创建表
CREATE TABLE IF NOT EXISTS `OrderItems` (
`quantity` INT(64) NOT NULL COMMENT '数量',
`item_price` INT(64) NOT NULL COMMENT '订单价格'
);
# 添加数据
INSERT INTO `OrderItems` VALUES (1,100),
(10,1003),
(2,500);
⏰
题目:从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9.49 美元的产品。
示例:产品表products
DROP TABLE IF EXISTS `Products`;
# 创建表
CREATE TABLE IF NOT EXISTS `Products` (
`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',
`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',
`prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
# 添加数据
INSERT INTO `Products` VALUES ('a0018','sockets',9.49),
('a0019','iphone13',600),
('b0019','gucci t-shirts',1000);
⏰
题目:从 items 表中检索出所有不同且不重复的订单号(order_num),其中每个订单都要包含 100 个或更多的产品。
示例:items表
- 订单号order_num
- quantity产品数量
DROP TABLE IF EXISTS `Items`;
# 创建表
CREATE TABLE IF NOT EXISTS `Items`(
order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
quantity VARCHAR(255) NOT NULL COMMENT '商品数量'
);
# 添加数据
INSERT `Items` VALUES ('a1','105'),('a2','1100'),('a2','200'),('a4','1121'),('a5','10'),('a2','19'),('a7','5')
习题一答案:
select cust_name from Customers order by cust_name desc;
习题二答案:
SELECT
cust_id,
order_num
FROM
Orders
ORDER BY
cust_id,
order_date DESC;
习题三答案:
SELECT
quantity,
item_price
FROM
OrderItems
ORDER BY
quantity DESC,
item_price DESC;
习题四答案:
SELECT
prod_id,
prod_name
FROM
Products
WHERE
prod_price = 9.49;
习题五答案:
select order_num
from OrderItems
group by order_num
having max(quantity) >= 100