语法格式:
CREATE DATABASE [IF NOT EXISTS] 数据库名
[DEFAULT] CHARACTER SET 字符集名
[DEFAULT] COLLATE 校对规则名;
参数说明:
| 参数 | 说明 |
|---|---|
| IF NOT EXISTS | 如果数据库不存在则创建 |
| CHARACTER SET | 指定字符集 |
| COLLATE | 指定校对规则 |
创建简单数据库:
CREATE DATABASE school;
创建指定字符集的数据库:
CREATE DATABASE school
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
创建避免重复:
CREATE DATABASE IF NOT EXISTS school;
查看支持的字符集:
SHOW CHARACTER SET;
常用字符集:
| 字符集 | 说明 | 每个字符最大长度 |
|---|---|---|
| utf8 | UTF-8 Unicode | 3字节 |
| utf8mb4 | UTF-8 Unicode | 4字节 |
| latin1 | cp1252西欧 | 1字节 |
| gbk | GBK简体中文 | 2字节 |
| gb2312 | GB2312简体中文 | 2字节 |
推荐使用utf8mb4:
查看校对规则:
SHOW COLLATION;
常用校对规则:
| 校对规则 | 说明 |
|---|---|
| utf8mb4_general_ci | 不区分大小写,通用 |
| utf8mb4_unicode_ci | 不区分大小写,支持Unicode |
| utf8mb4_bin | 区分大小写,二进制比较 |
| utf8mb4_0900_ai_ci | MySQL 8.0默认,不区分重音 |
校对规则后缀说明:
| 后缀 | 说明 |
|---|---|
| _ci | Case Insensitive,不区分大小写 |
| _cs | Case Sensitive,区分大小写 |
| _bin | Binary,二进制比较 |
| _ai | Accent Insensitive,不区分重音 |
| _as | Accent Sensitive,区分重音 |
CREATE DATABASE school
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
查看创建语句:
SHOW CREATE DATABASE school;
输出示例:
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+----------------------------------------------------------------+
语法格式:
SHOW DATABASES;
输出示例:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
作用:存储数据库元数据
包含信息:
常用查询:
-- 查看所有数据库
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA;
-- 查看所有表
SELECT TABLE_NAME, TABLE_TYPE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'school';
-- 查看表结构
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'school' AND TABLE_NAME = 'students';
作用:存储用户权限和系统信息
主要表:
作用:存储性能监控数据
监控内容:
作用:提供易读的性能视图
基于performance_schema:
使用LIKE:
SHOW DATABASES LIKE 'sch%';
使用WHERE:
SELECT SCHEMA_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE '%school%';
语法格式:
USE 数据库名;
示例:
USE school;
输出:
Database changed
使用DATABASE()函数:
SELECT DATABASE();
输出:
+------------+
| DATABASE() |
+------------+
| school |
+------------+
连接时指定:
mysql -u root -p school
执行SQL时指定:
mysql -u root -p -e "SELECT DATABASE()" school
语法格式:
DROP DATABASE [IF EXISTS] 数据库名;
参数说明:
| 参数 | 说明 |
|---|---|
| IF EXISTS | 如果数据库存在则删除 |
删除示例:
DROP DATABASE school;
避免错误:
DROP DATABASE IF EXISTS school;
⚠️ 重要警告:
删除前检查:
-- 查看数据库大小
SELECT
table_schema AS '数据库',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)'
FROM information_schema.tables
WHERE table_schema = 'school'
GROUP BY table_schema;
-- 查看数据库中的表
SHOW TABLES FROM school;
语法格式:
ALTER DATABASE 数据库名
[DEFAULT] CHARACTER SET 字符集名
[DEFAULT] COLLATE 校对规则名;
修改字符集:
ALTER DATABASE school
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
SHOW CREATE DATABASE school;
语法格式:
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
备份示例:
mysqldump -u root -p school > school_backup.sql
备份多个数据库:
mysqldump -u root -p --databases school test > databases_backup.sql
备份所有数据库:
mysqldump -u root -p --all-databases > all_databases_backup.sql
常用选项:
| 选项 | 说明 |
|---|---|
| --single-transaction | InnoDB一致性备份 |
| --routines | 备份存储过程和函数 |
| --triggers | 备份触发器 |
| --events | 备份事件 |
| --hex-blob | 十六进制导出二进制字段 |
完整备份示例:
mysqldump -u root -p \
--single-transaction \
--routines \
--triggers \
--events \
school > school_full_backup.sql
语法格式:
mysql -u 用户名 -p 数据库名 < 备份文件.sql
恢复示例:
# 先创建数据库
mysql -u root -p -e "CREATE DATABASE school"
# 恢复数据
mysql -u root -p school < school_backup.sql
在MySQL命令行中:
-- 创建数据库
CREATE DATABASE school;
-- 选择数据库
USE school;
-- 恢复数据
SOURCE /path/to/school_backup.sql;
停止MySQL服务:
systemctl stop mysql
复制数据目录:
cp -r /var/lib/mysql /backup/mysql_backup_$(date +%Y%m%d)
启动MySQL服务:
systemctl start mysql
停止MySQL服务:
systemctl stop mysql
恢复数据:
rm -rf /var/lib/mysql
cp -r /backup/mysql_backup_20240101 /var/lib/mysql
修改权限:
chown -R mysql:mysql /var/lib/mysql
启动MySQL服务:
systemctl start mysql
查看支持的引擎:
SHOW ENGINES;
输出示例:
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
优势:
适用场景:
表空间文件:
数据文件:
优势:
劣势:
适用场景:
数据文件:
优势:
劣势:
适用场景:
对比表:
| 特性 | InnoDB | MyISAM | MEMORY |
|---|---|---|---|
| 事务 | ✅ | ❌ | ❌ |
| 外键 | ✅ | ❌ | ❌ |
| 锁定 | 行级 | 表级 | 表级 |
| 全文索引 | ✅(5.6+) | ✅ | ❌ |
| 崩溃恢复 | ✅ | ❌ | ❌ |
| 存储限制 | 64TB | 256TB | 内存大小 |
选择建议:
✅ CREATE DATABASE创建数据库 ✅ SHOW DATABASES查看数据库 ✅ USE选择数据库 ✅ DROP DATABASE删除数据库 ✅ mysqldump备份数据库 ✅ InnoDB是默认存储引擎
完成本章学习后,请确认您能够: