MySQL数据库基础:安装部署、配置管理与核心SQL语法
数据存储的发展历程
在软件开发早期,数据通常以文本形式分散存储。这种方式存在路径不统一、格式不规范的问题(如 JSON、纯文本混杂)。随着规范化的提出,数据被集中放置在特定目录(如 db 文件夹),但格式标准仍未统一。
现代解决方案引入了数据库服务,实现了路径和操作方式的标准化,显著降低了开发成本并提升了效率。
数据库服务的核心价值
从底层原理看,数据库是一个专门负责数据增删改查(CRUD)的进程;从应用层面看,它提供了可视化的管理界面。无论是单机应用还是网络协同应用,数据库都是数据共享与持久化的基石。为了保证数据安全,生产环境通常会采用集群架构。
数据库的本质与架构
本质上,数据库软件是基于 C/S(客户端/服务端)架构的程序。这意味着开发者可以通过编写代码来实现类似的功能,但在实际工作中,我们主要使用成熟的数据库软件进行管理。
数据库分类详解
关系型数据库 (RDBMS)
此类数据库具有固定的表结构(Schema),包含字段名和预定义的数据类型,类似于 Excel 表格。数据之间可以建立关联关系。
- 常见产品:MySQL, PostgreSQL, Oracle, SQL Server, SQLite.
- 特点:事务支持强,数据一致性好。MySQL 因开源免费且性能优异而广泛使用;Oracle 安全性高但成本昂贵;PostgreSQL 兼容性极佳。
非关系型数据库 (NoSQL)
没有固定的表结构,通常采用键值对(Key-Value)或文档形式存储,适合快速读写。
- 常见产品:Redis, MongoDB, Memcached.
- 特点:Redis 基于内存,速度极快,常用作缓存;MongoDB 是文档型数据库,适合大数据和爬虫场景。
注:大型系统通常结合两者优势,关系型数据库用于持久化存储,非关系型数据库用于高性能查询。
MySQL 安装与环境配置
版本选择
推荐使用 5.7 或 8.0 版本。学习阶段选择稳定版即可,不同版本在操作上差异不大。
关键目录说明
- bin: 存放可执行文件(mysqld.exe 服务端,mysql.exe 客户端)。
- data: 核心数据文件的存储位置。
- my-default.ini: 默认配置文件模板。
服务启动与管理
手动启动方式
- 以管理员身份打开命令提示符,进入 bin 目录。
- 运行
mysqld启动服务端(窗口保持开启)。 - 新建普通 CMD 窗口,同样进入 bin 目录,输入
mysql登录客户端。
默认直接登录为游客模式,权限受限。建议通过指定用户和密码登录:
mysql -u root -p
注册为系统服务
为了实现开机自启,需将 MySQL 注册为 Windows 服务:
# 1. 添加环境变量指向 bin 目录后,关闭所有相关终端
# 2. 以管理员身份运行 CMD,执行安装命令
mysqld --install
# 3. 启动服务
net start mysql
# 4. 卸载服务时,先停止服务
net stop mysql
mysqld --remove
密码管理与安全设置
已知原密码时的修改
- 方法一:退出客户端后,在命令行执行:
mysqladmin -u root -p 原密码 password 新密码。 - 方法二:登录后执行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');(MySQL 5.x) 或ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';(MySQL 8.x)。
忘记 Root 密码的重置方案
当无法获取原密码时,需跳过授权表重启服务:
- 停止现有服务:
net stop mysql。 - 跳过验证启动:
mysqld --console --skip-grant-tables --shared-memory(保持窗口开启)。 - 另开 CMD 登录:
mysql -u root -p(直接回车)。 - 刷新权限表并修改密码:
FLUSH PRIVILEGES;
USE mysql;
-- MySQL 5.7
UPDATE user SET authentication_string=PASSWORD("NewPass123!") WHERE User="root";
-- MySQL 8.0+ (authentication_string 加密方式不同)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
最后正常重启服务即可恢复。
配置文件优化 (my.ini)
在项目根目录或 bin 同级目录下创建 my.ini,可设定端口、编码及数据路径:
[mysqld]
port=3306
basedir=D:/mysql_path
datadir=D:/mysql_data_dir
character-set-server=utf8mb4
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
核心 SQL 语法基础
与数据库交互必须使用 SQL 语言。基本操作分为库级、表级和记录级。
数据库操作 (Database)
-- 创建数据库,指定字符集避免乱码
CREATE DATABASE my_company DEFAULT CHARSET utf8mb4;
-- 查看所有库
SHOW DATABASES;
-- 切换当前工作库
USE my_company;
-- 删除数据库
DROP DATABASE IF EXISTS test_db;
表结构操作 (Table)
-- 创建员工表
CREATE TABLE staff (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
full_name VARCHAR(50) NOT NULL,
hire_date DATE
);
-- 查看表结构
DESC staff;
SHOW CREATE TABLE staff;
-- 重命名表
ALTER TABLE staff RENAME TO workforce;
-- 删除表
DROP TABLE workforce;
数据记录操作 (Record/Row)
-- 插入数据
INSERT INTO staff (full_name, hire_date) VALUES ('Alice Chen', '2023-01-15');
INSERT INTO staff (full_name, hire_date) VALUES ('Bob Zhang', '2023-02-10'), ('Carol Li', '2023-03-20');
-- 查询数据
SELECT * FROM staff;
SELECT full_name FROM staff WHERE employee_id > 100;
-- 更新数据
UPDATE staff SET hire_date = '2023-01-16' WHERE employee_id = 1;
-- 删除数据
DELETE FROM staff WHERE employee_id = 5;
进程控制指令
在遇到服务卡死等情况时,可通过任务管理器或命令行强制结束进程:
# 列出进程列表
tasklist
# 根据 PID 结束进程
taskkill /PID 12345 /F
# 根据名称结束进程
taskkill /IM mysqld.exe /F