参考:MySQL 与 SQL 基础
本文件原为阶段二周计划,现作为阶段三(后端进阶)参考素材保留,对应阶段三第 1 周。详细周计划确定后再正式改写。
学习目标
把数据从文件搬到数据库。完成后,应能够:
- 安装并启动 MySQL,使用命令行或客户端连接数据库
- 使用 DDL 创建数据库、数据表和约束
- 使用 DML 完成插入、更新和删除
- 使用 DQL 完成条件、排序、分页、聚合和分组查询
- 完成内连接、左连接和子查询
- 使用事务保证一组操作的完整性
- 为学生信息管理系统设计出合理的表结构
学习资料与范围
- 主课程:参考视频待定(MySQL 与 SQL)
- 视频范围:待补充
确定课程后,把下面的知识模块映射到具体视频章节。
| 学习模块 | 学习结果 |
|---|---|
| MySQL 安装、服务启动与客户端连接 | 能够连接并操作数据库 |
| 数据类型、DDL 建库建表与约束 | 能够设计并创建数据表 |
insert、update、delete | 能够维护表中的数据 |
select、where、order by、limit | 能够完成基础查询 |
聚合函数、group by、having | 能够完成统计查询 |
| 多表查询与连接 | 能够查询关联数据 |
| 子查询与常用函数 | 能够完成较复杂的查询 |
| 事务与基础索引 | 能够保证数据一致性并了解索引作用 |
需要掌握的知识点
数据库与表
- 数据库、表、行、列的关系
- MySQL 的登录、退出、查看数据库和切换数据库
- 常用数据类型:
int、bigint、varchar、char、date、datetime、decimal - 主键、自增、非空、唯一、默认值和外键约束
- 使用
create table、alter table、drop table管理表结构 - 字符集和排序规则(建议统一使用
utf8mb4)
SQL 基础
insert单行和多行插入update结合where精准修改,避免全表更新delete与truncate的区别select基本结构:字段、表名、条件、排序where中的比较、逻辑、范围、模糊和空值判断order by多字段排序和升降序limit分页写法与偏移量计算- 别名、去重和常用字符串、日期、数值函数
统计与多表查询
count、sum、avg、max、mingroup by分组和having过滤分组结果where与having的执行顺序差异- 内连接
inner join与左连接left join - 一对多关系下统计结果出现重复行的原因
- 子查询:标量子查询、
in子查询、exists子查询的基本用法 - 联表查询与多次单表查询的选择依据
事务与索引
- 事务的四个特性(原子性、一致性、隔离性、持久性)
start transaction、commit、rollback- 事务在转账、批量导入等场景中的作用
- 索引的作用和基本创建方式
- 主键索引与唯一索引
- 索引不是越多越好的原因
必做练习
- 环境准备:启动 MySQL 服务,使用命令行创建数据库并以
utf8mb4字符集建库。 - 建表:创建
student、course、score三张表,为学号、课程编号设置唯一约束。 - 数据初始化:向三张表插入至少 10 名学生、3 门课程和 20 条成绩记录。
- 单表查询:查询全部学生、按年龄排序、只查询前 5 条、查询指定班级的学生。
- 条件查询:查询成绩在 60-80 分之间的记录、查询姓名包含“张”的学生、查询班级为空的学生。
- 更新与删除:修改指定学号学生的班级,删除一条指定成绩,并说明如何避免误操作全表。
- 聚合统计:统计学生总数、每门课程的平均分、最高分和最低分。
- 分组查询:按班级统计人数,并只显示人数大于 2 的班级。
- 多表查询:查询每名学生的姓名、课程名和成绩,并输出每名学生的总分。
- 子查询:查询平均分高于全体平均分的学生,查询没有成绩记录的学生。
- 分页查询:按总分降序,每页 5 条,输出第 1 页和第 2 页的结果。
- 事务验证:使用事务插入一组数据后回滚,验证数据未写入;再提交一次,验证数据已写入。
综合任务:设计学生信息管理系统数据库
为下一周的 JDBC 改造准备完整的数据库脚本和查询语句。
要求:
- 输出完整的建库、建表 SQL 脚本,脚本可直接重复执行
- 至少包含学生表、课程表、成绩表,并说明表之间的关系
- 每张表都必须有主键,学号、课程编号等业务字段设置唯一约束
- 成绩字段使用合适的数据类型,并限制合理取值范围
- 提供初始化数据脚本,数据量足以支撑查询、分组和联表练习
- 编写查询脚本,覆盖增删改查、条件查询、排序分页、分组统计和多表连接
- 所有 SQL 语句添加注释,说明查询目的
- 记录一次事务回滚实验的过程和结果
- 整理表结构设计说明,逐个字段解释类型选择和约束原因
产出
- MySQL 环境搭建与连接记录
- 建库建表脚本和初始化数据脚本
- 查询练习脚本及执行结果
- 事务回滚实验记录
- 数据库表结构设计说明
- 一份常用 SQL 语句速查笔记
完成检查
- 能够安装、启动并连接 MySQL
- 能够使用合适的类型和约束设计数据表
- 能够熟练编写增删改查语句
- 能够使用排序、分页和条件查询
- 能够使用聚合函数和分组完成统计
- 能够完成多表连接和基础子查询
- 能够使用事务提交或回滚一组操作
- 已完成学生信息管理系统的数据库脚本和表结构说明