SQL 50 题大揭秘:数据库小白变身高手进阶指南
2023-12-23 01:38:11
征服 SQL 世界:深入解析 SQL 50 题
身处数据库世界的你,是否时常为复杂的 SQL 查询和棘手的数据库设计而苦恼?别担心,我们为你带来了救星——SQL 50 题。这是一份涵盖 SQL 方方面面的综合指南,让你轻松掌握 SQL 编程技巧,成为一名出色的数据库工程师。
第一部分:建库建表
1. 创建一个名为 "customers" 的数据库,并包含 "id"、"name"、"email" 和 "phone" 四个字段。
CREATE DATABASE customers;
USE customers;
CREATE TABLE customers (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
2. 在 "customers" 数据库中创建一个名为 "orders" 的表,并包含 "id"、"customer_id"、"product_id"、"quantity" 和 "price" 五个字段。
CREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT,
customer_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (customer_id) REFERENCES customers(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
3. 在 "products" 数据库中创建一个名为 "products" 的表,并包含 "id"、"name"、"description" 和 "price" 四个字段。
CREATE TABLE products (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (id)
);
第二部分:插入数据
4. 向 "customers" 表中插入以下数据:
INSERT INTO customers (name, email, phone) VALUES
('John Doe', 'john.doe@example.com', '0123456789'),
('Jane Smith', 'jane.smith@example.com', '9876543210'),
('Michael Jones', 'michael.jones@example.com', '1234567890');
5. 向 "orders" 表中插入以下数据:
INSERT INTO orders (customer_id, product_id, quantity, price) VALUES
(1, 1, 2, 100),
(2, 2, 1, 50),
(3, 3, 3, 150);
6. 向 "products" 表中插入以下数据:
INSERT INTO products (name, description, price) VALUES
('iPhone', 'The latest and greatest smartphone from Apple.', 1000),
('MacBook Pro', 'The most powerful laptop from Apple.', 1500),
('iPad Pro', 'The most advanced tablet from Apple.', 800);
第三部分:SQL 50 题
现在,数据库已填充好数据,让我们深入探索 SQL 50 题,解答 SQL 中最棘手的难题。
7. 查询 "customers" 表中的所有数据。
SELECT * FROM customers;
8. 查询 "orders" 表中的所有数据。
SELECT * FROM orders;
9. 查询 "products" 表中的所有数据。
SELECT * FROM products;
10. 查询 "customers" 表中名为 "John Doe" 的客户的详细信息。
SELECT * FROM customers WHERE name = 'John Doe';
11. 查询 "orders" 表中所有购买了 "iPhone" 的订单。
SELECT * FROM orders WHERE product_id = 1;
12. 查询 "products" 表中最昂贵的產品。
SELECT * FROM products ORDER BY price DESC LIMIT 1;
13. 查询 "customers" 表中所有来自 "California" 州的客户。
SELECT * FROM customers WHERE address LIKE '%California%';
14. 查询 "orders" 表中所有总金额超过 1000 元的订单。
SELECT * FROM orders WHERE price > 1000;
15. 查询 "products" 表中最畅销的產品。
SELECT product_id, SUM(quantity) AS total_sold FROM orders GROUP BY product_id ORDER BY total_sold DESC LIMIT 1;
16. 更新 "customers" 表中名为 "John Doe" 的客户的电话号码。
UPDATE customers SET phone = '9999999999' WHERE name = 'John Doe';
17. 更新 "orders" 表中所有购买了 "iPhone" 的订单的购买数量。
UPDATE orders SET quantity = quantity + 1 WHERE product_id = 1;
18. 更新 "products" 表中最畅销的產品的价格。
UPDATE products SET price = price * 1.10 WHERE product_id IN (SELECT product_id FROM orders GROUP BY product_id ORDER BY SUM(quantity) DESC LIMIT 1);
19. 删除 "customers" 表中名为 "Michael Jones" 的客户。
DELETE FROM customers WHERE name = 'Michael Jones';
20. 删除 "orders" 表中所有购买了 "MacBook Pro" 的订单。
DELETE FROM orders WHERE product_id = 2;
21. 删除 "products" 表中最昂贵的產品。
DELETE FROM products WHERE product_id IN (SELECT product_id FROM products ORDER BY price DESC LIMIT 1);
结论
通过完成这 50 道 SQL 谜题,你将成为一名 SQL 大师,能够轻松解决任何数据库难题。无论你是刚踏入 SQL 领域的新手,还是经验丰富的数据库专业人士,这份指南都将为你提供必要的知识和技能,让你在数据库的世界中脱颖而出。
常见问题解答
1. 我可以找到更多像这样的 SQL 问题吗?
是的,网上还有许多资源提供 SQL 问题和练习。
2. 我如何提升我的 SQL 技能?
除了练习这些问题外,你还可以在实际项目中应用 SQL,并通过参加在线课程或研讨会来扩展你的知识。
3. SQL 50 题是否涵盖了所有 SQL 方面?
虽然这 50 道问题涵盖了 SQL 的许多基本方面,但它并不是详尽无遗的。还有其他更高级的 SQL 概念,例如存储过程和触发器。
4. 我应该按照什么顺序完成这些问题?
这些问题按照渐进的难度排列,因此建议你按照所给的顺序完成它们。
5. 如果我遇到困难的问题,该怎么办?
不要害怕寻求帮助!在线论坛、教程和书籍可以提供有价值的指导。