)
第二阶段 SQLStructured Query Language本阶段目标学完这一阶段你应该能够回答SQL 是什么SQL 为什么是标准语言SQL 有哪几种分类DDL、DML、DQL、DCL 分别负责什么一条 SQL 是如何执行的先建立概念第一章 什么是 SQLSQL 全称Structured Query Language中文结构化查询语言注意SQL 不是 MySQL 发明的。SQL 是一种国际标准语言。就像HTML CSS JavaScript是一种标准一样。SQL 也是标准。例如你学习 MySQLSELECT * FROM user;到了 PostgreSQLSELECT * FROM user;OracleSELECT * 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第一类DDLData Definition Language中文数据定义语言关键词定义数据库结构。DDL 操作的是数据库表字段索引后面学习不会操作数据。例如创建数据库CREATE DATABASE school;创建表CREATE TABLE student ( id INT, name VARCHAR(20) );修改表ALTER TABLE student ADD age INT;删除表DROP TABLE student;可以理解成装修房子。例如房子客厅 卧室 厨房DDL 做的是增加卧室 拆厨房 修改卫生间它改变的是结构。第二类DMLData Manipulation Language中文数据操作语言注意DDL 改的是房子的结构DML 改的是房子里面的人例如student原来idname1Tom新增INSERT INTO student VALUES (2,Jack);修改UPDATE student SET nameLucy WHERE id2;删除DELETE FROM student WHERE id2;所以DML操作的是数据。第三类DQLData Query Language这是工作中使用最多的。DQL只有一个核心SELECT例如查询全部SELECT * FROM student;查询名字SELECT name FROM student;条件查询SELECT * FROM student WHERE age 18;以后工作 70%~80% 的 SQL都是SELECT后面的JOINGROUP BYORDER BYLIMIT都是SELECT 的扩展。第四类DCLData Control Language中文数据控制语言负责权限。例如创建用户CREATE USER ...授权GRANT撤销REVOKE删除用户DROP USER一般DBA 用得比较多。普通开发偶尔会用。四大分类总结分类全称操作对象常见命令举例DDLData Definition Language数据库、表、字段CREATE、ALTER、DROP、TRUNCATE创建数据库、创建表、修改表结构DMLData Manipulation Language表中的数据INSERT、UPDATE、DELETE新增、修改、删除记录DQLData Query Language数据查询SELECT查询数据、排序、分页、分组DCLData Control Language权限与用户GRANT、REVOKE、CREATE USER用户授权、权限管理第四章 SQL 的执行过程建立概念现在先不用记住细节只建立一个整体印象。当你写SELECT * FROM student;MySQL 大致会经历SQL │ ▼ 连接 MySQL │ ▼ 语法解析 │ ▼ 检查是否有 student 表 │ ▼ 生成执行计划 │ ▼ 读取数据 │ ▼ 返回结果以后我们学习解析器优化器执行器InnoDB就是在讲这一条 SQL到底经历了什么。第五章 为什么 SQL 如此重要以后NestJSawait userRepository.find()看起来没有 SQL。实际上ORM 会生成SELECT * FROM user;所以ORM 只是帮你写 SQL。真正执行的仍然是SQL。因此一个优秀的后端工程师不仅要会用 ORM更要能读懂和编写 SQL。本阶段知识导图SQL │ ├── SQL 是什么 │ ├── SQL 是国际标准 │ ├── 四大分类 │ ├── DDL定义结构 │ ├── DML操作数据 │ ├── DQL查询数据 │ └── DCL权限管理 │ └── SQL 执行流程初步认识本章思考题在进入下一节之前建议你先回答这几个问题SQL 为什么被称为结构化查询语言SQL 被称为结构化查询语言Structured Query Language因为它必须按照固定的语法结构来编写不能随意调整关键字顺序DDL 和 DML 的本质区别是什么请分别举两个例子。DDL 修改的是数据库对象结构DML 修改的是数据库对象中的数据。为什么SELECT被单独归类为 DQL而不是 DML因为SELECT只负责查询数据不会修改数据内容而 DML 的核心职责是对数据进行新增、修改和删除。为了体现读和写的区别数据库将SELECT单独归类为 DQL。如果要删除一张表应该使用哪一类 SQL如果只是删除表中的一条数据又属于哪一类删除整张表属于 DDL因为删除的是数据库对象删除表中的一条记录属于 DML因为删除的是数据而不是表结构。为什么学习了 ORM如 TypeORM、Prisma之后仍然需要学习 SQLORM 的作用是提高开发效率它会把代码转换成 SQL但数据库最终执行的仍然是 SQL。当出现性能问题、复杂查询或需要优化索引时开发者必须理解 SQL才能分析执行计划、优化查询和解决问题。因此ORM 不能代替 SQL它只是 SQL 的高级封装。