目录
[1. 基本创建与查看](#1. 基本创建与查看)
[2. 编码与校验集](#2. 编码与校验集)
[3. 指定字符集创建数据库](#3. 指定字符集创建数据库)
[4. 不同校验集的对比](#4. 不同校验集的对比)
[1. 切换与查看当前数据库](#1. 切换与查看当前数据库)
[2. 删除数据库](#2. 删除数据库)
[3. 修改数据库字符集](#3. 修改数据库字符集)
[4. 查看数据库的创建信息](#4. 查看数据库的创建信息)
[5. 查看连接状态](#5. 查看连接状态)
[1. 备份数据库](#1. 备份数据库)
[2. 恢复数据库](#2. 恢复数据库)
数据库文件默认存储在 /var/lib/mysql 目录下。可以使用 sudo ls -la 查看该目录下的文件。
一、创建数据库
1. 基本创建与查看
-- 创建数据库
CREATE DATABASE database1;
-- 查看所有数据库
SHOW DATABASES;
避免重复创建:
CREATE DATABASE database1 IF NOT EXISTS;
如果数据库已存在,不会报错,只会显示警告。
注意 :数据库本质上就是文件系统中的目录,在 /var/lib/mysql 下可以看到对应的文件夹。虽然可以通过直接操作文件系统来创建或删除数据库,但严重不建议这样做,可能导致数据不一致。
2. 编码与校验集
数据库有两个重要的编码设置:
-
编码集(charset):数据库存储数据时使用的编码
-
校验集(collation):读取数据时用于比较的编码规则
重要:数据库操作时,应保证编码集和校验集相互匹配。
-- 查看支持的编码集
SHOW CHARSET;
-- 查看支持的校验集
SHOW COLLATION;
在旧版本 MySQL 中,可以通过 ls -la /var/lib/mysql/数据库名/ 查看数据库的字符集设置(新版本可能不支持)。
3. 指定字符集创建数据库
CREATE DATABASE d2 CHARSET=utf8 COLLATE=utf8_general_ci;
4. 不同校验集的对比
创建两个使用不同校验集的数据库:
-- test1 使用 utf8_general_ci(不区分大小写)
CREATE DATABASE test1 COLLATE=utf8_general_ci;
-- test2 使用 utf8_bin(区分大小写)
CREATE DATABASE test2 COLLATE=utf8_bin;
在 test1 中操作:
USE test1;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person(name) VALUES('A');
INSERT INTO person(name) VALUES('a');
SELECT * FROM person WHERE name = 'a';

结果会同时查出 a 和 A(因为 utf8_general_ci 不区分大小写)。
在 test2 中操作:
USE test2;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person(name) VALUES('A');
INSERT INTO person(name) VALUES('a');
SELECT * FROM person WHERE name = 'a';

结果只查出 a(因为 utf8_bin 区分大小写)。
结论:校验集的选择会影响查询结果的匹配规则。
二、其他数据库操作
1. 切换与查看当前数据库
-- 切换到指定数据库
USE test2;
-- 查看当前所在的数据库
SELECT DATABASE();
2. 删除数据库
DROP DATABASE d1;
3. 修改数据库字符集
ALTER DATABASE d2 CHARSET=gbk COLLATE=gbk_chinese_ci;
4. 查看数据库的创建信息
SHOW CREATE DATABASE test1;
输出示例:
+----------+------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------------------------------+
| test1 | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+------------------------------------------------------------------------------------------+
说明 :/*! ... */ 类似于条件编译,表示在指定版本号以上才执行其中的指令。
5. 查看连接状态
SHOW PROCESSLIST;
三、数据库备份与恢复
1. 备份数据库
在 shell 命令行中执行(不是在 MySQL 客户端内):
mysqldump -uroot -p -B test1 > /home/xc/code/mysql/2操作/back.sql
-
-B:指定要备份的数据库名 -
>:将备份内容重定向到指定文件
2. 恢复数据库
在 MySQL 客户端中执行:
SOURCE /home/xc/code/mysql/2操作/back.sql;
原理 :数据库备份时存储的是历史操作指令(如 CREATE DATABASE、CREATE TABLE、INSERT 等)。恢复时,就是将这些指令重新执行一遍。