☰
十一、MySQL 第 1‑3 章
2026/9/30 2:47:26 网站建设 项目流程

第 1 章 数据库原理

1.1 数据的分类

数据按照结构分为三类:结构化数据、半结构化数据、非结构化数据

  1. 结构化数据可以使用二维表逻辑表达;格式固定、长度有限,适合关系型数据库存储。 特点:以行为单位,一行代表一个实体;先定义结构,再录入数据。 示例:学生信息表。
  2. 半结构化数据介于结构化与非结构化中间,自描述结构,结构和数据混合在一起。 特点:先有数据,再有结构。 示例:JSON、XML、HTML、部分 NoSQL 数据库。
  3. 非结构化数据没有固定格式,无法用二维表表达,整体存储。 示例:音视频、图片、二进制文件。

1.2 数据管理发展历史

数据管理经历人工管理、文件系统、数据库系统三个阶段。

  1. 人工管理阶段(50 年代中期以前)计算机用于科学计算;存储只有磁带、纸带;无专门管理软件,批处理。
  2. 文件系统阶段(50 后期‑60 中期)磁盘出现,数据以文件形式长期保存;支持批处理 + 联机实时处理。
  • 优点:数据长期保存,有一定独立性。
  • 缺点:接口不统一、不支持并发访问、缺少安全控制;数据冗余高,数据之间关联弱。
  1. 数据库系统阶段(60 年代后期至今)大容量低价磁盘出现;通过 DBMS 数据库管理系统统一管理数据;高共享、低冗余、数据高独立性。

1.3 数据库、DBMS、DBA 概念

  1. 数据库 (Database):长期保存在计算机、有组织、可共享、统一管理的大量数据集合。
  2. DBMS 数据库管理系统:操纵、管理数据库的大型软件;负责建库、使用、维护,保障数据库安全性、完整性。
  3. DBA 数据库管理员:负责数据库全生命周期(设计、测试、部署、运维);目标保障系统稳定、安全、完整、高可用。
  4. 应用程序:调用数据库完成业务功能的软件。
DBMS 主要特点
  • 复杂数据模型,低冗余,支持数据共享;
  • 具备物理独立性、逻辑独立性;
  • 提供统一查询访问接口;
  • 数据和应用解耦;
  • 内置并发控制、备份恢复、完整性、安全性保障。
DBMS 七大基本功能
  1. 数据定义 DDL:定义数据库三级模式、约束;定义信息存放在数据字典。
  2. 数据操作 DML:实现数据增删改查。
  3. 数据组织、存储、管理:管理数据字典、用户数据,优化存取效率。
  4. 数据库运行管理:并发控制、安全权限、完整性校验、事务自动恢复,保障系统正常运行。
  5. 数据库维护:数据导入导出、转储、重组、性能监控。
  6. 数据库保护:恢复、并发控制、完整性控制、安全性控制。
  7. 通信:操作系统交互、网络环境下跨系统互操作。
DBMS 三代发展
  1. 层次数据库:树状结构,一对多关系;代表 IBM IMS。
  2. 网状数据库:网状模型,支持多对多关系。
  3. 关系型数据库 RDBMS:使用二维表格模型。

常见 RDBMS:Oracle、MySQL/MariaDB、SQL Server、PostgreSQL、DB2。

RDBMS 核心术语
  • 数据库:关联表的集合
  • 表 (table):矩阵,类似电子表格
  • 列 (column):同一类型数据集合
  • 行 (row / 元组):一条实体记录
  • 冗余:重复存储,牺牲性能换取安全性
  • 主键 primary key:唯一标识一行,一张表仅一个主键
  • 外键 foreign key:用于两张表之间关联
  • 复合键:多个列组成索引键
  • 索引 index:类似书籍目录,加速查询
  • 参照完整性:禁止引用不存在实体,保证数据一致性

1.4 关系型数据库理论

1.4.1 E‑R 实体联系模型

E‑R 图三要素:

  1. 实体 (Entity,矩形):现实客观事物;同类为实体集。
  2. 属性 (Attribute,椭圆):实体的特征。
  3. 联系 (Relationship,菱形):实体之间关联。
