MySQL 全套 SQL 语法系统性梳理|语句分类、标准规范、易错点汇总

📅 2026/6/28 10:43:53
MySQL 全套 SQL 语法系统性梳理|语句分类、标准规范、易错点汇总
前言本文为本学期《MySQL 数据库技术》课程课后知识复盘原创文档梳理课堂全部标准 SQL 语法包含通用语法规则、语句定义、使用约束与易混淆知识点覆盖 DDL、DML、DCL、TCL 四大 SQL 体系与数据表约束。 本文全部采用通用抽象表名、字段演示语法结构。参考资料MySQL 8.0 官方开发文档一、SQL 语句整体四大分类SQL 按照功能分为四类各司其职边界清晰表格分类缩写英文全称核心功能定位代表语句关键词DDLData Definition Language 数据定义语言定义 / 修改 / 删除数据库、数据表结构CREATE、DROP、ALTER、TRUNCATEDMLData Manipulation Language 数据操作语言对表内存储的数据行进行增删改查SELECT、INSERT、UPDATE、DELETEDCLData Control Language 数据控制语言管理数据库账号、分配 / 回收访问权限CREATE USER、GRANT、REVOKE、DROP USERTCLTransaction Control Language 事务控制语言管理 InnoDB 引擎事务提交、回滚逻辑START TRANSACTION、COMMIT、ROLLBACK、SAVEPOINT二、DDL 数据定义语言仅操作库、表结构不操作数据行2.1 数据库层级操作语句2.1.1 创建数据库标准语法sql语法规则 易错点 ⚠️IF NOT EXISTS可选作用数据库不存在时才创建规避 “库已存在” 报错省略则库重复会直接抛出异常MySQL 内置utf8字符集存在存储长度限制通用标准字符集为utf8mb4数据库名若为 MySQL 系统关键字必须使用反引号包裹名称字符集与校对规则可省略自动继承 MySQL 全局默认配置。2.1.2 数据库通用管理语句sql2.2 数据表层级操作语句2.2.1 创建数据表标准语法sql语法规范 COMMENT为注释关键字可给表、字段添加描述文本便于维护InnoDB是默认事务型存储引擎MyISAM不支持事务、外键AUTO_INCREMENT自增属性仅能赋值给整数类型主键字段。2.2.2 修改数据表 ALTER TABLE新增字段sql修改字段数据类型、约束sql修改字段名称 类型sql删除指定字段sql修改数据表名称sql2.2.3 清空表、删除整张表sqlTRUNCATE 与 DELETE 核心区分 ⚠️表格语句语句类型事务支持自增主键执行逻辑TRUNCATEDDL 结构语言不支持回滚自动重置为初始值销毁原表、重建空表DELETEDML 数据语言支持事务回滚保持原有数值逐行删除数据记录三、DML 数据操作语言仅操作表内存储的数据行3.1 SELECT 查询语句完整标准语法顺序顺序不可调换sql各子句语法说明DISTINCT去重关键字消除查询结果中完全重复的数据行JOIN关联分类INNER JOIN仅返回两张表匹配成功的数据LEFT JOIN完整保留左表全部数据右表无匹配字段填充NULLWHERE对原始未分组的数据行做过滤不能使用聚合函数GROUP BY按指定字段对数据分组搭配聚合函数使用HAVING仅能对GROUP BY分组完成后的结果过滤支持聚合函数ORDER BY排序ASC升序默认、DESC降序LIMIT限制返回行数参数 1 为偏移下标参数 2 为读取条数单参数时代表 “读取前 N 行”。聚合函数通用定义COUNT()统计行数、SUM()求和、AVG()平均值、MAX()最大值、MIN()最小值。查询语法高频易错点 ⚠️SELECT *代表查询表全部字段标准化开发中禁止使用仅按需查询所需字段LIKE %关键词前置通配符会导致索引失效海量数据场景需规避GROUP BY后 SELECT 子句仅允许出现分组字段或聚合函数严格模式下语法报错。3.2 INSERT 插入数据语句语法 1单行插入sql语法 2多行批量插入sql语法 3查询结果写入表sql语法规范 必须显式书写插入字段列表省略字段列表时值必须完整匹配表全部字段顺序表结构变更后极易报错。3.3 UPDATE 更新数据语句sql致命易错点 ⚠️省略WHERE条件会更新表内全部数据行语法无报错但会造成全表数据篡改风险。3.4 DELETE 删除数据语句sql开发规范 标准数据存储设计不使用物理删除增加is_delete标记字段通过UPDATE修改标记替代DELETE物理删除语句。四、DCL 数据控制语言账号、权限管理数据库管理员专用4.1 创建数据库账号sqllocalhost仅本地服务器登录%允许任意远程 IP 访问。4.2 授予访问权限 GRANTsql4.3 回收已有权限 REVOKEsql4.4 删除数据库账号sql权限操作易错点 ⚠️新增 / 回收权限后必须执行FLUSH PRIVILEGES;刷新权限配置修改才会即时生效。五、TCL 事务控制语言仅 InnoDB 存储引擎支持基础语法sql事务核心注意事项 ⚠️DDL 类语句CREATE/ALTER/DROP/TRUNCATE执行时会自动提交当前未完成事务事务流程中禁止执行 DDL 语句。补充概念事务 ACID 四大特性原子性 (Atomic)事务内操作要么全部执行要么全部撤销一致性 (Consistent)事务执行前后数据完整性约束不被破坏隔离性 (Isolated)多并发事务之间操作互不干扰持久性 (Durable)事务提交后数据修改永久保存宕机不丢失。六、数据表字段约束语法建表配套规则所有约束用于限制字段数据合法性分为字段级约束、表级约束PRIMARY KEY主键约束字段唯一且非空单张表仅允许 1 个主键UNIQUE唯一约束字段值不可重复允许存在 1 条NULL记录NOT NULL非空约束字段插入数据时必须赋值禁止为空DEFAULT默认值约束字段无赋值时自动填充预设默认值FOREIGN KEY外键约束关联两张表字段维护表之间数据完整性CHECK检查约束MySQL8.0 及以上完整支持限定字段数值范围。CHECK 约束语法示例sql七、学习复盘与问题总结7.1 学习过程高频踩坑梳理混淆TRUNCATE与DELETE属性误使用 TRUNCATE 清空测试表以外的数据无事务回滚补救手段 解决思路区分 DDL/DML 语句属性清空存量数据优先 DELETEUPDATE/DELETE省略 WHERE 条件触发全表操作 解决思路执行修改 / 删除前先用 SELECT 校验过滤条件范围字符集选用旧版 utf8特殊字符、表情存储乱码 解决思路新建库、表统一指定 utf8mb4 字符集事务中执行 ALTER/CREATE 等 DDL事务被自动提交回滚失效 解决思路事务流程仅执行 SELECT/INSERT/UPDATE/DELETE结构修改单独执行。7.2 学习疑问与理论解答疑问事务隔离级别存在什么区别如何调整解答MySQL InnoDB 默认隔离级别为可重复读共 4 级隔离级别分别解决脏读、不可重复读、幻读三类并发问题 查询当前隔离级别SELECT transaction_isolation;修改会话隔离级别语法SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别名称;结语本文完整覆盖课堂全部 SQL 标准语法系统梳理了 DDL、DML、DCL、TCL 四大类 SQL 语句的通用语法结构、核心定义、使用规则与字段约束清晰区分了四类语句的功能边界与适用场景全面整理了日常学习与实操过程中的标准写法与高频通用踩坑点适合数据库入门初学者用作通用学习资料