MySQL 系统学习 第二阶段 SQL(Structured Query Language)

第二阶段 SQL(Structured Query Language)

本阶段目标

学完这一阶段,你应该能够回答:

  • SQL 是什么?
  • SQL 为什么是标准语言?
  • SQL 有哪几种分类?
  • DDL、DML、DQL、DCL 分别负责什么?
  • 一条 SQL 是如何执行的?(先建立概念)

第一章 什么是 SQL?

SQL 全称:

Structured Query Language

中文:

结构化查询语言

注意:

SQL 不是 MySQL 发明的。

SQL 是一种国际标准语言

就像:

复制代码
复制代码
HTML

CSS

JavaScript

是一种标准一样。

SQL 也是标准。


例如:

你学习 MySQL:

复制代码
复制代码
SELECT * FROM user;

到了 PostgreSQL:

复制代码
复制代码
SELECT * FROM user;

Oracle:

复制代码
复制代码
SELECT * FROM user;

基本还是一样。

这就是:

SQL 是标准。


为什么叫"结构化"?

因为 SQL 必须按照固定的语法来写。

例如:

正确:

复制代码
复制代码
SELECT name
FROM user
WHERE age > 18;

错误:

复制代码
复制代码
FROM user
SELECT name;

SQL 有固定结构,所以叫:

Structured(结构化)


第二章 SQL 能干什么?

SQL 可以完成数据库中的几乎所有操作。

例如:

创建数据库:

复制代码
复制代码
CREATE DATABASE school;

创建表:

复制代码
复制代码
CREATE TABLE student (...);

插入数据:

复制代码
复制代码
INSERT INTO student VALUES (...);

查询:

复制代码
复制代码
SELECT * FROM student;

修改:

复制代码
复制代码
UPDATE student
SET age = 20
WHERE id = 1;

删除:

复制代码
复制代码
DELETE FROM student
WHERE id = 1;

授权:

复制代码
复制代码
GRANT ...

所以:

SQL 就是数据库的"语言"。


第三章 SQL 的四大分类

这是面试必问。

SQL 可以分成四类:

复制代码
复制代码
SQL
│
├── DDL
├── DML
├── DQL
└── DCL

记忆口诀:

建(DDL)→ 改数据(DML)→ 查(DQL)→ 管权限(DCL)


第一类:DDL(Data Definition Language)

中文:

数据定义语言

关键词:

定义数据库结构。

DDL 操作的是:

  • 数据库
  • 字段
  • 索引(后面学习)

不会操作数据。

例如:

创建数据库:

复制代码
复制代码
CREATE DATABASE school;

创建表:

复制代码
复制代码
CREATE TABLE student (
    id INT,
    name VARCHAR(20)
);

修改表:

复制代码
复制代码
ALTER TABLE student
ADD age INT;

删除表:

复制代码
复制代码
DROP TABLE student;

可以理解成:

装修房子。

例如:

房子:

复制代码
复制代码
客厅

卧室

厨房

DDL 做的是:

复制代码
复制代码
增加卧室

拆厨房

修改卫生间

它改变的是:

结构。


第二类:DML(Data Manipulation Language)

中文:

数据操作语言

注意:

DDL 改的是:

复制代码
复制代码
房子的结构

DML 改的是:

复制代码
复制代码
房子里面的人

例如:

student

原来:

id name
1 Tom

新增:

复制代码
复制代码
INSERT INTO student
VALUES (2,'Jack');

修改:

复制代码
复制代码
UPDATE student
SET name='Lucy'
WHERE id=2;

删除:

复制代码
复制代码
DELETE FROM student
WHERE id=2;

所以:

DML:

操作的是:

数据。


第三类:DQL(Data Query Language)

这是工作中使用最多的。

DQL:

只有一个核心:

复制代码
复制代码
SELECT

例如:

查询全部:

复制代码
复制代码
SELECT *
FROM student;

查询名字:

复制代码
复制代码
SELECT name
FROM student;

条件查询:

复制代码
复制代码
SELECT *
FROM student
WHERE age > 18;

以后:

工作 70%~80% 的 SQL:

都是:

复制代码
复制代码
SELECT

后面的:

JOIN

GROUP BY

ORDER BY

LIMIT

都是:

SELECT 的扩展。


第四类:DCL(Data Control Language)

中文:

数据控制语言

负责:

权限。

例如:

创建用户:

复制代码
复制代码
CREATE USER ...

授权:

