SQL 企业实战全流程|全覆盖前置基础 + 核心语法(MySQL8.0 可直接运行)

前言

本文包含数据库基础概念、建库规范、SQL 四大语言,到单表查询、条件筛选、函数、分组、增删改、约束、生产安全规范。


一、我认为的SQL 练习全流程

  1. 创建专用练习数据库:独立隔离,不影响其他环境。
  2. 切换并使用目标数据库:确保操作在正确库内。
  3. 创建业务数据表:按企业规范设计字段、主键、约束、注释。
  4. 插入测试业务数据:真实模拟数据,支持全部语法验证。
  5. 执行实战 SQL 操作 :覆盖阶段 1 + 阶段 2 全部知识点
  6. 核对执行结果:校验字段、逻辑、统计口径、影响行数。
  7. 练习完成后清理环境:先删表 → 再删库,环境归零。

二、第 1 步:创建练习数据库

sql

复制代码
-- 创建练习库(不存在则创建)
CREATE DATABASE IF NOT EXISTS sql_stage1_2;
-- 进入当前库(必须执行)
USE sql_stage1_2;

三、第 2 步:创建业务表(含规范、约束、注释)

sql

复制代码
-- 用户表
CREATE TABLE `user` (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID(主键)',
    username VARCHAR(50) NOT NULL COMMENT '用户名(非空)',
    phone VARCHAR(20) UNIQUE COMMENT '手机号(唯一)',
    register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间(默认当前)',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '1正常 0禁用'
) COMMENT '用户信息表';

-- 订单表
CREATE TABLE orders (
    order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
    user_id INT NOT NULL COMMENT '用户ID',
    order_time DATETIME NOT NULL COMMENT '下单时间',
    total_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',
    pay_status TINYINT NOT NULL DEFAULT 0 COMMENT '0未支付 1已支付',
    refund_status TINYINT NOT NULL DEFAULT 0 COMMENT '0未退款 1已退款'
) COMMENT '订单主表';

-- 商品表
CREATE TABLE product (
    product_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID',
    product_name VARCHAR(100) NOT NULL COMMENT '商品名称',
    price DECIMAL(10,2) NOT NULL COMMENT '售价',
    stock INT NOT NULL DEFAULT 0 COMMENT '库存',
    create_time DATE NOT NULL COMMENT '上架日期'
) COMMENT '商品信息表';

四、第 3 步:插入真实业务数据

sql

复制代码
INSERT INTO `user` (username, phone, register_time, status)
VALUES
('张三','13800138000','2026-01-05 10:20:30',1),
('李四','13800138001','2026-01-06 11:10:20',1),
('王五','13800138002','2026-01-07 09:30:15',1),
('赵六',NULL,'2026-01-08 16:40:10',1),
('陈七','13800138004','2026-01-09 14:20:00',0);

INSERT INTO orders (user_id, order_time, total_amount, pay_status, refund_status)
VALUES
(1,'2026-04-01 10:10:00',1500.00,1,0),
(1,'2026-04-01 16:20:00',800.00,1,0),
(2,'2026-04-01 11:30:00',3200.00,1,0),
(2,'2026-04-02 09:15:00',500.00,0,0),
(3,'2026-04-02 14:20:00',450.00,1,1),
(3,'2026-04-03 10:00:00',2100.00,1,0),
(4,'2026-04-03 15:30:00',990.00,1,0),
(1,'2026-04-05 13:20:00',660.00,1,0);

INSERT INTO product (product_name, price, stock, create_time)
VALUES
('苹果15手机',5999.00,100,'2026-01-01'),
('小米14手机',3499.00,150,'2026-01-02'),
('华为手机壳',49.00,200,'2026-01-03'),
('无线蓝牙耳机',299.00,80,'2026-01-04'),
('安卓快充线',25.00,300,'2026-01-05');

五、第 4 步:实战 SQL

【阶段 1 前置基础认知】实战场景

1. 查看当前数据库(DBA 日常)

场景:确认当前操作库,避免走错库。

sql

复制代码
SELECT DATABASE();

2. 查看表结构(职场必备)

场景:开发 / 测试必用,查看字段、类型、约束。

sql

复制代码
DESC `user`;

3. 查看建表语句(理解三大范式基础)

场景:复盘表设计是否规范。

sql

复制代码
SHOW CREATE TABLE `user`;

4. DDL 操作:修改表注释

场景:规范表说明,方便团队维护。

sql

复制代码
ALTER TABLE `user` COMMENT '用户信息表(阶段1+2练习)';

5. DCL 演示:创建练习用户(企业权限规范)

场景:企业最小权限原则。

sql

复制代码
CREATE USER IF NOT EXISTS 'test_user'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON sql_stage1_2.* TO 'test_user'@'%';
SHOW GRANTS FOR 'test_user'@'%';

6. TCL 事务演示(数据一致性基础)

场景:保证更新要么全成功,要么全回滚。

sql

