MySQL全套SQL语句知识整理语法、实战场景、易错点汇总文章目录MySQL全套SQL语句知识整理语法、实战场景、易错点汇总一、前言二、SQL四大语句分类总览三、DDL 数据定义语言库、表、索引3.1 数据库操作 CREATE / DROP / ALTER1. 标准语法规范2. 业务应用场景3. 高频易错点4. 可直接运行实战案例3.2 数据表核心操作CREATE / DROP / TRUNCATE / ALTER1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例3.3 索引相关操作CREATE / DROP1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例四、DML 数据操作语言增删改查核心业务4.1 数据新增INSERT1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例4.2 数据修改UPDATE1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例4.3 数据删除DELETE1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例4.4 数据查询SELECT1. 完整语法框架2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例五、DCL 数据控制语言权限管理1. 标准语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例六、TCL 事务控制语言数据一致性保障1. 核心语法规范2. 业务应用场景3. 高频易错点汇总4. 可直接运行实战案例七、学习疑问与实操解决方案作业必填7.1 疑问一DELETE 与 TRUNCATE 清空数据的核心区别7.2 疑问二MySQL索引失效的常见场景与优化方案八、全文学习总结与心得一、前言本学期我系统学习了MySQL数据库课程掌握了数据库结构设计、数据操作、权限管理、事务机制等核心知识点。为了巩固课堂所学我将本学期所有高频SQL语句进行系统化整理。本文严格按照 标准语法 业务场景 高频易错点 可运行实战代码 结构编写所有SQL均可在Navicat直接执行。同时文末记录了我学习中遇到的真实疑问并通过自主查阅资料、实操验证得出解决方案完整满足课程作业考核要求。二、SQL四大语句分类总览MySQL的SQL语句根据功能可分为四大类别覆盖数据库的所有操作场景DDL数据定义语言用于操作数据库、数据表、索引等结构不操作具体数据DML数据操作语言用于增删改查业务数据是日常开发使用最多的语句DCL数据控制语言用于管理数据库账号、分配和回收访问权限TCL事务控制语言用于控制事务提交与回滚保障业务数据一致性三、DDL 数据定义语言库、表、索引3.1 数据库操作 CREATE / DROP / ALTER1. 标准语法规范-- 创建数据库规避重复创建报错标准企业写法CREATEDATABASEIFNOTEXISTS数据库名DEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 删除数据库DROPDATABASEIFEXISTS数据库名;-- 修改数据库字符集ALTERDATABASE数据库名CHARACTERSETutf8mb4;-- 切换当前操作的数据库USE数据库名;2. 业务应用场景项目初始化创建独立的业务数据库隔离不同项目的数据项目下线测试项目废弃时可删除无用数据库字符集统一解决中文乱码、Emoji表情无法存储的问题3. 高频易错点未添加 IF NOT EXISTS重复创建同名数据库会直接报错字符集选择错误使用 utf8 字符集无法存储生僻汉字和 Emoji 表情必须使用 utf8mb4忘记切换数据库未执行 USE 切换数据库后续建表、操作数据会默认存入系统库4. 可直接运行实战案例-- 创建学生管理专用数据库CREATEDATABASEIFNOTEXISTSstudent_dbDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 切换到新创建的数据库USEstudent_db;-- 修改数据库字符集如果需要ALTERDATABASEstudent_dbCHARACTERSETutf8mb4;-- 删除数据库谨慎操作-- DROP DATABASE IF EXISTS student_db;3.2 数据表核心操作CREATE / DROP / TRUNCATE / ALTER1. 标准语法规范-- 创建数据表CREATETABLEIFNOTEXISTS表名(字段名1数据类型 约束条件,字段名2数据类型 约束条件)ENGINEInnoDBDEFAULTCHARSETutf8mb4;-- 删除整张数据表结构数据全部删除DROPTABLEIFEXISTS表名;-- 清空表中所有数据保留表结构TRUNCATETABLE表名;-- 修改数据表结构ALTERTABLE表名ADD/MODIFY/DROP字段信息;2. 业务应用场景CREATE TABLE根据业务需求创建数据表存储数据DROP TABLE业务废弃时删除数据表TRUNCATE TABLE测试环境需要批量清空冗余数据时使用ALTER TABLE项目迭代更新字段时修改表结构3. 高频易错点汇总VARCHAR类型未指定长度导致数据存储异常数据表未设置主键无唯一标识不符合数据库设计规范TRUNCATE属于DDL语句不支持事务回滚误操作无法恢复数据ALTER修改大表字段会触发锁表线上业务禁止随意操作4. 可直接运行实战案例-- 创建学生信息表CREATETABLEIFNOTEXISTSstudent(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT学生编号,nameVARCHAR(20)NOTNULLCOMMENT学生姓名,ageTINYINTCOMMENT学生年龄,class_idINTCOMMENT所属班级编号)ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT学生信息数据表;3.3 索引相关操作CREATE / DROP1. 标准语法规范-- 创建普通索引CREATEINDEX索引名ON表名(字段名);-- 创建唯一索引CREATEUNIQUEINDEX索引名ON表名(字段名);-- 删除索引DROPINDEX索引名ON表名;2. 业务应用场景针对项目中高频查询、条件筛选的字段建立索引大幅降低数据库查询耗时优化页面数据加载速度。3. 高频易错点汇总索引并非越多越好过多索引会降低增删改数据的执行效率前置模糊查询、字段隐式转换会直接导致索引失效4. 可直接运行实战案例-- 为学生姓名字段建立普通索引优化姓名查询速度CREATEINDEXidx_student_nameONstudent(name);四、DML 数据操作语言增删改查核心业务4.1 数据新增INSERT1. 标准语法规范-- 单条数据插入INSERTINTO表名(字段1,字段2)VALUES(值1,值2);-- 批量数据插入效率远高于单条插入INSERTINTO表名(字段1,字段2)VALUES(值1,值2),(值3,值4);2. 业务应用场景用户注册、表单提交、批量导入Excel数据等场景用于向数据库写入业务数据。3. 高频易错点汇总插入的字段数量、值的数量、数据类型必须一一对应非空约束字段禁止传入NULL否则会直接报错。4. 可直接运行实战案例-- 批量插入学生数据INSERTINTOstudent(name,age,class_id)VALUES(张三,18,101),(李四,19,101);4.2 数据修改UPDATE1. 标准语法规范UPDATE表名SET字段1值1,字段2值2WHERE筛选条件;2. 业务应用场景用户修改个人资料、更新商品库存、调整订单状态、修改业务数据等场景。3. 高频易错点汇总绝对不能省略WHERE条件无条件UPDATE会更新整张表所有数据造成严重数据事故。4. 可直接运行实战案例-- 修改张三的年龄信息UPDATEstudentSETage20WHEREname张三;4.3 数据删除DELETE1. 标准语法规范DELETEFROM表名WHERE筛选条件;2. 业务应用场景删除过期数据、无效数据、用户注销数据等精细化数据删除场景。3. 高频易错点汇总省略WHERE条件会清空全表数据DELETE删除不会重置自增主键支持事务回滚安全性更高。4. 可直接运行实战案例-- 删除指定编号的学生数据DELETEFROMstudentWHEREid2;4.4 数据查询SELECT1. 完整语法框架SELECT字段列表FROM表名WHERE行数据筛选条件GROUPBY分组字段HAVING分组后筛选ORDERBY排序字段ASC/DESCLIMIT偏移量,展示条数;2. 业务应用场景后台列表展示、前端页面数据渲染、数据统计报表、条件筛选查询等所有数据读取场景。3. 高频易错点汇总WHERE与HAVING混用WHERE筛选原始数据HAVING仅能筛选分组后的聚合数据二者不可混用大数据分页效率低偏移量过大会导致查询效率极低多表联查未加关联条件会产生笛卡尔积造成数据冗余、查询卡顿4. 可直接运行实战案例-- 统计各班学生人数筛选人数大于1的班级按人数降序排序取前5条数据SELECTclass_id,COUNT(id)student_countFROMstudentGROUPBYclass_idHAVINGCOUNT(id)1ORDERBYstudent_countDESCLIMIT0,5;五、DCL 数据控制语言权限管理1. 标准语法规范-- 授予用户权限GRANT权限1,权限2ON数据库.表TO账号访问地址IDENTIFIEDBY密码;-- 回收用户权限REVOKE权限ON数据库.表FROM账号访问地址;2. 业务应用场景为开发人员分配测试库读写权限为运维人员分配只读权限实现数据库权限分级管理保障数据安全。3. 高频易错点汇总权限修改后必须执行FLUSH PRIVILEGES;刷新权限修改才能生效。4. 可直接运行实战案例-- 创建测试账号赋予学生数据库查询权限GRANTSELECTONstudent_db.*TOtest%IDENTIFIEDBY123456;FLUSHPRIVILEGES;六、TCL 事务控制语言数据一致性保障1. 核心语法规范STARTTRANSACTION;-- 手动开启事务-- 执行多条关联DML操作COMMIT;-- 提交事务数据永久生效ROLLBACK;-- 回滚事务撤销所有操作2. 业务应用场景转账、订单扣库存、多表联动修改等关联性极强的业务保证所有操作要么全部成功、要么全部失败杜绝数据错乱。3. 高频易错点汇总DDL语句会自动提交事务无法回滚MyISAM引擎不支持事务必须使用InnoDB引擎。4. 可直接运行实战案例-- 事务实操演示STARTTRANSACTION;UPDATEstudentSETage21WHEREid1;COMMIT;七、学习疑问与实操解决方案作业必填7.1 疑问一DELETE 与 TRUNCATE 清空数据的核心区别我的疑惑两种语句都能清空表数据不清楚实际开发中该如何选择。查阅渠道MySQL官方文档、数据库实操教程、技术博客。实操测试代码CREATETABLEtest(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(10));INSERTINTOtest(name)VALUES(A);DELETEFROMtest;INSERTINTOtest(name)VALUES(B);TRUNCATETABLEtest;INSERTINTOtest(name)VALUES(C);最终总结DELETE是DML语句逐行删除数据、不重置自增主键、支持事务回滚适合删除部分数据TRUNCATE是DDL语句清空数据页、重置自增主键、无法回滚适合批量清空全表测试数据。7.2 疑问二MySQL索引失效的常见场景与优化方案我的疑惑建立索引后查询依然缓慢不清楚索引失效的原因。查阅渠道MySQL性能优化手册、实战踩坑案例。失效场景总结前置模糊查询、字段隐式类型转换、OR无索引字段、索引字段使用函数计算都会导致索引失效。优化方案改写查询语句避免对索引字段进行加工处理保证索引正常生效。八、全文学习总结与心得通过本次MySQL SQL语句系统整理我完整掌握了DDL、DML、DCL、TCL四大类核心语句的使用方法。在所有SQL操作中DML增删改查是开发核心编写语句必须规范严谨尤其是UPDATE和DELETE必须添加WHERE条件杜绝全表操作事故。同时我掌握了索引优化、事务使用、权限管理的核心要点理解了开发中的高频踩坑点。后续我会继续加强SQL实操练习提升代码规范性和问题排查能力。