目录
[1 查看数据库](#1 查看数据库)
[1.1 查看当前处在数据库](#1.1 查看当前处在数据库)
[1.2 查看连接情况](#1.2 查看连接情况)
[2 创建数据库](#2 创建数据库)
[2.1 使用数据库](#2.1 使用数据库)
[3 字符集和校验规则](#3 字符集和校验规则)
[3.1 字符集](#3.1 字符集)
[3.2 校验规则](#3.2 校验规则)
[3.3 查看系统字符集以及校验规则](#3.3 查看系统字符集以及校验规则)
[4 删除数据库](#4 删除数据库)
[5 修改数据库](#5 修改数据库)
[6 数据库的备份和恢复](#6 数据库的备份和恢复)
[6.1 备份](#6.1 备份)
[6.2 恢复](#6.2 恢复)
1 查看数据库
(1)基本语法
SHOW DATABASE; // 查看数据库
show create database database_name; // 显示创建语句,不是创建数据库
1.1 查看当前处在数据库
(1)基本语法
select database();
1.2 查看连接情况
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
(1)语法
show processlist;
(2)示例
mysql> show processlist;
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 345695 | Waiting on empty queue | NULL |
| 12 | root | localhost | Test | Query | 0 | init | show processlist |
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
2 rows in set, 1 warning (0.00 sec)
2 创建数据库
(1)基本语法
CREATE DATABASE database_name;
(2)常用选项说明
- CHARACTER SET:指定数据库字符集
- COLLATE:指定排序规则
- IF NOT EXISTS:避免重复创建时报错
(3)示例
-- 创建名为 my_database 的数据库
CREATE DATABASE my_database;
-- 指定字符集和排序规则(可选)
CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 添加条件判断(如果不存在则创建)
CREATE DATABASE IF NOT EXISTS my_database;
2.1 使用数据库
(1)基本语法
use database_name
3 字符集和校验规则
3.1 字符集
字符集定义了数据库能够存储哪些字符,以及这些字符如何用二进制代码表示。
常见字符集:
- ascii: 最简单的英文字符集,不支持中文。
- latin1: 扩展了 ASCII,支持西欧语言。
- gbk / gb2312: 支持中文的字符集(国标)。
- utf8 : 最常用的 Unicode 字符集,支持几乎所有语言的字符。但在 MySQL 中,它指的是最多 3 字节的 UTF-8,无法存储如表情符号(Emoji)等 4 字节字符。
- utf8mb4 : 真正的、完整的 UTF-8 (推荐使用)。它支持 4 字节字符,可以存储表情符号和一些不常见的汉字。这是现在的最佳实践。
为什么重要?
如果字符集设置错误,会导致乱码。例如,如果你用 latin1 存储中文字符,检索出来的就会是一堆问号(???)或乱码。
3.2 校验规则
校验规则定义了字符集中字符的排序规则和比较规则(即字符串如何比较大小、如何排序)。
它主要解决两个问题:
- 排序 (Ordering): 'A' 和 'a' 谁应该排在前面?
- 比较 (Comparison): 'A' 和 'a' 在查询时是否算作相等?
常见校验规则(以 utf8mb4 为例):
- utf8mb4_general_ci: 较早的、速度较快的校验规则,但排序精度稍低。
- utf8mb4_unicode_ci : 基于 Unicode 标准进行排序和比较,能更准确地处理各种语言和特殊字符(如德语中的 ß)。这是推荐的通用规则。
- utf8mb4_0900_ai_ci : MySQL 8.0 引入的新标准,更现代、更准确。(0900 代表 Unicode 9.0 标准,ai 代表口音不敏感,ci 代表大小写不敏感)。
- utf8mb4_bin : 纯粹的二进制比较。它会区分大小写和重音符号,因为 'A' 和 'a' 的二进制编码完全不同。
校验规则后缀的含义: - _ci (Case Insensitive): 大小写不敏感 。'apple' 和 'APPLE' 被认为是相同的。
- _cs (Case Sensitive): 大小写敏感 。'apple' 和 'APPLE' 被认为是不同的。
- _ai (Accent Insensitive): 口音不敏感 。'resume' 和 'résumé' 被认为是相同的。
- _as (Accent Sensitive): 口音敏感 。'resume' 和 'résumé' 被认为是不同的。
- _bin (Binary): 二进制比较,区分一切。
3.3 查看系统字符集以及校验规则
show variables like 'character_set_database'; // 查看系统默认字符集
show variables like 'collation_database'; // 查看系统默认校验规则
show charset; // 查看数据库支持的字符集
show collation; // 查看数据库支持的字符集校验规则
4 删除数据库
(1)基本语法
DROP DATABASE my_database;
-- 或
DROP DATABASE IF EXISTS my_database;
5 修改数据库
(1)基本语法
ALTER DATABASE database_name
CHARACTER SET new_charset
COLLATE new_collation;
(2)示例
-- 将数据库字符集改为 utf8mb4,校验规则改为 utf8mb4_unicode_ci
ALTER DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 只修改字符集,校验规则会自动选择默认的
ALTER DATABASE my_database
CHARACTER SET utf8mb4;
-- 只修改校验规则
ALTER DATABASE my_database
COLLATE utf8mb4_0900_ai_ci;
6 数据库的备份和恢复
6.1 备份
(1)语法
# 备份单个数据库
mysqldump -u [用户名] -p[密码] --databases [数据库名] > [备份文件.sql]
# 备份所有数据库
mysqldump -u username -p --all-databases > all_backup.sql
# 备份特定表
mysqldump -u username -p database_name table1 table2 > tables_backup.sql
(2)示例
mysqldump -u root -p mytest > D:/mytest.sql // 将mytest库备份到文件
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql // 备份数据库其中的一张表
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径 // 同时备份多个数据库
6.2 恢复
(1)语法
# 方法1:使用mysql命令行
mysql -u username -p database_name < backup.sql
# 方法2:在MySQL命令行中
mysql> source /path/to/backup.sql;
# 解压并恢复压缩的备份
gunzip < backup.sql.gz | mysql -u username -p database_name