从零开始MySQL|F盘安装,配置,简单应用以及基础语句

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

  1. 打开 MySQL 官网下载页
  2. 选择 "MySQL Community (GPL) Downloads"
  3. 下载 Windows (x86, 64-bit), ZIP Archive (推荐使用 ZIP 版本,更灵活控制安装路径) ❗不要下载 MSI 安装版(它默认强制装在 C 盘,自定义路径受限)

第二步:解压并放置到 F 盘

  1. 将下载的 ZIP 文件(如 mysql-8.0.xx-winx64.zip)解压到:

    复制代码
    F:\MySQL\MySQL96

    (你可以重命名文件夹为 MySQL80 或其他你喜欢的名字)

  2. 最终目录结构应类似:

    复制代码
    F:\MySQL\MySQL96\
    ├── bin\
    ├── docs\
    ├── include\
    ├── lib\
    └── ...

第三步:创建数据目录

手动创建数据存储目录:

复制代码
F:\MySQL\Data

⚠️ 此目录必须为空,MySQL 初始化时会自动写入系统表。


第四步:配置 my.ini 文件

  1. F:\MySQL\MySQL96 目录下新建一个文本文件,命名为:

    复制代码
    my.ini
  2. 编辑 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 数据目录

  1. 管理员身份 打开命令提示符(CMD)或 PowerShell。

  2. 进入 MySQL 的 bin 目录:

    复制代码
    cd F:\MySQL\MySQL96\bin
  3. 执行初始化命令(会生成 root 临时密码):

    复制代码
    mysqld --initialize --console
  4. 查看输出,找到类似这样的行:

    复制代码
    [System] [MY-013169] ... generated password: >aB3$#kL9pQr

    👉 记下这个临时密码,首次登录要用。

✅ 初始化成功后,F:\MySQL\Data 目录中会出现 ibdata1mysqlsys 等文件和文件夹。


第六步:安装 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

第八步:首次登录并修改密码

  1. 登录 MySQL:

    复制代码
    mysql -u root -p

    输入前面记录的临时密码

  2. 修改 root 密码(MySQL 9.6 必须先改密码才能操作):

    复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

    密码需满足默认策略(至少8位,含大小写+数字+特殊字符),如 MyPass123!

  3. 退出:

    复制代码
    EXIT;

第九步(可选):配置环境变量(方便全局使用)

  1. 打开 系统属性sysdm.cpl → 高级 → 环境变量

  2. 系统变量 中找到 Path,点击"编辑"

  3. 添加:

    复制代码
    F:\MySQL\MySQL96\bin
  4. 保存后,即可在任意 CMD 中直接使用 mysqlmysqld 命令。


✅ 验证安装成功

复制代码
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?(安装图片暴击!)

  1. 打开 MySQL Workbench 官方下载页https://dev.mysql.com/downloads/workbench/
  2. 选择你的操作系统(Windows、macOS、Linux)
  3. 下载安装程序(Windows 通常是 .msi 文件)
  4. 安装时可自定义路径(比如也装到 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
  • 显式插入部分字段(利用默认值和自增)
  • UPDATEDELETE 操作

一、数据库管理

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_idPRI(主键)和 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; 防止意外全表更新或删除(生产环境应保持开启)
相关推荐
亓才孓3 小时前
【MyBatis Exception】Public Key Retrieval is not allowed
java·数据库·spring boot·mybatis
_千思_3 小时前
【小白说】数据库系统概念 6
数据库
野犬寒鸦5 小时前
深入解析HashMap核心机制(底层数据结构及扩容机制详解剖析)
java·服务器·开发语言·数据库·后端·面试
ruxshui5 小时前
元数据及元数据备份、迁移详解
数据库
禅与计算机程序设计艺术6 小时前
了解NoSQL的数据仓库和ETL
数据库·数据仓库·nosql·etl
专注前端30年6 小时前
负载均衡实战项目搭建指南:从基础到高可用全流程
运维·数据库·负载均衡
山岚的运维笔记7 小时前
SQL Server笔记 -- 第68章:内存中 OLTP(Hekaton)
数据库·笔记·sql·microsoft·sqlserver
山岚的运维笔记8 小时前
SQL Server笔记 -- 第67章:数据库邮件(DBMAIL)
数据库·笔记·sql·microsoft·sqlserver