1.4.2 实体三种联系
  1. 一对一 (1:1):A 对应唯一 B,B 对应唯一 A。例:人‑身份证。
  2. 一对多 (1:n):一个 A 对应多个 B,一个 B 只属于一个 A。例:班级‑学生。
  3. 多对多 (m:n):A 多条对应 B 多条。例:学生‑课程;数据库需要中间关联表实现多对多。
1.4.3 CRUD

数据库基础操作:

表格

缩写英文含义SQL 关键字
CCreate新增INSERT
RRead查询SELECT
UUpdate更新UPDATE
DDelete删除DELETE
1.4.4 范式(数据库规范化)

范式目的:减少数据冗余,提升一致性,范式越高冗余越低。常用:1NF、2NF、3NF,开发一般满足3NF 即可。

  1. 1NF 第一范式:原子性,字段值不可再拆分;单元格只能存单个值,不能是列表。
  2. 2NF 第二范式:消除部分依赖(针对复合主键),所有非主键字段必须完全依赖整个主键,不能只依赖主键一部分。
  3. 3NF 第三范式:消除传递依赖,非主键字段不能互相依赖,不能间接推导。

范式升级规则:满足 3NF 必须先满足 2NF;满足 2NF 必须先满足 1NF。

1.4.5 SQL

SQL 结构化查询语言,关系数据库通用语言;数据库 C/S 架构,客户端发送 SQL 语句,服务端执行返回结果。


第 2 章 MySQL 安装和基本使用

2.1 MySQL 介绍

  1. 历史起源创始人 Monty Widenius;女儿名字 My,数据库命名 MySQL;孙女名字 Maria,衍生 MariaDB。
  • 时间线:1995 MySQL 发布 → 2008 Sun 10 亿美金收购 MySQL → 2009 Oracle 收购 Sun,MySQL 归 Oracle。
  • 重要版本节点:
    • MySQL4.0:集成 InnoDB 引擎
    • MySQL5.0:存储过程、触发器、视图
    • MySQL5.5:InnoDB 成为默认存储引擎
    • MySQL5.7:大规模性能优化
    • MySQL8.0:字符集默认utf8mb4。
  1. MySQL 三大分支 1)官方 MySQL:Oracle 维护; 2)MariaDB:Monty 创建,社区驱动,高度兼容 MySQL; 3)Percona Server:Percona 公司,XtraDB 引擎,侧重性能、诊断、在线备份。
  2. MySQL 特性
  • 开源协议,可二次开发;
  • 标准 SQL 支持,跨平台,多编程语言驱动;
  • 插件式存储引擎,按需选择引擎;
  • 单进程多线程模型。

2.2 MySQL 多实例

一台服务器运行多套 MySQL 服务,不同实例监听不同端口(3306、3307、3308),各自独立配置与数据。

  • ✅优点:节约硬件、便于测试对比、集中管理备份。
  • ❌缺点:资源互相抢占;主机宕机全部实例不可用,存在单点风险。 部署:可使用相同 MySQL 二进制版本,也可不同版本。

2.3 MySQL 组成与常用工具

MySQL 是 C/S 架构,分为服务端、客户端、配套工具。

服务端程序
  1. mysqld:MySQL 核心服务程序。
  2. mysqld_safe:安全启动脚本。
  3. mysqld_multi:多实例管理工具。
客户端与工具
  1. mysql:交互式 CLI 命令行客户端。
  2. mysqldump:逻辑备份工具。
  3. mysqladmin:服务管理工具。
  4. mysqlimport:数据导入。
  5. myisamchk /myisampack:MyISAM 引擎专用工具。
配置文件
  • 主配置:/etc/my.cnf;包含!includedir /etc/my.cnf.d引入子配置目录
  • /etc/my.cnf.d/:拆分配置,client.cnf 客户端、mysql‑server.cnf 服务端配置。
  • 配置读取优先级:/etc/my.cnf→/etc/mysql/my.cnf→ 用户家目录~/.my.cnf。

2.4 mysql 客户端使用

2.4.1 mysql 命令常用选项
mysql -u用户名 -p密码 -h主机IP -P端口 -Ssocket文件 -D数据库名
  • -e "sql语句":非交互式,执行 SQL 直接退出;适合脚本调用。
  • -E:垂直展示结果;‑H输出 html;‑X输出 xml。
  • ‑‑prompt修改命令提示符。
