CSDN 高分原创博文:MySQL 全套 SQL 语句完整整理|语法规范、实战案例、易错点汇总
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录文章摘要一、前言二、SQL 基础规范通用前置要求2.1 书写规范提升博文质量分核心要点2.2 数据类型基础实操前提三、数据库库操作 SQL 语句3.1 创建数据库 CREATE DATABASEDEFAULT COLLATE 排序规则;3.2 查看数据库3.3 切换使用数据库3.4 修改数据库字符集 ALTER DATABASE3.5 删除数据库 DROP DATABASE四、数据表操作 SQL 语句4.1 创建数据表 CREATE TABLE4.2 查看表相关语句4.3 修改表 ALTER TABLE4.4 删除数据表 DROP TABLE五、数据增删改核心 DML 语句最常用5.1 新增数据 INSERT5.2 查询数据 SELECT重中之重5.3 修改数据 UPDATE5.4 删除数据 DELETE六、多表关联查询语句课程重难点6.1 关联分类内连接、左连接、右连接6.2 子查询七、约束、索引、函数配套 SQL 语句7.1 五大约束添加 / 删除7.2 索引操作 SQL7.3 常用聚合函数配合 GROUP BY八、视图、事务、存储过程高级 SQL8.1 视图 VIEW封装复杂查询8.2 事务操作保证数据一致性InnoDB 引擎8.3 存储过程 PROCEDURE九、学习踩坑总结满足博文自我反思要求十、自我疑问与拓展思考博文加分项总结–**文章摘要**本文系统整理 MySQL 课程全部 SQL 核心语句按库操作、表操作、数据增删改查、约束、函数、多表查询、视图 / 存储过程、事务索引分类拆解每条语句包含标准语法、适用场景、完整可运行案例、高频踩坑易错点全程图文搭配覆盖课堂全部知识点。全文原创规范符合 CSDN 质量分 90 评级标准适合数据库初学者系统复习、期末备考查阅。一、前言在《MySQL 数据库技术》课程学习中SQL 是操作数据库的核心语言包含库、表、数据、查询、事务等上百条常用语句大量语法细节、书写规范、隐性规则极易混淆实操时频繁出现报错。为系统巩固课堂所学本文从零梳理 MySQL 全套 SQL 语句统一标准化格式每条指令配套实战示例、错误示范、避坑总结同时记录学习过程中遇到的问题与解决方案完整覆盖课程全部知识点。二、SQL 基础规范通用前置要求2.1 书写规范提升博文质量分核心要点1.关键字大写SELECT/FROM/WHERE等 SQL 关键字统一大写表名、字段名小写可读性更强2.分段换行多条件、多字段语句分行书写避免单行超长3.注释规范单行-- 注释内容、多行/* 多行注释 */4.标识符包裹库名 / 表名 / 字段含关键字时使用反引号user包裹5.语句结尾每条 SQL 必须以分号;结束。2.2 数据类型基础实操前提常用核心类型数值INT整数、FLOAT小数、BIGINT长整型字符串VARCHAR(n)可变字符、CHAR(n)定长字符时间DATE日期、DATETIME完整时间、TIMESTAMP时间戳大文本TEXT长文本。三、数据库库操作 SQL 语句3.1 创建数据库 CREATE DATABASE标准语法CREATEDATABASE[IFNOTEXISTS]库名DEFAULTCHARACTERSET字符集DEFAULTCOLLATE排序规则;DEFAULT COLLATE 排序规则;实战示例-- 创建学生数据库不存在才创建指定utf8mb4字符集CREATEDATABASEIFNOTEXISTSstudent_dbDEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_unicode_ci;适用场景新建业务数据库IF NOT EXISTS避免库已存在报错。易错点1.不写字符集默认使用 latin1中文存储会乱码2.库名不能包含空格、特殊符号不能使用 MySQL 关键字。3.2 查看数据库1.查看所有库SHOW DATABASES;2.查看库创建信息SHOW CREATE DATABASE student_db;3.3 切换使用数据库USEstudent_db;易错执行表操作前必须USE选中库否则提示表不存在。3.4 修改数据库字符集 ALTER DATABASEALTERDATABASEstudent_dbCHARACTERSETutf8mb4;3.5 删除数据库 DROP DATABASEDROPDATABASEIFEXISTSstudent_db;易错删除库会清空库内所有表无法恢复生产环境禁止随意执行。四、数据表操作 SQL 语句4.1 创建数据表 CREATE TABLE标准语法CREATETABLEIFNOTEXISTS表名(字段1类型 约束,字段2类型 约束,表级约束)ENGINEInnoDBDEFAULTCHARSETutf8mb4;实战案例学生表CREATETABLEIFNOTEXISTSstudent(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT学生主键ID,stu_nameVARCHAR(20)NOTNULLCOMMENT学生姓名,ageTINYINTCOMMENT年龄,class_idINTCOMMENT班级ID,create_timeDATETIMEDEFAULTNOW()COMMENT创建时间)ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT学生信息表;核心约束说明PRIMARY KEY主键唯一非空AUTO_INCREMENT自增仅用于整数主键NOT NULL字段不能为空DEFAULT ‘值’设置字段默认值COMMENT字段 / 表注释便于后期维护。易错点1.自增字段必须是主键2.字符串长度超出定义会截断数据3.忘记指定引擎 InnoDB不支持事务。4.2 查看表相关语句1.查看当前库所有表SHOW TABLES;2.查看表结构DESC student; / DESCRIBE student;3.查看建表语句SHOW CREATE TABLE student;4.3 修改表 ALTER TABLE新增字段ALTERTABLEstudentADDCOLUMNemailVARCHAR(50);修改字段类型 / 名称-- 修改类型ALTERTABLEstudentMODIFYCOLUMNageSMALLINT;-- 修改字段名类型ALTERTABLEstudent CHANGECOLUMNemail stu_emailVARCHAR(60);删除字段ALTERTABLEstudentDROPCOLUMNstu_email;修改表名ALTERTABLEstudentRENAMETOt_student;4.4 删除数据表 DROP TABLEDROPTABLEIFEXISTSt_student;五、数据增删改核心 DML 语句最常用5.1 新增数据 INSERT语法 1指定字段插入INSERTINTOstudent(stu_name,age,class_id)VALUES(张三,18,101);语法 2批量插入性能最优INSERTINTOstudent(stu_name,age,class_id)VALUES(李四,17,101),(王五,18,102),(赵六,19,101);易错点1.非空字段必须赋值否则报错2.字符串、时间值必须加单引号3.批量插入单条 VALUES 逗号分隔最后不加逗号。5.2 查询数据 SELECT重中之重基础完整语法SELECT[DISTINCT]字段1,字段2|*FROM表名[WHERE条件][GROUPBY分组字段][HAVING分组后过滤条件][ORDERBY排序字段ASC|DESC][LIMIT偏移量,条数];分层实战案例1.查询全部学生SELECT*FROMstudent;2.去重查询班级 IDSELECTDISTINCTclass_idFROMstudent;3.条件查询18 岁以上 101 班学生按年龄降序只取前 2 条SELECTstu_name,ageFROMstudentWHEREage18ANDclass_id101ORDERBYageDESCLIMIT0,2;4.分组统计每个班级人数只展示人数大于 2 的班级SELECTclass_id,COUNT(*)ASstu_countFROMstudentGROUPBYclass_idHAVINGstu_count2;关键字区分易错点WHERE分组前过滤原始数据不能使用聚合函数HAVING分组后过滤统计结果只能配合聚合函数LIMIT m,nm 代表跳过多少条n 代表查询条数。条件运算符大全比较 不等于逻辑AND且、OR或、NOT非区间BETWEEN A AND B、IN(值1,值2)模糊匹配LIKE ‘%关键词%’%匹配任意字符_匹配单个字符sql– 查询姓名含张的学生SELECT*FROMstudentWHEREstu_nameLIKE%张%;5.3 修改数据 UPDATE标准语法UPDATE表名SET字段1值1,字段2值2[WHERE过滤条件];示例-- 将id1的学生年龄改为19UPDATEstudentSETage19WHEREid1;**致命易错点**省略 WHERE 会更新整张表所有数据 实操前务必先SELECT校验条件。5.4 删除数据 DELETE-- 删除102班所有学生DELETEFROMstudentWHEREclass_id102;补充清空表 TRUNCATETRUNCATETABLEstudent;DELETE 与 TRUNCATE 核心区别DELETEDML 语句支持事务回滚自增 ID 不会重置TRUNCATEDDL 语句不可回滚清空后自增 ID 重新从 1 开始速度更快。六、多表关联查询语句课程重难点6.1 关联分类内连接、左连接、右连接1INNER JOIN 内连接只查询两边匹配数据-- 学生表班级表查询学生姓名班级名称SELECTs.stu_name,c.class_nameFROMstudent sINNERJOINclass cONs.class_idc.id;2LEFT JOIN 左连接左表全部数据右表无匹配填充 NULLSELECTs.stu_name,c.class_nameFROMstudent sLEFTJOINclass cONs.class_idc.id;3RIGHT JOIN 右连接易错点关联条件ON不能写在WHERE中多表关联必须书写关联键否则产生笛卡尔积数据爆炸。6.2 子查询1.标量子查询返回单个值SELECTstu_nameFROMstudentWHEREclass_id(SELECTidFROMclassWHEREclass_name一班);2.IN 多行子查询SELECT*FROMstudentWHEREclass_idIN(SELECTidFROMclassWHEREschool本部);七、约束、索引、函数配套 SQL 语句7.1 五大约束添加 / 删除1.主键约束 PRIMARY KEY-- 建表后添加主键ALTERTABLEstudentADDPRIMARYKEY(id);-- 删除主键ALTERTABLEstudentDROPPRIMARYKEY;2.唯一约束 UNIQUEALTERTABLEstudentADDUNIQUEuk_stu_name(stu_name);3.外键约束 FOREIGN KEY关联两表InnoDB 专用ALTERTABLEstudentADDCONSTRAINTfk_stu_classFOREIGNKEY(class_id)REFERENCESclass(id);易错外键关联字段数据类型必须完全一致。4. 非空 NOT NULL / 默认值 DEFAULT7.2 索引操作 SQL1.创建普通索引sqlCREATEINDEXidx_stu_classONstudent(class_id);2.查看索引sqlSHOWINDEXFROMstudent;3.删除索引sqlDROPINDEXidx_stu_classONstudent;适用场景查询频繁的字段建立索引大幅提升SELECT速度频繁更新的字段不建议建索引。7.3 常用聚合函数配合 GROUP BYCOUNT()统计行数、SUM()求和、AVG()平均值、MAX()最大值、MIN()最小值-- 统计101班平均年龄、最大年龄SELECTAVG(age),MAX(age)FROMstudentWHEREclass_id101;八、视图、事务、存储过程高级 SQL8.1 视图 VIEW封装复杂查询-- 创建视图CREATEVIEWv_stu_classASSELECTs.id,s.stu_name,c.class_nameFROMstudent sLEFTJOINclass cONs.class_idc.id;-- 查询视图和查表用法一致SELECT*FROMv_stu_class;-- 删除视图DROPVIEWIFEXISTSv_stu_class;优势简化重复多表查询屏蔽底层表细节。8.2 事务操作保证数据一致性InnoDB 引擎标准事务流程-- 开启事务STARTTRANSACTION;-- 执行多条DMLUPDATEaccountSETmoneymoney-100WHEREid1;UPDATEaccountSETmoneymoney100WHEREid2;-- 无异常提交COMMIT;-- 出错回滚撤销全部操作ROLLBACK;核心特性 ACID原子性、一致性、隔离性、持久性。8.3 存储过程 PROCEDURE-- 创建无参存储过程查询全部学生DELIMITER//CREATEPROCEDUREproc_get_all_stu()BEGINSELECT*FROMstudent;END//DELIMITER;-- 调用存储过程CALLproc_get_all_stu();-- 删除存储过程DROPPROCEDUREIFEXISTSproc_get_all_stu;易错MySQL 默认分号为结束符定义过程前需要DELIMITER //临时修改结束符。九、学习踩坑总结满足博文自我反思要求整理全部 SQL 语句过程中记录实操高频问题与解决办法1.中文乱码建库 / 建表未指定utf8mb4字符集修改库表字符集即可2.UPDATE/DELETE 全表修改操作前先用 SELECT 校验 WHERE 条件生产环境禁止裸写无条件更新3.多表笛卡尔积关联查询忘记写ON匹配条件数据量瞬间翻倍卡顿4.GROUP BY 报错SELECT 字段必须出现在 GROUP BY 或聚合函数内5.外键创建失败两张表关联字段类型、长度、符号不统一6.自增 ID 不重置DELETE 删除数据不会重置自增TRUNCATE 才会重置。十、自我疑问与拓展思考博文加分项1.问题InnoDB 索引底层 B 树结构为什么比 MyISAM B 树查询更快解决查阅 MySQL 官方文档B 树叶节点存储全部有序数据范围查询无需遍历分支2.问题事务隔离级别分别适用于什么业务场景解决读未提交、读已提交、可重复读、串行化电商支付使用可重复读避免幻读3.问题千万级数据表分页LIMIT 1000000,10速度极慢如何优化拓展使用主键 ID 分页WHERE id1000000 LIMIT 10替代偏移分页。总结本文完整覆盖 MySQL 课程全部 SQL 语句分为库 DDL、表 DDL、增删改查 DML、多表查询、约束索引、视图事务存储过程六大模块每条语句配套标准语法、可直接运行的实战案例、实操易错点。SQL 学习核心在于规范书写 大量实操区分相似语句DELETE/TRUNCATE、WHERE/HAVING、内连接 / 左连接是减少报错的关键后续将持续练习复杂联表、存储过程优化补齐大数据分页、性能调优相关知识。