复制代码
复制代码
GRANT

撤销:

复制代码
复制代码
REVOKE

删除用户:

复制代码
复制代码
DROP USER

一般:

DBA 用得比较多。

普通开发:

偶尔会用。


四大分类总结

分类 全称 操作对象 常见命令 举例
DDL Data Definition Language 数据库、表、字段 CREATE、ALTER、DROP、TRUNCATE 创建数据库、创建表、修改表结构
DML Data Manipulation Language 表中的数据 INSERT、UPDATE、DELETE 新增、修改、删除记录
DQL Data Query Language 数据查询 SELECT 查询数据、排序、分页、分组
DCL Data Control Language 权限与用户 GRANT、REVOKE、CREATE USER 用户授权、权限管理

第四章 SQL 的执行过程(建立概念)

现在先不用记住细节,只建立一个整体印象。

当你写:

复制代码
复制代码
SELECT * FROM student;

MySQL 大致会经历:

复制代码
复制代码
SQL
 │
 ▼
连接 MySQL
 │
 ▼
语法解析
 │
 ▼
检查是否有 student 表
 │
 ▼
生成执行计划
 │
 ▼
读取数据
 │
 ▼
返回结果

以后我们学习:

  • 解析器
  • 优化器
  • 执行器
  • InnoDB

就是在讲:

这一条 SQL:

到底经历了什么。


第五章 为什么 SQL 如此重要?

以后:

NestJS:

复制代码
复制代码
await userRepository.find()

看起来:

没有 SQL。

实际上:

ORM 会生成:

复制代码
复制代码
SELECT *
FROM user;

所以:

ORM 只是帮你写 SQL。

真正执行的:

仍然是:

SQL。

因此:

一个优秀的后端工程师,不仅要会用 ORM,更要能读懂和编写 SQL。


本阶段知识导图

复制代码
复制代码
SQL
│
├── SQL 是什么
│
├── SQL 是国际标准
│
├── 四大分类
│      ├── DDL(定义结构)
│      ├── DML(操作数据)
│      ├── DQL(查询数据)
│      └── DCL(权限管理)
│
└── SQL 执行流程(初步认识)

本章思考题

在进入下一节之前,建议你先回答这几个问题:

  1. SQL 为什么被称为"结构化查询语言"?
    SQL 被称为结构化查询语言(Structured Query Language),因为它必须按照固定的语法结构来编写,不能随意调整关键字顺序
  2. DDL 和 DML 的本质区别是什么?请分别举两个例子。
    DDL 修改的是数据库对象(结构),DML 修改的是数据库对象中的数据。
  3. 为什么 SELECT 被单独归类为 DQL,而不是 DML?
    因为 SELECT 只负责查询数据,不会修改数据内容,而 DML 的核心职责是对数据进行新增、修改和删除。为了体现"读"和"写"的区别,数据库将 SELECT 单独归类为 DQL。
  4. 如果要删除一张表,应该使用哪一类 SQL?如果只是删除表中的一条数据,又属于哪一类?
    删除整张表属于 DDL,因为删除的是数据库对象;删除表中的一条记录属于 DML,因为删除的是数据,而不是表结构。
  5. 为什么学习了 ORM(如 TypeORM、Prisma)之后,仍然需要学习 SQL?
    ORM 的作用是提高开发效率,它会把代码转换成 SQL,但数据库最终执行的仍然是 SQL。当出现性能问题、复杂查询或需要优化索引时,开发者必须理解 SQL,才能分析执行计划、优化查询和解决问题。因此,ORM 不能代替 SQL,它只是 SQL 的高级封装。
相关推荐
2601_962683892 小时前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
酱学编程3 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
shushangyun_4 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
华山令狐虫5 小时前
DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
数据库·人工智能·sql·dbapi
IvorySQL5 小时前
PG 技术日报|2026-07-04
数据库·人工智能·postgresql·开源
Hoxy.R5 小时前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库
IvorySQL5 小时前
IvorySQL HTAP 实时湖仓接入引擎
数据库·postgresql·开源·htap·ivorysql
忧郁的紫菜5 小时前
WCF+JSON+实体对象与WebService+DataSet效率大比拼
数据库·oracle·json
IvorySQL6 小时前
PostgreSQL 技术日报|2026-07-05
数据库·postgresql
万亿少女的梦1687 小时前
基于SpringBoot的考研学习交流系统设计与开发
spring boot·mysql·vue·系统设计·论坛系统