2.4.2 mysql 内交互命令(客户端本地命令,反斜杠 \ 开头)
\? 帮助 \c 清空当前输入 \r 重连 \d 修改语句结束符 \G 垂直输出结果 \q / exit 退出 \. source 执行sql脚本 \s 查看服务器状态信息 \! 执行操作系统shell命令 use 数据库名 切换数据库 tee / notee 开启/关闭输出保存到文件

区分:客户端命令(本地执行) vs SQL 服务端命令(发给 mysqld 服务端执行,分号;结尾)。help contents可以查看服务端 SQL 帮助目录。

2.5 mysqladmin 管理工具

mysqladmin 是本地管理 mysqld 服务的工具,常用功能:

  1. mysqladmin version:查看客户端 + 服务端版本。
  2. mysqladmin status / extended‑status:查看运行状态。
  3. mysqladmin create / drop 库名:创建、删除数据库。
  4. mysqladmin password 新密码:修改 root 密码。
  5. mysqladmin shutdown:关闭 MySQL 服务(不能启动)。
  6. mysqladmin processlist:查看会话线程。
  7. mysqladmin ping:检测数据库服务是否存活。
  8. flush‑privileges(reload):刷新权限。

2.6 mycli(第三方增强客户端)

python 开发,语法高亮、自动补全;pip 安装,增强体验。


第 3 章 SQL 语言

3.1 数据库对象

数据库包含多种对象:database 数据库、table 表、index 索引、view 视图、procedure 存储过程、function 存储函数、trigger 触发器、event 事件调度器、user 用户、权限。

3.2 SQL 发展历史

1970 年 Codd 提出关系模型;1974 诞生 SEQUEL,后续改名 SQL;1986 ANSI 标准化 SQL;后续迭代 SQL‑89、SQL‑92、SQL‑1999 等版本。

各数据库不完全 100% 标准兼容;Oracle 有 PL/SQL,SQL Server 有 T‑SQL 方言。

3.3 SQL 书写规范

  1. SQL 关键字不区分大小写;库名、表名在 Linux 下区分大小写。
  2. 默认以分号;作为语句结束符;支持跨行写。
  3. 注释:
-- 单行注释 /* 多行注释 */ # mysql风格单行注释

3.4 SQL 语句五大分类(完整定义、关键字 + 示例)

表格

分类全称作用关键字
DDL数据定义语言 Data Definition Language定义 / 修改 / 删除数据库对象的结构(库、表、索引、视图等,不操作表里行数据)CREATE、ALTER、DROP
DML数据操纵语言 Data Manipulation Language操作表内部的行记录数据,增、删、改表数据,不修改表结构INSERT、DELETE、UPDATE
DQL数据查询语言 Data Query Language查询表数据,不会修改库和数据,使用频率最高SELECT
DCL数据控制语言 Data Control Language用户权限管理,授权、回收权限GRANT、REVOKE
TCL事务控制语言 Transaction Control Language管理事务,保证数据一致性,提交、回滚事务BEGIN、COMMIT、ROLLBACK、SAVEPOINT

重要区分:

  1. DDL:改结构(库、表长什么样);执行会隐式提交事务,DDL 执行完事务自动提交,不能 rollback 回滚 DDL 操作。
  2. DML:改表里的行数据;InnoDB 引擎下 DML 可以被事务控制,可以回滚。
  3. DQL:只查不改。
  4. DCL:管账号权限。
  5. TCL:专门管事务。
① DDL 数据定义语言(操作对象结构:库、表、索引、视图)

⚠️注意:DDL 执行会隐式提交事务,执行完不能回滚!谨慎执行 drop!

