创建数据库
语法说明
CREATE DATABASE [IF NOT EXISTS] db_name
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name;
IF NOT EXISTS:可选参数,避免数据库已存在时报错。CHARACTER SET:指定数据库采用的字符集。COLLATE:指定数据库字符集的校验规则(排序规则)。
创建示例
1. 基础创建
CREATE DATABASE db1;
若未指定字符集和校验规则,系统将使用默认配置(通常为 utf8mb4 及对应的默认排序规则)。
2. 指定字符集
CREATE DATABASE db2 CHARACTER SET utf8mb4;
3. 指定字符集与校验规则
CREATE DATABASE db3 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
字符集与校验规则
查看系统默认配置
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
查看支持的字符集与校验规则
SHOW CHARSET;
SHOW COLLATION;
字符集决定数据库支持的语言编码(如 utf8mb4 支持中文及 Emoji),而校验规则(Collation)决定字符串的比较和排序方式。两者具有严格的匹配关系。
校验规则对查询与排序的影响
校验规则名称通常以 _ci(Case Insensitive,不区分大小写)或 _bin(Binary,区分大小写)结尾。
1. 不区分大小写 (utf8mb4_general_ci)
CREATE DATABASE test_ci COLLATE utf8mb4_general_ci;
USE test_ci;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');
-- 查询结果:返回 'a' 和 'A'
SELECT * FROM person WHERE name = 'a';
-- 排序结果:按字母顺序,不区分大小写
SELECT * FROM person ORDER BY name;
2. 区分大小写 (utf8mb4_bin)
CREATE DATABASE test_bin COLLATE utf8mb4_bin;
USE test_bin;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');
-- 查询结果:仅返回 'a'
SELECT * FROM person WHERE name = 'a';
-- 排序结果:按 ASCII 码排序(大写字母排在小写字母前)
SELECT * FROM person ORDER BY name;
数据库管理操作
查看数据库列表
SHOW DATABASES;
查看数据库创建语句
SHOW CREATE DATABASE db_name;
说明:
- 数据库名使用反引号
`包裹,防止与保留字冲突。 /*!40100 ... */是 MySQL 的条件注释语法,表示当 MySQL 版本大于等于 4.01.00 时执行该语句。
修改数据库配置
主要用于修改字符集和校验规则:
ALTER DATABASE db_name
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name;
示例: 将 mytest 数据库字符集改为 gbk
ALTER DATABASE mytest CHARACTER SET gbk;
删除数据库
DROP DATABASE [IF EXISTS] db_name;
注意: 删除操作会级联删除该数据库下的所有数据表及数据,且不可恢复,请谨慎操作。
备份与恢复
备份数据库
使用 mysqldump 工具在命令行执行:
# 备份整个数据库(包含建库语句)
mysqldump -u root -p -B db_name > backup.sql
# 备份指定表
mysqldump -u root -p db_name table1 table2 > backup.sql
# 同时备份多个数据库
mysqldump -u root -p -B db1 db2 > backup.sql
恢复数据库
方式一:使用 source 命令(登录 MySQL 后执行)
SOURCE /path/to/backup.sql;
方式二:命令行重定向
mysql -u root -p < backup.sql
注意事项:
- 若备份时未使用
-B参数,导出的 SQL 文件中不包含CREATE DATABASE和USE语句。恢复前需手动创建空数据库并切换至该库,再执行恢复命令。
查看连接情况
SHOW PROCESSLIST;
该命令用于查看当前连接到 MySQL 的所有客户端线程信息。通过 User、Host、Command、Time 和 State 等字段,可以监控数据库负载、排查慢查询或发现异常登录,是日常运维与安全排查的重要工具。


