MySQL数据库基础实例教程:从安装到增删改查的完整教学大纲
发布时间:2026/10/12 1:07:37 锦皓数字建站

简介这份《MySQL数据库基础实例教程(第2版)》教学大纲PDF面向软件技术、移动互联等专业的学生与授课教师也适合自学者规划学习路径。它系统梳理了64学时讲授与课内实践各32学时的课程框架涵盖数据库基础知识、数据库设计、数据定义、数据操作、数据查询、视图、索引与分区、数据库编程及数据安全等模块并以PetStore数据库贯穿实例练习兼顾E-R图设计、范式理论、完整性约束、存储过程与触发器等知识点同时强调职业素质与动手能力培养。资源包共1个PDF文件约341KB内容为完整教学大纲便于快速了解课程性质、教学目标与各章节教学要求。目前已有2127人学习下载适合需要备课、制定教学计划或按大纲自学MySQL的读者参考。1. 从一份教学大纲说起MySQL 基础到底该练哪些实例很多人搜「MySQL数据库基础实例教程(第2版)教学大纲.pdf」表面是在找一份 PDF实际诉求往往更具体要么是老师要排一学期的课要么是自学者想照着大纲把 MySQL 从安装到增删改查走一遍要么是培训讲师想找一份能直接落地的实例清单。我见过太多人把大纲下载下来就吃灰因为大纲只给了章节名没给「每章对应哪个实例、实例跑在什么环境、参数怎么设」。这份大纲的价值不在 PDF 本身而在于它把 MySQL 基础拆成了可执行的模块环境搭建、库表操作、数据增删改查、排序与分页、事务与锁、存储过程、连接池。这篇笔记就按这个顺序把每个模块的最小实例、必调参数和翻车点讲清楚让你拿到大纲就能直接排课或自学。2. 环境搭建Windows 10 与 Linux 下把 MySQL 跑起来的最小实例大纲第一章通常是「数据库环境与工具」但真正卡住新手的是安装。热搜里「mysql安装教程8.0」「mysql在windows10上怎么安装」「rpm安装mysql」「docker安装mysql失败」全是高频问题。我一般建议教学环境统一用 MySQL 8.0因为 5.7 已经停止官方维护而 8.0 的默认字符集、认证插件、窗口函数都更贴近现代用法。下面分 Windows 和 Linux 两条路径给最小命令。2.1 Windows 10 上用 ZIP 包安装 MySQL 8.0不推荐用 exe 安装器因为教学机上经常缺 VC 运行库装到一半报错。ZIP 包解压即用适合批量部署。# 1. 解压到 D:\mysql-8.0进入 bin 目录 cd /d D:\mysql-8.0\bin # 2. 初始化数据目录生成临时 root 密码 mysqld --initialize --console # 输出里有一行 [Note] A temporary password is generated for rootlocalhost: xxxxx # 记下这个密码后面要改 # 3. 注册为 Windows 服务 mysqld --install MySQL80 --defaults-fileD:\mysql-8.0\my.ini # 4. 启动服务 net start MySQL80 # 5. 登录并改密码 mysql -uroot -p ALTER USER rootlocalhost IDENTIFIED BY NewPass123!;逻辑说明--initialize会创建 data 目录并生成临时密码--console让日志打到屏幕而不是文件方便排错。my.ini里至少要写basedir、datadir、port3306、character-set-serverutf8mb4。参数上utf8mb4是必须的否则 emoji 和部分生僻字会报错default_authentication_pluginmysql_native_password在 8.0 早期版本要显式写否则老客户端连不上。2.2 Linux 上用 RPM 包安装 MySQL 8.0CentOS 7/8 教学机常用 rpm 安装热搜里「rpm安装mysql」「linux mysql 8.0.44 下载」就是这类需求。# 1. 下载 bundle 包并解压 tar -xvf mysql-8.0.44-1.el7.x86_64.rpm-bundle.tar # 2. 按依赖顺序安装common 和 libs 必须先装 rpm -ivh mysql-community-common-8.0.44-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.44-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.44-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.44-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.44-1.el7.x86_64.rpm # 3. 启动并获取临时密码 systemctl start mysqld grep temporary password /var/log/mysqld.log # 4. 安全初始化 mysql_secure_installation逻辑说明rpm 安装最容易翻车的是依赖顺序common和libs没装就装server会报一堆Failed dependencies。mysql_secure_installation会引导你改 root 密码、删匿名用户、禁 root 远程登录教学环境建议全选 yes。参数上/etc/my.cnf里把datadir指向大分区避免默认/var/lib/mysql撑爆根目录。2.3 Docker 安装 MySQL 的常见失败点热搜里「docker安装mysql失败」多半是挂载目录权限问题。最小可用命令docker run -d --name mysql8 \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORDRoot123! \ -v /data/mysql:/var/lib/mysql \ mysql:8.0 \ --character-set-serverutf8mb4 \ --collation-serverutf8mb4_unicode_ci逻辑说明-v挂载的宿主机目录必须让容器内 mysql 用户uid 999有写权限否则启动时报Permission denied。解决方法是chown -R 999:999 /data/mysql。参数上--character-set-server和--collation-server要跟在镜像名后面写在docker run前面会被当成 docker 参数。提示教学环境统一用 8.0不要混用 5.7 和 8.0 的客户端认证插件不兼容会报Authentication plugin caching_sha2_password cannot be loaded。3. 库表操作与增删改查把大纲里的实例跑成可复现的 SQL大纲中间章节的核心是「数据库增删改查」和「mysql数据库修改结构」。这部分不能只讲语法要给出一个贯穿始终的实例库比如学生选课系统。下面用school库演示从建库到改表结构的完整流程。3.1 建库建表与字符集选择-- 创建数据库显式指定字符集 CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; USE school; -- 创建学生表 CREATE TABLE student ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender ENUM(M,F) DEFAULT M, age TINYINT UNSIGNED DEFAULT 0, class_id INT UNSIGNED, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_class (class_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 创建课程表 CREATE TABLE course ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, cname VARCHAR(100) NOT NULL, credit DECIMAL(3,1) DEFAULT 0.0, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 创建选课表复合主键 CREATE TABLE sc ( sid INT UNSIGNED NOT NULL, cid INT UNSIGNED NOT NULL, score DECIMAL(5,2) DEFAULT 0.00, PRIMARY KEY (sid, cid), CONSTRAINT fk_sc_student FOREIGN KEY (sid) REFERENCES student(id), CONSTRAINT fk_sc_course FOREIGN KEY (cid) REFERENCES course(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;逻辑说明utf8mb4_unicode_ci比utf8mb4_general_ci排序更准确教学环境建议统一用 unicode。ENUM适合性别这种固定值但生产环境不推荐因为改枚举要 ALTER TABLE。DECIMAL(5,2)存成绩避免 FLOAT 精度问题。外键约束在教学中要讲但生产环境高并发下常被禁用这点要跟学生说清楚。3.2 增删改查的最小实例与参数说明-- 插入数据 INSERT INTO student (name, gender, age, class_id) VALUES (张三, M, 20, 1), (李四, F, 19, 1), (王五, M, 21, 2); INSERT INTO course (cname, credit) VALUES (数据库原理, 3.0), (操作系统, 4.0); INSERT INTO sc (sid, cid, score) VALUES (1, 1, 85.5), (1, 2, 90.0), (2, 1, 78.0); -- 查询连表 排序 分页 SELECT s.name, c.cname, sc.score FROM sc JOIN student s ON sc.sid s.id JOIN course c ON sc.cid c.id ORDER BY sc.score DESC LIMIT 0, 10; -- 更新把张三的操作系统成绩加 5 分 UPDATE sc SET score score 5 WHERE sid 1 AND cid 2; -- 删除删除没有选课的学生 DELETE FROM student WHERE id NOT IN (SELECT DISTINCT sid FROM sc);逻辑说明INSERT批量插入比单条快教学时可以用SHOW PROFILES对比。ORDER BY ... LIMIT是热搜「mysql排序」的典型用法注意LIMIT 0,10的偏移量从 0 开始。UPDATE一定要带 WHERE否则全表更新这是血泪经验。DELETE用子查询时MySQL 不允许直接删除带子查询的同表数据需要包一层临时表这是常见翻车点。3.3 修改表结构的三种场景热搜「mysql数据库修改结构」通常指加字段、改类型、加索引。-- 加字段 ALTER TABLE student ADD COLUMN phone VARCHAR(20) DEFAULT NULL AFTER name; -- 改字段类型注意数据截断风险 ALTER TABLE student MODIFY COLUMN age SMALLINT UNSIGNED DEFAULT 0; -- 加索引 ALTER TABLE student ADD INDEX idx_name (name); -- 改默认值热搜「mysql设置默认值为0」 ALTER TABLE student ALTER COLUMN age SET DEFAULT 0;逻辑说明ADD COLUMN大表上会锁表8.0 支持 Online DDL但加索引仍可能阻塞写入。MODIFY改类型前要用SELECT MAX(age)确认数据范围否则截断报错。ALTER COLUMN ... SET DEFAULT只改默认值不重建表速度快。注意生产环境改表结构用pt-online-schema-change或gh-ost教学环境直接 ALTER 即可但要让学生知道锁表的存在。4. 事务、锁与存储过程大纲里最容易讲糊的三个点大纲后半段通常有「mysql事务处理」「mysql锁的分类」「mysql存储过程」。这三块如果只念概念学生必睡。我一般用同一个转账实例串起来事务保证原子性锁解释并发问题存储过程封装逻辑。4.1 事务的 ACID 与隔离级别实例-- 关闭自动提交 SET autocommit 0; -- 开启事务 START TRANSACTION; -- 张三转 100 给李四 UPDATE student SET balance balance - 100 WHERE id 1; UPDATE student SET balance balance 100 WHERE id 2; -- 提交 COMMIT; -- 如果出错 ROLLBACK;逻辑说明autocommit0后所有语句都在事务里容易忘记提交导致锁等待。教学时建议显式START TRANSACTION。隔离级别用SELECT transaction_isolation查看默认REPEATABLE-READ。演示脏读要开两个会话一个改不提交另一个读但 MySQL 默认隔离级别下读不到所以要手动降到READ-UNCOMMITTED。4.2 锁的分类与排查热搜「mysql锁的分类」「数据库并发锁」对应大纲里的锁章节。按粒度分表锁和行锁按模式分共享锁和排他锁。-- 查看当前锁等待 SELECT * FROM performance_schema.data_locks; SELECT * FROM performance_schema.data_lock_waits; -- 手动加共享锁 SELECT * FROM student WHERE id 1 LOCK IN SHARE MODE; -- 手动加排他锁 SELECT * FROM student WHERE id 1 FOR UPDATE;逻辑说明InnoDB 行锁基于索引如果 WHERE 条件没走索引会升级为表锁这是最常见的翻车点。data_locks表在 8.0 里替代了INNODB_LOCKS教学时直接查这个。FOR UPDATE要在事务里用否则自动提交后锁立即释放。4.3 存储过程的创建与调用DELIMITER // CREATE PROCEDURE get_student_score(IN p_sid INT) BEGIN SELECT s.name, c.cname, sc.score FROM sc JOIN student s ON sc.sid s.id JOIN course c ON sc.cid c.id WHERE sc.sid p_sid; END // DELIMITER ; -- 调用 CALL get_student_score(1);逻辑说明DELIMITER改分隔符是因为存储过程内部有分号不改的话客户端会提前截断。参数IN是输入OUT是输出INOUT可进可出。存储过程在互联网公司用得少因为难调试、难版本管理但教学大纲要求讲因为银行、电信老系统还在用。5. 避坑与排查教学和自学中最容易翻车的 5 个场景5.1 现象连接报Too many connections原因连接池没关或 max_connections 太小解决查SHOW PROCESSLIST杀睡眠连接调大max_connections应用侧用连接池并设wait_timeout。5.2 现象中文乱码原因客户端、连接、服务端字符集不一致解决SHOW VARIABLES LIKE character%逐项检查统一utf8mb4连接串加characterEncodingutf8。5.3 现象UPDATE影响行数为 0 但没报错原因WHERE 条件没匹配到数据或值本身没变化解决先SELECT确认数据存在再执行更新注意affected_rows和matched_rows的区别。5.4 现象docker安装mysql失败报权限错误原因挂载目录属主不是容器内 mysql 用户解决chown -R 999:999 /data/mysql或改用命名卷。5.5 现象mysql ssl连接错误原因8.0 默认要求 SSL老客户端不支持解决连接串加useSSLfalse或服务端配require_secure_transportOFF但生产环境不建议关。6. 进阶技巧用一份大纲排出一学期的 MySQL 实训课如果你手里真有这份教学大纲别按章节顺序平铺直叙。我一般会把 16 周拆成四个阶段第 1-4 周环境与建库建表第 5-8 周增删改查与排序分页第 9-12 周事务锁与存储过程第 13-16 周综合项目。每个阶段配一个可验收的实例比如第一阶段验收「能独立装好 MySQL 并建出 school 库」第二阶段验收「能写出带 JOIN 和 LIMIT 的查询」第三阶段验收「能演示两个会话的锁等待」第四阶段验收「能做一个命令行版选课系统」。验证方法很简单让学生在自己的机器上从零跑一遍录屏或截图关键步骤。我习惯用mysqldump导出最终库对比结构是否一致。参数上教学机建议innodb_buffer_pool_size设 256M 就够max_connections设 200避免学生开太多会话把机器拖死。一个具体技巧把大纲里的每个知识点映射成一条可执行的 SQL 或命令做成检查清单。比如「事务」对应START TRANSACTION; ... ROLLBACK;「锁」对应SELECT ... FOR UPDATE「存储过程」对应CREATE PROCEDURE。这样学生每学完一章就知道自己能不能跑通对应的命令而不是只背概念。我自己踩过的坑是早期教学时直接讲JOIN语法学生听完还是不会写。后来改成先给两张表的数据让学生手动写出结果再对照 SQL理解快很多。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。