SQL基础练习题
- 创建一个名为 “products” 的表,包含 id(自增主键)、name、price 和 quantity 字段。
- 插入一条 id 为 1,name 为 “Apple”,price 为 2.5,quantity 为 10 的记录到 “products” 表中。
- 查询 “products” 表中所有的记录。
- 更新 id 为 1 的记录,将 price 改为 2.75。
- 删除 id 为 1 的记录。
- 插入三条新的产品记录,要求至少包含两个不同的产品名称,并确保至少有一个产品的价格小于 10,至少一个以 “A” 开头的产品。
- 查询 “products” 表中所有价格大于等于 10 的产品记录。
- 查询 “products” 表中所有名称以 “A” 开头的产品记录。
- 查询 “products” 表中所有价格大于 10 且名称不为 “Apple” 的产品记录。
- 查询 “products” 表中按照价格从小到大排列的所有产品记录。
- 查询 “products” 表中记录的总数。
- 查询 “products” 表中价格最高的产品记录。
- 查询 “products” 表中价格最低的产品记录。
- 查询 “products” 表中名称为 “Mango” 的记录是否存在。
- 查询 “products” 表中价格在 5 到 15 之间的产品记录。
- 查询 “products” 表中所有名称包含 “red” 的记录。
- 查询 “products” 表中所有价格在 1 到 5 之间或者在 20 到 25 之间的记录。
- 查询 “products” 表中 price 字段的平均值。
- 查询 “products” 表中价格的总和。
- 查询 “products” 表中价格大于等于 5 的产品的平均数量。
- 查询 “products” 表中每个价格对应的产品数量。
- 更新所有数量小于 5 的记录,将其数量改为 5。
- 删除所有价格大于等于 15 的产品记录。
- 将 “products” 表中所有产品的价格减去 1。
- 查询 “products” 表中按照价格分组,并统计每个价格的产品数量。
- 查询 “products” 表中按照名称分组,并统计每个名称的产品数量。
- 查询 “products” 表中价格大于等于 10 的产品记录,按照价格降序排列,只返回前 5 条记录。
- 查询 “products” 表中价格在 5 到 15 之间的产品记录,按照价格升序排列,将结果分页,每页显示 10 条记录,返回第三页的数据。
- 查询 “products” 表中第二贵的产品记录。
参考答案
1.创建表:
# 创建一个库或使用创建好的库
# CREATE DATABASE test;
USE test;
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT "编号",
name VARCHAR(50) COMMENT "商品名",
price DECIMAL(10,2) COMMENT "价格",
quantity INT COMMENT "数量"
);
2.插入数据:
INSERT INTO products (name, price, quantity)
VALUES ('Apple', 2.5, 10);
3.查询所有数据:
SELECT * FROM products;
4.更新记录:
UPDATE products SET price = 2.75 WHERE id = 1;
5.删除记录:
DELETE FROM products WHERE id = 1;
6.插入新数据:
INSERT INTO products (name, price, quantity)
VALUES
('Banana', 1.5, 20),
('Orange', 1.2, 15),
('Apple Pie', 12.99, 5);
7.查询价格大于等于 10 的产品记录:
SELECT * FROM products WHERE price >= 10;
8.查询名称以 “A” 开头的产品记录:
SELECT * FROM products WHERE name LIKE 'A%';
9.查询价格大于 10 且名称不为 “Apple” 的产品记录:
SELECT * FROM products WHERE price > 10 AND name <> 'Apple';
10.按价格从小到大排列的所有产品记录:
SELECT * FROM products ORDER BY price ASC;
11.查询记录总数:
SELECT COUNT(*) FROM products;
12.查询价格最高的产品记录:
SELECT * FROM products ORDER BY price DESC LIMIT 1;
13.查询价格最低的产品记录:
SELECT * FROM products ORDER BY price ASC LIMIT 1;
14.查询名称为 “Mango” 的记录是否存在:
SELECT EXISTS(SELECT * FROM products WHERE name = 'Mango');
15.查询价格在 5 到 15 之间的产品记录:
SELECT * FROM products WHERE price BETWEEN 5 AND 15;
16.查询所有名称包含 “red” 的记录:
SELECT * FROM products WHERE name LIKE '%red%';
17.查询价格在 1 到 5 之间或者在 20 到 25 之间的记录:
SELECT * FROM products WHERE price BETWEEN 1 AND 5 OR price BETWEEN 20 AND 25;
18.查询 price 字段的平均值:
SELECT AVG(price) FROM products;
19.查询价格的总和:
SELECT SUM(price) FROM products;
20.查询价格大于等于 5 的产品的平均数量:
SELECT AVG(quantity) FROM products WHERE price >= 5;
21.查询每个价格对应的产品数量:
SELECT price, COUNT(*) FROM products GROUP BY price;
22.更新数量小于 5 的记录:
UPDATE products SET quantity = 5 WHERE quantity < 5;
23.删除价格大于等于 15 的产品记录:
DELETE FROM products WHERE price >= 15;
24.所有产品的价格减去 1:
UPDATE products SET price = price - 1;
25.查询按价格分组,并统计每个价格的产品数量:
SELECT price, COUNT(*) FROM products GROUP BY price;
26.查询按名称分组,并统计每个名称的产品数量:
SELECT name, COUNT(*) FROM products GROUP BY name;
27.查询价格大于等于 10 的产品记录,并按价格降序排列返回前 5 条记录:
SELECT * FROM products WHERE price >= 10 ORDER BY price DESC LIMIT 5;
28.查询价格在 5 到 15 之间的产品记录,按照价格升序排列,将结果分页,每页显示 10 条记录,返回第三页的数据:
SELECT * FROM products WHERE price BETWEEN 5 AND 15 ORDER BY price ASC LIMIT 20, 10;
29.查询第二贵的产品记录:
SELECT * FROM products ORDER BY price DESC LIMIT 1, 1;