👨💻 无论你是初学 MySQL 还是准备深入企业开发,掌握 SQL 的五大分类及其典型用法,是数据库操作的第一步。
本文将通过 五大类型 + 丰富实战案例 + 可视化表格图,帮助你全面掌握 SQL 的核心用法。
📖 SQL 五大分类简介
🧱 一、DDL:定义数据库结构
🛠 常用命令:
CREATE, ALTER, DROP, TRUNCATE
📌 实战案例
✅ 创建用户表
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
✅ 添加字段 + 设置默认值
ALTER TABLE users ADD is_active TINYINT(1) DEFAULT 1;
✅ 创建带外键的订单表
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
order_amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
✍️ 二、DML:操作表中数据
🛠 常用命令:
INSERT, UPDATE, DELETE
📌 实战案例
✅ 插入多条数据
INSERT INTO users (username, email)
VALUES ('alice', 'alice@example.com'),
('bob', 'bob@example.com');
✅ 更新订单金额
UPDATE orders
SET order_amount = order_amount * 1.1
✅ 删除用户相关订单
DELETE FROM orders
WHERE user_id IN (SELECT user_id FROM users WHERE username = 'bob');
🔍 三、DQL:查询数据
🛠 常用命令:
SELECT
📌 实战案例
✅ 查询所有用户信息
SELECT * FROM users;
✅ 聚合查询:每个用户消费总额
SELECT u.username, SUM(o.order_amount) AS total_spent
FROM users u
JOIN orders o ON u.user_id = o.user_id
GROUP BY u.user_id;
✅ 分页查询 + 排序
SELECT * FROM orders
LIMIT 10 OFFSET 0;
🛡 四、DCL:权限控制
🛠 常用命令:
GRANT, REVOKE
📌 实战案例
✅ 创建只读用户
CREATE USER 'readonly'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON mydb.* TO 'readonly'@'%';
权限修改完成后,执行 FLUSH PRIVILEGES; 让其立即生效。
✅ 撤销权限
REVOKE INSERT ON mydb.* FROM 'readonly'@'%';
权限修改完成后,执行 FLUSH PRIVILEGES; 让其立即生效。
🔁 五、TCL:事务控制(关键)
🛠 常用命令:
START TRANSACTION, COMMIT, ROLLBACK
📌 实战案例
✅ 用户转账操作
📐 第一步:表结构设计
CREATE TABLE accounts (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
balance DECIMAL(10,2) NOT NULL DEFAULT 0.00
);
🔧 第二步:初始化测试数据
INSERT INTO accounts (user_id, username, balance)
VALUES
(1, 'alice', 5000.00),
(2, 'bob', 3000.00);
🔄 第三步:标准转账事务 SQL(含注释)
-- 1. 开启事务
START TRANSACTION;
-- 2. 检查 A 的余额是否足够
SELECT balance FROM accounts WHERE user_id = 1;
-- 3. 从 A 账户扣除金额
UPDATE accounts
SET balance = balance - 1000
WHERE user_id = 1;
-- 4. 向 B 账户增加金额
UPDATE accounts
SET balance = balance + 1000
WHERE user_id = 2;
-- 5. 提交事务
COMMIT;
--用户转账事务中需要加锁,这是保证数据一致性、避免并发问题的关键步骤。
📚 参考文献 & 官方文档链接:
MySQL 官方文档(最新版)🔗 https://dev.mysql.com/doc/ MySQL 语法官方手册(8.0 英文版)🔗 https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html SQL 数据操作语言(DML)官方文档🔗 https://dev.mysql.com/doc/refman/8.0/en/data-manipulation-statements.html SQL 数据定义语言(DDL)官方文档🔗 https://dev.mysql.com/doc/refman/8.0/en/data-definition-statements.html SQL 权限控制(DCL)官方文档🔗 https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html 事务控制(TCL)与锁机制🔗 https://dev.mysql.com/doc/refman/8.0/en/commit.html 🔗 https://dev.mysql.com/doc/refman/8.0/en/rollback.html MySQL 中文网(国内镜像)🔗 https://www.mysqlzh.com/ 高性能 MySQL(第 3 版)图书📖 作者:Baron Schwartz 等 📘 出版社:O'Reilly Media(可在京东/当当购入) 极客时间:《MySQL 实战 45 讲》(推荐阅读) 🔗 
文章转载自程序员极光,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