-- 1. CREATE 创建对象 CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARACTER SET utf8mb4; CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT ); CREATE INDEX idx_stu_name ON student(name); CREATE VIEW v_student AS SELECT id,name FROM student; -- 2. ALTER 修改对象结构 ALTER DATABASE testdb CHARACTER SET utf8mb4; ALTER TABLE student ADD COLUMN gender CHAR(1); ALTER TABLE student MODIFY COLUMN age TINYINT; ALTER TABLE student CHANGE COLUMN gender sex CHAR(1); ALTER TABLE student DROP COLUMN sex; ALTER TABLE student RENAME TO stu; --3. DROP 删除对象,数据彻底丢失 DROP DATABASE IF EXISTS testdb; DROP TABLE IF EXISTS student; DROP INDEX idx_stu_name ON student; DROP VIEW IF EXISTS v_student;
② DML 数据操纵语言(操作表行记录,增删改)

InnoDB 引擎,DML 支持事务,可以 COMMIT 提交 / ROLLBACK 回滚;不修改表结构。

-- INSERT 插入数据 INSERT INTO student(name,age) VALUES ('张三',18); INSERT INTO student(name,age) VALUES ('李四',19),('王五',20); -- UPDATE 更新,⚠️不加WHERE更新全表 UPDATE student SET age=22 WHERE id=1; -- DELETE 删除行,⚠️不加WHERE删除全表 DELETE FROM student WHERE id=2; DELETE FROM student;

补充:TRUNCATE TABLE student属于 DDL,清空全表,重建表,隐式提交,不可回滚,速度快于 delete。

③ DQL 数据查询语言 SELECT(只读查询)
SELECT [字段|*] FROM 表名 [WHERE 行过滤] [GROUP BY 分组] [HAVING 分组后过滤] [ORDER BY 排序] [LIMIT 行数]; --示例 SELECT * FROM student; SELECT id,name FROM student WHERE age>18; SELECT age,COUNT(*) FROM student GROUP BY age HAVING COUNT(*)>1; SELECT * FROM student ORDER BY age DESC LIMIT 2;

WHERE:分组之前过滤原始行;HAVING:GROUP BY之后过滤分组结果。

④ DCL 数据控制语言(权限管理)
-- GRANT授予权限 GRANT SELECT,INSERT ON testdb.* TO 'user1'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'Admin@123'; -- REVOKE回收权限 REVOKE INSERT ON testdb.* FROM 'user1'@'localhost'; REVOKE ALL PRIVILEGES ON *.* FROM 'admin'@'%'; FLUSH PRIVILEGES; --刷新权限生效 --删除用户属于DDL:DROP USER 'user1'@'localhost';
⑤ TCL 事务控制语言(仅 InnoDB 支持,MyISAM 不支持事务)

表格

关键字作用
BEGIN/START TRANSACTION开启事务
COMMIT提交事务,修改永久生效,不可回滚
ROLLBACK回滚整个事务,撤销全部未提交 DML
SAVEPOINT 名字事务内创建保存点
ROLLBACK TO SAVEPOINT 名字回滚到指定保存点,之前操作保留
--普通事务示例 BEGIN; INSERT INTO student(name,age) VALUES ('小明',17); UPDATE student SET age=18 WHERE name='小明'; COMMIT; --提交;或者 ROLLBACK;回滚全部操作 --保存点局部回滚 BEGIN; INSERT INTO student(name,age) VALUES ('A',16); SAVEPOINT sp1; INSERT INTO student(name,age) VALUES ('B',17); SAVEPOINT sp2; INSERT INTO student(name,age) VALUES ('C',18); ROLLBACK TO SAVEPOINT sp2; --撤销C,保留A、B COMMIT; --查看自动提交开关 SHOW VARIABLES LIKE 'autocommit';

重要:DDL 会触发隐式COMMIT;MyISAM 引擎不支持事务。

3.5 字符集与排序规则 collation

  1. MySQL8.0 默认字符集:utf8mb4,完整支持 4 字节 Unicode(包含全部 emoji 表情)。旧版本默认 latin1。
  2. 字符集:定义文字怎么二进制存储。
  3. 排序规则 collation:定义字符的比较、排序规则,依附字符集。

查看命令:

show charset; --查看全部支持字符集 show collation; --查看排序规则 show variables like 'character%'; --查看当前系统字符集变量

配置文件my.cnf.d/mysql‑server.cnf修改character‑set‑server修改服务端默认字符集。

3.6 SQL 帮助系统

help contents; --查看全部帮助分类 help Data Definition; --查看DDL分类帮助 help CREATE DATABASE; --查看具体语法帮助

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询