第一部分:MySQL 数据库
1 数据库介绍
1.1 什么是数据库
-
数据:描述事物的符号记录,可以是数字、文字、图形、图像、声音、语言等,经过数字化后可存入计算机。
-
数据库:存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按特定数据模型组织、描述和存储,核心特点包括:
-
数据结构化
-
共享性高、冗余度低、易扩充
-
数据独立性高
-
由 DBMS 统一管理和控制(涵盖安全性、完整性、并发控制、故障恢复等)
-
1.2 什么是数据库管理系统
数据库系统成熟的标志是数据库管理系统的出现,其核心定义与功能如下:
-
全称:DataBase Management System(简称 DBMS)
-
本质:管理数据库的专用软件,充当所有数据的知识库,负责数据的存储、安全、一致性、并发操作、恢复和访问。
-
核心价值:
-
实现数据的快速检索和维护;
-
保障数据的安全性、完整性、并发控制和数据恢复;
-
内置数据字典(又称系统表),存储元数据(关于数据的数据,如数据的名字、结构、位置和类型)。
-
1.3 常见数据库分类
数据库主要分为关系型数据库和非关系型数据库(NoSQL)两大类,具体说明如下:
1.3.1 关系型数据库
-
核心定义:建立在关系模型基础上的数据库,借助集合代数等数学概念处理数据。现实世界中的实体及实体间联系均通过关系模型表示,本质是由多张可互相联接的二维行列表格组成。
-
关系模型:即二维表格模型,关系型数据库由二维表及表间联系构成数据组织。
-
主流产品:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB、武汉达梦、南大通用、人大金仓等。
-
设计工具:实体关系模型(E-R 模型),通过实体 - 关系图表示数据库概念设计,助力设计构思与沟通。
1.3.2 非关系型数据库
- 核心定义:又称 NoSQL(Not Only SQL),意为 "不仅仅是 SQL",是轻量、开源、不兼容 SQL 功能的数据库。最普遍定义是 "非关联型",核心强调 Key-Value 存储和文档数据库的优点,而非单纯反对 RDBMS(关系型数据库管理系统)。
2 MySQL 服务器部署
在 Linux 系统 中通过 官方 YUM 仓库 部署 MySQL 8.4 LTS 版本的完整流程,包含下载、安装、验证、卸载清理全步骤。
2.0 安装前说明
-
安装环境:Linux(CentOS/RHEL/Rocky 9 系列)
-
安装方式:官方 YUM 仓库在线安装(最稳定、最推荐)
-
安装版本:MySQL 8.4.3 LTS(长期支持版)
-
官方下载地址:MySQL 官网
2.1 官方下载页面导航
-
打开 MySQL 官方首页
-
找到顶部导航栏 【DOWNLOADS】 选项卡,进入下载页面
-
在下载页面中选择 【MySQL Community (GPL) Downloads】(社区免费版)
-
社区版页面提供三种安装方式:
-
MySQL Yum Repository:YUM 在线仓库安装
-
MySQL Community Server:二进制 / 源码手动安装
-
MySQL Installer for Windows:Windows 老版本安装工具
-
2.2 配置 MySQL YUM 在线仓库
2.2.1 下载并安装官方 YUM 仓库
我们直接在 Linux 系统中使用 wget / rpm 命令安装官方仓库,无需手动下载上传。
执行以下命令安装 MySQL 8.4 官方 YUM 源:
# 下载仓库安装包
wget https://repo.mysql.com/mysql84-community-release-el9-1.noarch.rpm
# RPM 方式安装仓库(二选一执行即可,推荐直接 rpm 安装)
rpm -i mysql84-community-release-el9-1.noarch.rpm
# 或者直接通过网络链接安装(无需提前下载)
rpm -i https://repo.mysql.com/mysql84-community-release-el9-1.noarch.rpm
安装过程可能出现密钥提示,属于正常现象:
warning: /var/tmp/rpm-tmp.QsZluK: Header V4 RSA/SHA256 Signature, key ID a8d3785c: NOKEY
2.2.2 验证仓库是否安装成功
安装完成后,查看系统可用仓库,确认 MySQL 仓库已添加:
dnf repolist
出现以下仓库即表示成功:
mysql-8.4-lts-community MySQL 8.4 LTS Community Server
mysql-connectors-community MySQL Connectors Community
mysql-tools-8.4-lts-community MySQL Tools 8.4 LTS Community
2.3 安装 MySQL 8.4 服务器
使用 dnf 命令直接安装 MySQL 服务器包,系统会自动解决依赖。
dnf install mysql-server -y
2.3.1 安装过程说明
执行后系统会自动:
-
下载
mysql-community-server主程序 -
自动安装依赖包(client、libs、plugins、common 等)
-
导入 MySQL 官方 GPG 密钥
-
完成完整安装
典型安装日志如下:
Dependencies resolved.
Install 6 Packages
Total download size: 59 M
Installed size: 330 M
Importing GPG key 0xA8D3785C:
Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
Installed:
mysql-community-server
mysql-community-client
mysql-community-client-plugins
mysql-community-common
mysql-community-icu-data-files
mysql-community-libs
Complete!
安装完成!当前版本:MySQL 8.4.3-1.el9
2.4 MySQL 卸载与完全清理
如果需要重装、更换版本,可执行以下命令彻底清理 MySQL,不留残留文件。
# 1. 卸载 mysql-server
dnf remove mysql-server -y
# 2. 删除数据目录
rm -rf /var/lib/mysql
# 3. 删除日志文件
rm -rf /var/log/mysqld.log
# 4. 删除 mysql 用户及残留文件
userdel -r mysql
执行后可能出现提示:
userdel: mysql mail spool (/var/spool/mail/mysql) not found
userdel: mysql home directory (/var/lib/mysql) not found
属于正常现象,不影响清理结果。
2.5 二进制本地安装(RPM Bundle 方式)
二进制本地安装适用于无网络环境或需精准控制安装包版本的场景,通过下载官方 RPM 捆绑包,本地解压后安装,步骤如下:
2.5.1 安装前清理(可选,避免冲突)
若之前安装过 MySQL 相关组件,先执行清理操作:
# 卸载已安装的 MySQL 服务
dnf remove mysql-server -y
# 删除数据目录
rm -rf /var/lib/mysql
# 删除日志文件
rm -rf /var/log/mysqld.log
# 删除 MySQL 用户
userdel -r mysql
注:执行
userdel时若提示 "目录不存在",属于正常现象,不影响清理效果。
2.5.2 下载 RPM 捆绑包
-
导航至 MySQL 官方下载页面:
- 进入 MySQL 官网 → 【DOWNLOADS】→ 【MySQL Community (GPL) Downloads】→ 【MySQL Community Server】
-
选择下载类型:
- 在下载列表中找到【RPM Bundle】选项(对应系统版本:el9.x86_64),点击【Download】进入确认页面
-
下载安装包:
-
方式 1:浏览器下载后上传至 Linux 服务器
-
方式 2:Linux 系统中直接用
wget命令下载(推荐):wget https://cdn.mysql.com/Downloads/MySQL-8.4/mysql-8.4.3-1.el9.x86_64.rpm-bundle.tar
-
提示:文档中部分下载链接因时效问题可能出现 "link dead" 报错,可前往 MySQL 官网获取最新 RPM Bundle 下载地址。
2.5.3 解压 RPM 捆绑包
下载完成后,执行解压命令,查看包含的所有 RPM 组件:
# 解压 tar 包(无需指定解压目录,直接解压到当前目录)
tar xf mysql-8.4.3-1.el9.x86_64.rpm-bundle.tar
# 查看解压后的 RPM 文件
ll mysql-*
解压后会生成多个 RPM 包,核心组件包括:
-
mysql-community-server-8.4.3-1.el9.x86_64.rpm(服务端主程序) -
mysql-community-client-8.4.3-1.el9.x86_64.rpm(客户端工具) -
mysql-community-libs-8.4.3-1.el9.x86_64.rpm(依赖库) -
mysql-community-common-8.4.3-1.el9.x86_64.rpm(公共组件) -
其他辅助组件(如 debug 包、devel 包,按需安装)
2.5.4 本地安装 MySQL 组件
使用 dnf localinstall 命令安装核心服务端组件(自动解决依赖关系):
# 安装服务端主程序(会自动安装所需依赖组件)
dnf localinstall mysql-community-server-8.4.3-1.el9.x86_64.rpm -y
2.5.5 安装过程说明
执行命令后,系统会自动:
-
解析依赖(客户端、libs、common 等组件)
-
下载缺失的依赖包(约 8.9MB)
-
验证并安装所有组件,最终安装 6 个核心包,总安装大小约 330MB
-
安装完成后提示
Complete!,表示 MySQL 服务端已安装成功
2.6 容器平台安装(Docker 方式)
通过 Docker 容器安装 MySQL,无需复杂环境配置,隔离性强、部署快速,步骤如下:
2.6.1 安装前清理(可选)
清理旧版 Docker 或 MySQL 残留:
# 卸载旧版 Docker 相关组件
dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc -y
# 清理 MySQL 残留(同 2.2.1 步骤)
dnf remove mysql-server -y
rm -rf /var/lib/mysql /var/log/mysqld.log
userdel -r mysql
2.6.2 配置 Docker YUM 仓库
-
安装 Docker 依赖工具:
dnf -y install dnf-plugins-core -
添加 Docker 官方 YUM 仓库:
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo仓库配置详情(来自文档内置配置):
[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://download.docker.com/linux/rhel/$releasever/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://download.docker.com/linux/rhel/gpg [docker-ce-stable-source] name=Docker CE Stable - Sources baseurl=https://download.docker.com/linux/rhel/$releasever/source/stable enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/rhel/gpg [docker-ce-test] name=Docker CE Test - $basearch baseurl=https://download.docker.com/linux/rhel/$releasever/$basearch/test enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/rhel/gpg
2.6.3 安装 Docker 相关组件
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
安装完成后,会自动部署 10 个组件,包括:
-
docker-ce(Docker 引擎核心) -
docker-ce-cli(Docker 命令行工具) -
containerd.io(容器运行时) -
其他辅助插件(buildx、compose 等)
2.6.4 启动 Docker 服务
# 设置 Docker 开机自启并立即启动
systemctl enable --now docker
验证 Docker 状态:
systemctl status docker
显示 active (running) 表示启动成功。
2.6.5 拉取 MySQL 8.4.3 镜像
# 拉取指定版本的 MySQL 镜像(8.4.3)
docker pull mysql:8.4.3
拉取完成后,查看镜像:
docker images
会显示 mysql:8.4.3 镜像,大小约 594MB。
2.6.6 启动 MySQL 容器
# 创建并启动 MySQL 容器
# --name:容器名称(mysqltest)
# -e MYSQL_ROOT_PASSWORD:设置 root 密码(123456)
# -d:后台运行容器
docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.4.3
2.6.7 验证容器与 MySQL 服务
-
查看运行中的容器:
docker ps会显示容器 ID、镜像名称、状态(Up 表示运行中)。
-
进入容器并登录 MySQL:
# 进入容器终端(交互式) docker exec -it mysqltest /bin/bash # 登录 MySQL(输入设置的密码 123456) mysql -uroot -p -
测试 MySQL 功能:
-- 查看 MySQL 版本 select version(); -- 查看默认数据库 show databases;正常输出版本号(8.4.3)和默认数据库列表,说明安装成功。
2.6.8 容器与镜像管理(可选)
-
停止并删除容器:
# 停止容器 docker stop mysqltest # 删除容器 docker rm mysqltest -
镜像导出与导入(无网络环境可用):
# 导出镜像为本地文件(MySQL843.tar) docker save -o MySQL843.tar mysql:8.4.3 # 导入本地镜像文件 docker load -i MySQL843.tar
三种安装方式对比总结
| 安装方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| YUM 在线仓库 | 自动解决依赖、安装简单、易升级 | 依赖网络、版本受仓库限制 | 有网络环境、快速部署 |
| 二进制本地(RPM Bundle) | 无网络依赖、版本精准控制 | 需手动解压、依赖需手动处理 | 无网络环境、定制化安装 |
| Docker 容器 | 环境隔离、部署快速、无冲突 | 依赖 Docker 环境、性能略有损耗 | 开发 / 测试环境、快速迭代 |
2.7 MySQL 源码部署
源码部署适合需要高度定制化、优化编译、无网络环境的场景,编译过程较长,但可灵活控制功能与路径。环境:Linux EL9 系统,MySQL 8.4.3 源码版本。
2.7.1 下载源码包
进入 MySQL 官网下载页面,选择 Source Code 下载。也可直接在 Linux 使用 wget 下载:
wget https://cdn.mysql.com/Downloads/MySQL-8.4/mysql-8.4.3.tar.gz
2.7.2 安装前环境清理
dnf remove mysql-server -y
rm -rf /var/lib/mysql
rm -rf /var/log/mysqld.log
userdel -r mysql
2.7.3 创建目录并移动源码
mkdir /mysql
mv mysql-8.4.3.tar.gz /mysql
cd /mysql
ll
2.7.4 解压源码
tar xf mysql-8.4.3.tar.gz
cd mysql-8.4.3
pwd
2.7.5 创建专用用户与权限
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chmod 777 /mysql/ -R
2.7.6 安装编译依赖
dnf install cmake openssl-devel ncurses-devel rpcgen gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils -y
安装额外依赖包:
rpm -i https://yum.oracle.com/repo/OracleLinux/OL9/codeready/builder/x86_64/getPackage/libtirpc-devel-1.3.3-9.el9.x86_64.rpm
2.7.7 创建编译目录并编译
mkdir bld
cd bld
cmake ..
make
make install
编译时间较长,耐心等待。
2.7.8 初始化 MySQL
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql
记住输出的临时密码,例如:
A temporary password is generated for root@localhost: H2!Yga+&rtiz
2.7.9 启动 MySQL
bin/mysqld_safe --user=mysql &
2.7.10 登录并修改密码
mysql -S /tmp/mysql.sock -uroot -p
输入临时密码后必须修改密码才能使用:
alter user 'root'@'localhost' identified by 'redhat';
show databases;
2.7.11 源码卸载清理
make clean
rm -rf /usr/local/mysql/
2.8 Windows 平台安装 MySQL
2.8.1 服务端安装
-
官网下载 MySQL Windows 安装包
-
双击运行,选择 Typical 典型安装
-
点击 Install 开始安装
-
安装完成后启动 MySQL Configurator
-
一路默认,设置 root 密码
-
执行配置,完成安装
2.8.2 命令行测试
打开 MySQL 命令行客户端:
select version();
show databases;
2.8.3 图形客户端(MySQL Workbench)
安装:mysql-workbench-community-8.0.40-winx64
解决字符集报错
进入目录:
C:\Program Files\MySQL\MySQL Workbench 8.0\workbench
编辑 os_utils.py找到第 356 行 ,将 utf-8 改为 gbk,保存。
2.8.4 Windows 环境变量配置
-
此电脑 → 属性 → 高级系统设置 → 环境变量
-
系统变量 → Path → 编辑
-
新建路径:
C:\Program Files\MySQL\MySQL Server 8.4\bin
-
确定保存,重启 cmd 即可使用
mysql命令。
2.8.5 Windows 卸载清理
-
控制面板 → 卸载 MySQL
-
删除以下目录:
C:\Program Files\MySQL
C:\ProgramData\MySQL
C:\Users\用户\AppData\Roaming\MySQL -
删除注册表项:

HKEY_CURRENT_USER\Software\MySQL
HKEY_CURRENT_USER\Software\MySQL AB
HKEY_CURRENT_USER\Software\Oracle\MySQL Workbench
HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB
3、SQL 语句基础
3.1 SQL 简介
SQL(Structured Query Language) :结构化查询语言,是基于关系模型的数据库标准操作语言。
SQL 发展历史
-
起源于 20 世纪 70 年代 ,由 IBM 研究员 E.F. Codd 提出关系模型
-
最初作为 IBM 关系数据库原型 System R 的关系语言,实现数据检索
-
1986 年 :ANSI(美国国家标准学会)发布第一个 SQL 标准 SQL-86
-
后续被 ISO(国际标准化组织)采纳为国际标准
-
标准持续演进:SQL-89 → SQL-92 → SQL:2016 → 最新标准
-
从基础数据操作逐步扩展到复杂事务、面向对象、分布式等高级功能
SQL 核心作用
-
定义数据库结构
-
增删改查数据
-
管理用户权限
-
控制数据库安全与事务
3.2 SQL 语句分类
SQL 语言功能强大,仅用 9 个核心动词即可完成数据库几乎所有操作。
| 分类 | 英文全称 | 功能说明 | 核心动词 |
|---|---|---|---|
| DDL | 数据定义语言 | 定义 / 删除 / 修改数据库、表、索引等对象 | CREATE、DROP、ALTER |
| DML | 数据操纵语言 | 对表数据进行增、删、改 | INSERT、DELETE、UPDATE |
| DQL | 数据查询语言 | 从表中查询 / 检索数据 | SELECT |
| DCL | 数据控制语言 | 管理用户权限、访问控制 | GRANT、REVOKE |
动词说明
-
CREATE:创建库、表、视图等 -
DROP:删除库、表等 -
ALTER:修改表结构 -
INSERT:插入数据 -
DELETE:删除数据 -
UPDATE:更新数据 -
SELECT:查询数据(最常用) -
GRANT:授予权限 -
REVOKE:收回权限
3.3 SQL 语言的特点
SQL 是一门简洁、高效、通用的数据库语言,具备五大特点:
-
综合统一一套语法完成数据库全生命周期操作:定义 → 操纵 → 查询 → 权限控制。
-
高度非过程化 只需告诉数据库 "做什么" ,无需关心 "怎么做",由数据库自动优化执行。
-
面向集合 以数据集合为单位操作,一次性处理多行数据,结果也是集合。
-
两种使用方式
-
直接交互式使用(独立语言)
-
嵌入 Java/Python/PHP 等语言中使用(嵌入式)
-
-
语言简洁、易学易用语法接近自然英语,无编程经验也可快速上手。
3.4 SQL 语句书写规范
为保证代码可读性、规范性、可维护性,必须遵守以下规则:
基本规范
-
SQL 关键字建议大写:SELECT、FROM、WHERE、INSERT 等
-
库名、表名、字段名建议小写
-
必须使用 英文半角符号(逗号、括号、分号等)
-
适当使用空格、缩进,提高可读性
-
必须添加注释,方便理解
3.5 MySQL 注释语法(三种)
MySQL 支持三种注释方式,必须掌握。
1)# 单行注释
# 这是单行注释
SELECT * FROM user;
2)-- 单行注释(注意后面必须加空格)
-- 这是另一种单行注释
SELECT * FROM product;
3)/* */ 多行注释
/*
这是多行注释
可以写多行内容
*/
SELECT * FROM orders;
3.6 权限语句示例(DCL)
-- 给 user1 用户授予 Teach 库下 Student 表的查询权限
GRANT SELECT ON Teach.Student TO user1;
-- 收回 user1 用户的查询权限
REVOKE SELECT ON Teach.Student FROM user1;