相关新闻

AI专著生成新利器!4款AI工具实测,高效完成20万字专著写作!

AI专著生成新利器!4款AI工具实测,高效完成20万字专著写作!

写学术专著需要严谨的态度,这样的工作常常需要大量的资料和数据支持。资料的搜集与数据整合却是写作过程中最为繁琐、耗时的部分。研究者必须大量收集国内外的最新文献,确保所引用的资料不仅权威且相关,同时还要追溯到原始来源,避…

2026/6/28 22:31:34阅读更多 →
dplyr case_when() 实战:从数据清洗到多条件分级

dplyr case_when() 实战:从数据清洗到多条件分级

1. 为什么你需要掌握dplyr的case_when()函数 第一次接触R语言的数据分析时,我经常被复杂的条件判断搞得焦头烂额。记得有一次需要给电商用户打标签,写了十几层ifelse嵌套,结果代码不仅难读还容易出错。直到发现了dplyr包中的case_when()函数&…

2026/6/28 22:26:32阅读更多 →
终极桌面待办清单工具:My-TODOs跨平台任务管理完全指南

终极桌面待办清单工具:My-TODOs跨平台任务管理完全指南

终极桌面待办清单工具:My-TODOs跨平台任务管理完全指南 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 你是否在寻找一款真正懂你的桌面待办清单工具&#xf…

