数据库是存储和管理数据的核心组件,掌握数据库的基本操作是每个开发者的必备技能。本文以MySQL为例,详细介绍数据库的创建、字符集设置、校验规则、日常维护及备份恢复等操作,帮助读者轻松上手并深入理解MySQL数据库的管理技巧。
使用 create database
命令创建数据库,语法如下:
create database [if not exists] 数据库名
[default character set 字符集名称]
[default collate 校对规则名称];
if not exists
:可选,避免重复创建同名数据库时报错。character set
:指定数据库的字符集(如 utf8mb4
、gbk
)。字符集决定数据库支持的语言和符号。collate
:指定校对规则(如 utf8mb4_general_ci
)。校对规则影响字符串比较和排序的方式。注意:MySQL关键字(如
create
、database
)不区分大小写,但建议统一风格。例如,关键字小写,数据库名按需使用大小写(Linux系统下数据库名区分大小写)。
创建默认字符集的数据库:
create database db1;
utf8mb4
字符集和 utf8mb4_0900_ai_ci
校对规则(具体版本可能有差异)。指定字符集创建数据库:
create database db2 character set=utf8mb4;
utf8mb4
而非 utf8
,因为 utf8mb4
支持更多字符(如Emoji表情)。同时指定字符集和校对规则:
create database db3
character set=utf8mb4
collate utf8mb4_general_ci;
show variables like 'character_set_database';
show variables like 'collation_database';
查看所有支持的字符集:
show charset;
输出示例:
+----------+---------------------------------+
| Charset | Description |
+----------+---------------------------------+
| utf8mb4 | UTF-8 Unicode |
| latin1 | cp1252 West European |
+----------+---------------------------------+
查看所有支持的校对规则:
show collation;
输出示例:
+----------------------+----------+-----+
| Collation | Charset | Id |
+----------------------+----------+-----+
| utf8mb4_general_ci | utf8mb4 | 45 |
| utf8mb4_bin | utf8mb4 | 46 |
+----------------------+----------+-----+
utf8mb4_general_ci
)create database test1 collate utf8mb4_general_ci;
use test1;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');
查询结果:
select * from person where name='a';
-- 返回 'a' 和 'A'
说明:
utf8mb4_general_ci
校对规则忽略大小写,a
和A
视为相同。
utf8mb4_bin
)create database test2 collate utf8mb4_bin;
use test2;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');
查询结果:
select * from person where name='a';
-- 仅返回 'a'
说明:
utf8mb4_bin
校对规则按二进制比较,区分大小写。
select * from person order by name;
-- 结果:a, A, b, B(按字母顺序,不区分大小写)
select * from person order by name;
-- 结果:A, B, a, b(大写字母优先)
show databases;
输出示例:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test1 |
+--------------------+
select database();
输出示例:
+------------+
| database() |
+------------+
| helloworld |
+------------+
1 row in set (0.00 sec)
show create database 数据库名;
示例:
show create database mytest;
输出:
+----------+--------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------+
| mytest | CREATE DATABASE `mytest` DEFAULT CHARSET=utf8mb4 |
+----------+--------------------------------------------------------+
注意:反引号
`
用于包裹数据库名,避免与关键字冲突(如使用database
作为库名)。
修改字符集或校对规则:
alter database 数据库名
character set=新字符集
collate=新校对规则;
示例:
alter database mytest character set=gbk collate gbk_chinese_ci;
注意:修改字符集不会自动转换已有数据,需手动调整表结构。
drop database 数据库名;
风险提示:
使用 mysqldump
工具进行备份:
# 备份整个数据库(包含创建语句)
mysqldump -u root -p123456 -B mytest > D:/mytest.sql
# 备份单张表
mysqldump -u root -p mytest person > D:/person.sql
参数说明:
-B
:备份整个数据库(包含 create database
语句)。-B
时,恢复需手动创建数据库。在MySQL命令行中执行:
source D:/mytest.sql;
分步恢复(无 -B
参数时):
create database mytest; -- 1. 创建空数据库
use mytest; -- 2. 切换到该数据库
source D:/mytest.sql; -- 3. 执行备份文件
监控当前连接状态:
show processlist;
输出示例:
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 5 | root | localhost | test | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
应用场景: