MySQL简介
MySQL 是一种开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理。MySQL因其高性能、可靠性以及易用性而被广泛应用于各种规模的应用程序中,从小型项目到大型企业级应用。它是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈中的关键组件之一。
主要特性
- 易于使用:MySQL提供了直观的命令行工具和多种图形界面工具来管理和操作数据库。
- 支持多种存储引擎:如InnoDB(默认)、MyISAM等,不同的存储引擎提供不同的功能和优化。
- 可扩展性强:可以轻松地通过增加硬件资源或分布式部署来扩展性能。
- 安全性高:提供了一系列的安全措施,包括用户认证、权限控制等。
- 跨平台支持:可以在多种操作系统上运行,包括Windows、Linux、macOS等。
MySQL安装与配置教程
以下是将 MySQL 安装目录和数据目录都指定到 F 盘 的详细安装与配置教程(适用于 Windows 系统,以 MySQL 9.6为例)。
📌 目标
- 安装路径 :
F:\MySQL\MySQL80 - 数据目录 :
F:\MySQL\Data
✅ 这样做便于管理、备份,也避免 C 盘空间不足的问题。
第一步:下载 MySQL
- 打开 MySQL 官网下载页
- 选择 "MySQL Community (GPL) Downloads"
- 下载 Windows (x86, 64-bit), ZIP Archive (推荐使用 ZIP 版本,更灵活控制安装路径)
❗不要下载 MSI 安装版(它默认强制装在 C 盘,自定义路径受限)
第二步:解压并放置到 F 盘
-
将下载的 ZIP 文件(如
mysql-8.0.xx-winx64.zip)解压到:F:\MySQL\MySQL96(你可以重命名文件夹为
MySQL80或其他你喜欢的名字) -
最终目录结构应类似:
F:\MySQL\MySQL96\ ├── bin\ ├── docs\ ├── include\ ├── lib\ └── ...
第三步:创建数据目录
手动创建数据存储目录:
F:\MySQL\Data
⚠️ 此目录必须为空,MySQL 初始化时会自动写入系统表。
第四步:配置 my.ini 文件
-
在
F:\MySQL\MySQL96目录下新建一个文本文件,命名为:my.ini -
编辑
my.ini,填入以下内容(根据你的路径调整):[mysqld]
设置 MySQL 安装目录
basedir=F:/MySQL/MySQL96
设置数据目录
datadir=F:/MySQL/Data
设置端口(默认3306)
port=3306
设置字符集(推荐 utf8mb4)
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci默认存储引擎
default-storage-engine=INNODB
允许本地网络连接(可选)
bind-address=0.0.0.0
[mysql]
default-character-set=utf8mb4[client]
port=3306
default-character-set=utf8mb4
💡 注意:路径使用正斜杠
/或双反斜杠\\,避免单反斜杠\(会被转义)。
第五步:初始化 MySQL 数据目录
-
以 管理员身份 打开命令提示符(CMD)或 PowerShell。
-
进入 MySQL 的 bin 目录:
cd F:\MySQL\MySQL96\bin -
执行初始化命令(会生成 root 临时密码):
mysqld --initialize --console -
查看输出,找到类似这样的行:
[System] [MY-013169] ... generated password: >aB3$#kL9pQr👉 记下这个临时密码,首次登录要用。
✅ 初始化成功后,
F:\MySQL\Data目录中会出现ibdata1、mysql、sys等文件和文件夹。
第六步:安装 MySQL 为 Windows 服务
仍在 bin 目录下,执行:
mysqld --install MySQL96 --defaults-file="F:\MySQL\MySQL96\my.ini"
MySQL80是服务名称,可自定义(如MyMySQL)--defaults-file指定配置文件路径(非常重要!)
如果看到:
Service successfully installed.
说明服务注册成功。
第七步:启动 MySQL 服务
net start MySQL96
如果启动失败,请检查:
my.ini路径是否正确Data目录是否为空(初始化前必须为空)- 是否以管理员身份运行 CMD

第八步:首次登录并修改密码
-
登录 MySQL:
mysql -u root -p输入前面记录的临时密码。
-
修改 root 密码(MySQL 9.6 必须先改密码才能操作):
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';密码需满足默认策略(至少8位,含大小写+数字+特殊字符),如
MyPass123! -
退出:
EXIT;
第九步(可选):配置环境变量(方便全局使用)
-
打开 系统属性sysdm.cpl → 高级 → 环境变量
-
在 系统变量 中找到
Path,点击"编辑" -
添加:
F:\MySQL\MySQL96\bin -
保存后,即可在任意 CMD 中直接使用
mysql、mysqld命令。
✅ 验证安装成功
mysql -u root -p
输入你设置的新密码,若能进入 mysql> 提示符,说明一切正常!
🔧 后续建议
- 备份 :定期备份
F:\MySQL\Data目录(或使用mysqldump) - 防火墙:如需远程访问,记得在 Windows 防火墙中放行 3306 端口
- 卸载 :若要卸载,先执行
net stop MySQL96,再mysqld --remove MySQL96,最后删除 F:\MySQL 整个文件夹
| 组件 | 是否包含在 ZIP Archive 中 | 说明 |
|---|---|---|
| MySQL Server | ✅ 是 | 核心数据库服务(mysqld.exe) |
| 命令行客户端(mysql.exe) | ✅ 是 | 用于终端操作数据库 |
| MySQL Workbench | ❌ 否 | 图形化管理工具(需单独下载) |
如何获取 MySQL Workbench?(安装图片暴击!)
- 打开 MySQL Workbench 官方下载页
https://dev.mysql.com/downloads/workbench/ - 选择你的操作系统(Windows、macOS、Linux)
- 下载安装程序(Windows 通常是
.msi文件) - 安装时可自定义路径(比如也装到
F:\MySQL\Workbench)
💡 Workbench 是独立软件,即使你用 ZIP 方式安装了 MySQL Server,也可以正常连接它。






创建本地连接测试


MySQL Workbench创建示例:


MySQL 最基础的 DDL(数据定义语言)和 DML(数据操作语言)操作
语法解释:
- 主键自动递增(
AUTO_INCREMENT) - 字段默认值(
DEFAULT) - 安全更新模式控制(
SET SQL_SAFE_UPDATES = 0) - 多字段排序(
ORDER BY score, student_id) - 显式插入部分字段(利用默认值和自增)
UPDATE和DELETE操作
一、数据库管理
1. 创建数据库
CREATE DATABASE `sql_tutorial`;
- 创建一个名为
sql_tutorial的数据库。 - 使用反引号 ````` 避免关键字冲突。
2. (演示)创建并立即删除一个不推荐的数据库名
CREATE DATABASE `database`; -- ❌ 'database' 是保留字,不建议使用
SHOW DATABASES; -- 查看所有数据库
DROP DATABASE `database`; -- 删除它
3. 切换到目标数据库
USE `sql_tutorial`;
- 后续所有操作都在
sql_tutorial中进行。
二、创建学生表(增强版)
4. 关闭安全更新模式(为后续 UPDATE/DELETE 做准备)
SET SQL_SAFE_UPDATES = 0;
- 作用 :允许不带
WHERE条件或不使用主键的UPDATE/DELETE(开发环境常用)。 - ⚠️ 生产环境中应保持
SQL_SAFE_UPDATES = 1(默认),防止误删全表。
5. 创建 student 表(关键改进!)
CREATE TABLE `student`(
`student_id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20),
`major` VARCHAR(20) DEFAULT 'history',
`score` INT
);
✨ 特性说明:
| 特性 | 说明 |
|---|---|
AUTO_INCREMENT |
主键自动递增,插入时可省略该字段 |
DEFAULT 'history' |
若未指定专业,默认为 'history' |
score INT |
新增成绩字段,用于排序和筛选 |
💡 这是现代数据库设计的常见实践:主键自增 + 默认值 = 更灵活的数据插入
三、查看表结构与数据
6. 查询所有学生(按成绩和ID排序)
SELECT * FROM `student` ORDER BY `score`, `student_id`;
- 排序规则 :
- 先按
score升序(从小到大) - 成绩相同时,按
student_id升序
- 先按
- 初始无数据,返回空结果。
7. 查看表结构
DESCRIBE `student`;
-- 或 DESC `student`;
- 输出将显示
student_id有PRI(主键)和auto_increment标记,major有默认值。
四、插入数据(多种方式)
表已支持自增和默认值,因此可以只插入部分字段!
8. 插入完整数据(显式指定 ID)
INSERT INTO `student` VALUES (1, "Ama", "music", NULL);
-- 注意:需补全所有字段,包括 score(此处为 NULL)
⚠️ 此写法不推荐!因为依赖字段顺序,且必须提供全部值。
9. 推荐写法:只插入需要的字段(利用自增和默认值)
-- 自动分配 student_id,major 使用默认值 'history'
INSERT INTO `student` (`name`, `score`) VALUES ('ama_tor2', 69);
-- 指定 name、major、score,student_id 自动增长
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor1', '英语', 90);
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor3', '物理', 60);
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor4', '化学', 80);
✅ 优势:
- 不用管
student_id - 如果漏掉
major,会自动填'history' - 代码更清晰、不易出错
五、修改与删除数据(DML 核心操作)
10. 更新数据
UPDATE `student`
SET `major` = '英语文学'
WHERE `major` = '英语';
- 将所有专业为
'英语'的记录改为'英语文学' - 因已关闭
SQL_SAFE_UPDATES,即使不用主键也能执行
11. 删除数据
DELETE FROM `student`
WHERE `student_id` = 1;
- 删除
student_id = 1的学生记录 - ⚠️ 若不加
WHERE,会删除整张表的数据!
六、清理(可选)
DROP TABLE `student`;
DROP DATABASE `sql_tutorial`;
- 删除表和数据库,释放资源。
🔁 完整推荐执行顺序(避免错误)
-- 1. 创建并使用数据库
CREATE DATABASE `sql_tutorial`;
USE `sql_tutorial`;
-- 2. 关闭安全更新(仅开发环境)
SET SQL_SAFE_UPDATES = 0;
-- 3. 创建表(带自增和默认值)
CREATE TABLE `student`(
`student_id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20),
`major` VARCHAR(20) DEFAULT 'history',
`score` INT
);
-- 4. 插入数据(推荐方式)
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor1', '英语', 90);
INSERT INTO `student` (`name`, `score`) VALUES ('ama_tor2', 69); -- major 默认为 'history'
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor3', '物理', 60);
INSERT INTO `student` (`name`, `major`, `score`) VALUES ('ama_tor4', '化学', 80);
-- 5. 查询(带排序)
SELECT * FROM `student` ORDER BY `score`, `student_id`;
-- 6. 更新
UPDATE `student` SET `major` = '英语文学' WHERE `major` = '英语';
-- 7. 删除
DELETE FROM `student` WHERE `student_id` = 1;
-- 8. 查看最终结果
SELECT * FROM `student`;
-- 9. 清理(可选)
-- DROP TABLE `student`;
-- DROP DATABASE `sql_tutorial`;
✅ 全篇知识点总结
| 功能 | 语句示例 | 说明 |
|---|---|---|
| 数据库创建 | CREATE DATABASE \sql_tutorial`;` |
创建一个新的数据库 |
| 数据库查看 | SHOW DATABASES; |
列出当前 MySQL 实例中所有数据库 |
| 数据库删除 | DROP DATABASE \database`;` |
永久删除指定数据库(不可恢复) |
| 使用数据库 | USE \sql_tutorial`;` |
切换当前会话的工作数据库 |
| 创建表 | CREATE TABLE \student` (...);` |
定义表结构,包括字段名、类型和约束 |
| 主键定义 | \`student_id\` INT PRIMARY KEY |
声明唯一标识列,不允许 NULL 和重复 |
| 自动递增主键 | \`student_id\` INT PRIMARY KEY AUTO_INCREMENT |
插入时若未提供 ID,系统自动分配递增值(推荐用于整数主键) |
| 字段默认值 | \`major\` VARCHAR(20) DEFAULT 'history' |
当插入时未指定该字段,自动使用默认值填充 |
| 查看表结构 | DESCRIBE \student`;或DESC `student`;` |
显示表的字段名、数据类型、是否为空、键类型、默认值等信息 |
| 删除表 | DROP TABLE \student`;` |
删除整张表及其所有数据和结构 |
| 添加列 | ALTER TABLE \student` ADD `gpa` DECIMAL(3,2);` |
在现有表中新增一个字段 |
| 删除列 | ALTER TABLE \student` DROP COLUMN `gpa`;` |
从表中移除指定字段(慎用,会丢失数据) |
| 全字段插入 | INSERT INTO \student` VALUES (1, 'Ama', 'music');` |
按表定义顺序提供所有字段的值(不推荐,易出错) |
| 部分字段插入 | INSERT INTO \student` (`name`, `score`) VALUES ('Tom', 85);` |
仅插入指定字段,其余字段使用默认值或 NULL(推荐写法) |
| 查询所有数据 | SELECT * FROM \student`;` |
返回表中全部行和列 |
| 多字段排序 | SELECT * FROM \student` ORDER BY `score`, `student_id`;` |
先按 score 升序排序,相同时再按 student_id 升序 |
| 更新记录 | UPDATE \student` SET `major` = '英语文学' WHERE `major` = '英语';` |
修改满足条件的行的数据 |
| 删除记录 | DELETE FROM \student` WHERE `student_id` = 1;` |
删除满足条件的行(不会删除表结构) |
| 关闭安全更新模式 | SET SQL_SAFE_UPDATES = 0; |
允许执行不带主键条件或无 WHERE 的 UPDATE/DELETE(开发环境常用) |
| 开启安全更新模式(默认) | SET SQL_SAFE_UPDATES = 1; |
防止意外全表更新或删除(生产环境应保持开启) |