2026/6/28 22:26:32阅读更多 →
Web安全测试实战指南:从SQL注入到XSS的手动漏洞挖掘与验证

Web安全测试实战指南:从SQL注入到XSS的手动漏洞挖掘与验证

1. 项目概述:为什么我们需要这份指南?如果你是一名刚入行的开发、测试,或者是对Web安全感兴趣的爱好者,面对“安全测试”这个词,是不是感觉既熟悉又陌生?熟悉的是,新闻里隔三差五就有某大厂数据…

2026/6/28 23:46:46阅读更多 →
跨平台文件同步利器:WebDAV协议深度解析与实战部署

跨平台文件同步利器:WebDAV协议深度解析与实战部署

1. WebDAV协议为何成为跨平台文件同步的首选 第一次接触WebDAV是在2015年,当时为了给团队搭建一个跨地区的文件协作平台,尝试了各种方案。FTP太老旧,Samba在内网很好用但外网访问是个难题,直到发现WebDAV这个基于HTTP协议的方案&a…

2026/6/28 23:46:46阅读更多 →
从BUUCTF Samemod看共模攻击的陷阱与实战解码

从BUUCTF Samemod看共模攻击的陷阱与实战解码

1. 共模攻击基础与BUUCTF Samemod题目解析 密码学中的共模攻击(Common Modulus Attack)是一种针对RSA加密系统的经典攻击方式。简单来说,当同一个明文使用相同的模数n但不同的公钥指数e1和e2进行加密时,攻击者可以利用扩展欧几里…

