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 的高级封装。
相关推荐
777VG12 小时前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
aax121345313 小时前
VOC 集群治理工程实操|美丽蓝天绿岛项目 RTO 工艺选型、管控方案与申报要
大数据·数据库·人工智能
IvorySQL14 小时前
PG 日报|优化缓冲区批量扫描,降低多套接字并发竞争
数据库·人工智能·postgresql·开源·区块链
这个DBA有点耶14 小时前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
大熊猫侯佩14 小时前
WWDC26 全新 SwiftData 的 .codable 宏选项:它不是泛型专用胶水
数据库·swift·apple
童谣116 小时前
越华环保集团市级统筹申报数字化中台:政策校验与减排仿真一体化架构
数据库·架构
制造数据与AI践行者老蒋16 小时前
离谱!PromptTemplate 遇上 JSON,花括号直接引发解析战争
数据库·microsoft·json
中微极客16 小时前
用LangChain 0.3构建生产级RAG与Agent:从API集成到Streamlit部署
数据库·人工智能·langchain
吴声子夜歌16 小时前
MongoDB 4.x——并发优化
数据库·mongodb
不如语冰17 小时前
AI大模型入门-Python进阶-上下文管理与with语句
开发语言·数据结构·数据库·人工智能·pytorch·redis·python