复制代码
START TRANSACTION;
UPDATE product SET stock = 99 WHERE product_id = 1;
ROLLBACK;

【阶段 2 零基础核心语法】全场景实战

1. SELECT 基础 + 别名 + DISTINCT

场景:运营导出用户姓名、手机号,去重用户 ID。

sql

复制代码
SELECT username AS 姓名, phone AS 手机号 FROM `user`;
SELECT DISTINCT user_id FROM orders;

2. WHERE + IN + BETWEEN

场景:财务查 500--2000 元订单;查指定用户。

sql

复制代码
SELECT * FROM orders WHERE total_amount BETWEEN 500 AND 2000;
SELECT * FROM `user` WHERE id IN (1,2,3);

3. LIKE 模糊查询

场景:运营查所有手机类商品。

sql

复制代码
SELECT * FROM product WHERE product_name LIKE '%手机%';

4. 空值判断 IS NULL / IS NOT NULL

场景:客服找未填手机号的用户。

sql

复制代码
SELECT * FROM `user` WHERE phone IS NULL;

5. ORDER BY 排序 + LIMIT 分页

场景:产品看金额最高前 5 笔订单。

sql

复制代码
SELECT * FROM orders ORDER BY total_amount DESC LIMIT 5;

6. 字符串函数

场景:报表拼接用户名 + 手机号。

sql

复制代码
SELECT CONCAT(username, ' / ', phone) AS 用户信息 FROM `user`;

7. 日期函数

场景:日报提取订单日期、注册年份。

sql

复制代码
SELECT DATE(order_time) AS 订单日期 FROM orders;
SELECT YEAR(register_time) AS 注册年 FROM `user`;

8. 聚合函数 COUNT / SUM / AVG / MAX / MIN

场景:老板看总订单数、GMV、最高单价。

sql

复制代码
SELECT
  COUNT(*) AS 总订单数,
  SUM(total_amount) AS 总销售额,
  MAX(price) AS 最高价
FROM orders
WHERE pay_status = 1;

9. GROUP BY + HAVING

场景:统计每人消费总额,筛选消费 ≥2000 元用户。

sql

复制代码
SELECT
  user_id,
  SUM(total_amount) AS 总消费
FROM orders
GROUP BY user_id
HAVING SUM(total_amount) >= 2000;

10. INSERT 单行 / 多行

场景:运营添加新用户、新商品。

sql

复制代码
INSERT INTO `user` (username, status) VALUES ('周八',1);

11. UPDATE 安全修改

场景:低价商品批量更新库存(必须带 WHERE)。

sql

复制代码
UPDATE product SET stock = 50 WHERE price < 100;

12. DELETE / TRUNCATE

场景:删除测试订单;清空临时表。

sql

复制代码
DELETE FROM orders WHERE order_id = 9;
TRUNCATE TABLE product;

13. 表结构操作(ALTER)

场景:添加邮箱字段、修改库存备注。

sql

复制代码
ALTER TABLE `user` ADD COLUMN email VARCHAR(100);
ALTER TABLE product MODIFY COLUMN stock INT COMMENT '库存不可负数';

14. 六大约束实战

场景:保证手机号唯一、用户 ID 关联有效。

sql

复制代码
ALTER TABLE `user` ADD CONSTRAINT uk_phone UNIQUE (phone);

15. 生产安全规范

  • UPDATE / DELETE 必须加 WHERE
  • 先 SELECT 预览再执行
  • 禁止 SELECT *
  • 优先逻辑删除,不物理删除

六、第 5 步:核对执行结果(企业必备)

  1. 字段与业务需求一致
  2. 筛选条件准确
  3. 统计口径正确
  4. 增删改行数符合预期
  5. 无 WHERE 不执行

七、第 6 步:清理环境(规范收尾)

sql

复制代码
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS product;
DROP TABLE IF EXISTS `user`;
DROP DATABASE IF EXISTS sql_stage1_2;

八、全覆盖知识点清单

阶段 1 前置基础认知

  • SQL / RDBMS 基础理解
  • 表、字段、行、NULL、主键
  • 三大范式、数据完整性
  • 数据库选型理解
  • MySQL 环境 / 客户端使用
  • 四大语言 DDL / DML / DCL / TCL

阶段 2 零基础核心语法

  • SELECT / 别名 / DISTINCT
  • WHERE / IN / BETWEEN
  • LIKE / 模糊查询
  • IS NULL / IS NOT NULL
  • ORDER BY / LIMIT
  • 字符串函数
  • 日期函数
  • 聚合函数
  • GROUP BY / HAVING
  • INSERT / UPDATE / DELETE
  • CREATE / ALTER TABLE
  • 六大约束
  • 生产安全规范
相关推荐
倔强的石头_11 小时前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab1 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence1 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神2 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据2 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡2 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧2 天前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon2 天前
SQL学习指南——视图
数据库·sql
活宝小娜2 天前
mysql详细安装教程
数据库·mysql·adb