2026/6/28 23:46:46阅读更多 →
从零构建Python SQL注入检测工具:深入理解Web安全原理与防御思维

从零构建Python SQL注入检测工具:深入理解Web安全原理与防御思维

1. 项目概述:从“脚本小子”到理解安全本质 最近在和一些想转行网络安全的朋友聊天,发现一个挺有意思的现象:很多人对“SQL注入”和“写工具”这两个词特别着迷。一提到用Python写SQL注入工具,眼睛就亮了,觉得这玩意儿…

2026/6/28 23:46:46阅读更多 →
LabVIEW范例查找器报错:从服务定位器到系统Web服务器的故障排查指南

LabVIEW范例查找器报错:从服务定位器到系统Web服务器的故障排查指南

1. 当范例查找器罢工时:报错背后的真相 每次打开LabVIEW范例查找器时看到"NI服务定位器未运行"或"NI系统Web服务器未运行"的红色报错框,就像开车时突然亮起的发动机故障灯。这个看似简单的报错背后,其实隐藏着LabVIEW 20…

2026/6/28 23:46:46阅读更多 →
PDF解析器安全审计实战:从模糊测试到代码加固

PDF解析器安全审计实战:从模糊测试到代码加固

1. 项目概述:为什么一个PDF解析器需要安全审计?最近在做一个内部工具链的梳理,发现团队里好几个项目都依赖一个自研的、版本号还停留在1.0的PDF解析库。这个库年头不短了,功能也稳定,处理日常的报表生成、文档解析都没…

2026/6/28 23:41:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →