1873 字
约 6 分钟
12
🗄️ MySQL 创建数据库
2026-09-19
无标签

🗄️ MySQL 创建数据库

数据库是存储相关数据的容器。本章将详细介绍如何在 MySQL 中创建数据库,包括语法、字符集设置、排序规则以及 MySQL 5.7 和 8.x 版本的差异。

📊 MySQL 5.7 vs 8.x 默认设置对比

设置项 MySQL 5.7 MySQL 8.x
默认字符集 latin1 utf8mb4
默认排序规则 latin1_swedish_ci utf8mb4_0900_ai_ci
Unicode 支持 需手动设置 utf8mb4 默认完整 Unicode 支持
Emoji 支持 需设置 utf8mb4 默认支持

📝 基本语法

CREATE DATABASE 语法

-- 基本语法
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];

-- 简单示例
CREATE DATABASE myapp;

-- 完整示例
CREATE DATABASE myapp
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 安全创建(如果不存在才创建)
CREATE DATABASE IF NOT EXISTS myapp
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

语法参数说明

  • IF NOT EXISTS:如果数据库已存在,不会报错
  • CHARACTER SET:指定数据库的默认字符集
  • COLLATE:指定数据库的默认排序规则

🔤 字符集和排序规则

常用字符集

-- 查看所有可用字符集
SHOW CHARACTER SET;

-- 常用字符集
utf8mb4     -- 完整的UTF-8编码,支持4字节字符(推荐)
utf8        -- UTF-8编码,最多3字节(不推荐,不支持emoji)
latin1      -- 西欧字符集
gbk         -- 中文字符集
ascii       -- ASCII字符集

常用排序规则

-- 查看字符集对应的排序规则
SHOW COLLATION LIKE 'utf8mb4%';

-- UTF8MB4 常用排序规则
utf8mb4_unicode_ci      -- Unicode标准排序,支持多语言(推荐)
utf8mb4_general_ci      -- 通用排序,性能较好
utf8mb4_bin             -- 二进制排序,区分大小写
utf8mb4_0900_ai_ci      -- MySQL 8.x 默认,支持最新Unicode标准

-- 排序规则后缀含义
_ci    -- Case Insensitive(不区分大小写)
_cs    -- Case Sensitive(区分大小写)
_bin   -- Binary(二进制排序)
_ai    -- Accent Insensitive(不区分重音)
_as    -- Accent Sensitive(区分重音)

MySQL 8.x 新增排序规则特性

  • utf8mb4_0900_ai_ci:基于 Unicode 9.0 标准
  • 更好的多语言支持:改进的排序算法
  • 性能优化:更快的字符串比较
-- MySQL 8.x 推荐的数据库创建方式
CREATE DATABASE modern_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;

💡 实际应用示例

1. 创建电商系统数据库

-- 电商系统数据库
CREATE DATABASE IF NOT EXISTS ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
COMMENT '电商系统数据库';

-- 验证创建结果
SHOW CREATE DATABASE ecommerce;

2. 创建多语言博客数据库

-- 多语言博客数据库(MySQL 8.x)
CREATE DATABASE IF NOT EXISTS blog_multilang
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci
COMMENT '多语言博客系统';

-- 多语言博客数据库(MySQL 5.7 兼容)
CREATE DATABASE IF NOT EXISTS blog_multilang_57
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
COMMENT '多语言博客系统 - MySQL 5.7 兼容';

3. 创建日志系统数据库

-- 日志系统数据库(性能优先)
CREATE DATABASE IF NOT EXISTS logs
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci
COMMENT '系统日志数据库';

4. 创建区分大小写的数据库

-- 需要区分大小写的数据库
CREATE DATABASE IF NOT EXISTS case_sensitive_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_bin
COMMENT '区分大小写的数据库';

🔍 数据库信息查询

查看数据库列表

-- 查看所有数据库
SHOW DATABASES;

-- 查看数据库(带模式匹配)
SHOW DATABASES LIKE 'my%';

-- 使用 INFORMATION_SCHEMA 查询
SELECT SCHEMA_NAME as '数据库名'
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
ORDER BY SCHEMA_NAME;

查看数据库详细信息

-- 查看数据库创建语句
SHOW CREATE DATABASE myapp;

-- 查看数据库字符集和排序规则
SELECT 
    SCHEMA_NAME as '数据库名',
    DEFAULT_CHARACTER_SET_NAME as '字符集',
    DEFAULT_COLLATION_NAME as '排序规则'
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'myapp';

-- 查看当前使用的数据库
SELECT DATABASE();

-- 查看数据库大小
SELECT 
    table_schema as '数据库',
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) as '大小(MB)'
FROM information_schema.tables 
WHERE table_schema = 'myapp'
GROUP BY table_schema;

✅ 最佳实践1. 命名规范使用小写字母和下划线避免使用 MySQL 保留字使用有意义的名称保持名称简洁但描述性强-- ✅ 好的命名示例
CREATE DATABASE user_management;
CREATE DATABASE ecommerce_system;
CREATE DATABASE blog_platform;
-- ❌ 不好的命名示例
CREATE DATABASE Database; -- 使用了保留字
CREATE DATABASE db1; -- 名称不够描述性
CREATE DATABASE UserManagement; -- 使用了大写字母2. 字符集选择建议-- 推荐:现代应用使用 utf8mb4
CREATE DATABASE modern_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- MySQL 8.x 推荐
CREATE DATABASE modern_app_8x
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
-- 性能敏感应用
CREATE DATABASE performance_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;3. 创建数据库脚本模板-- 完整的数据库创建脚本模板
-- 检查并删除已存在的数据库(可选)
-- DROP DATABASE IF EXISTS myapp;
-- 创建数据库
CREATE DATABASE IF NOT EXISTS myapp
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
COMMENT '应用程序数据库';
-- 验证创建结果
SHOW CREATE DATABASE myapp;
-- 使用数据库
USE myapp;
-- 显示当前数据库
SELECT DATABASE() as '当前数据库';

⚠️ 注意事项

1. 字符集兼容性

  • MySQL 5.7 默认使用 latin1,需要手动设置 utf8mb4
  • 从 utf8 升级到 utf8mb4 需要谨慎处理
  • 确保应用程序连接时指定正确的字符集

2. 排序规则影响

-- 不同排序规则的比较结果
-- utf8mb4_general_ci: 'A' = 'a' = 'À' = 'á'
-- utf8mb4_bin: 'A' ≠ 'a' ≠ 'À' ≠ 'á'
-- utf8mb4_unicode_ci: 'A' = 'a', 'À' = 'à', 但 'A' ≠ 'À'

-- 测试排序规则差异
SELECT 'A' = 'a' COLLATE utf8mb4_general_ci as general_ci;
SELECT 'A' = 'a' COLLATE utf8mb4_bin as binary;

3. 性能考虑

  • utf8mb4_general_ci 比 utf8mb4_unicode_ci 性能更好
  • utf8mb4_unicode_ci 排序更准确,支持更多语言
  • 根据应用需求选择合适的排序规则

🛠️ 数据库管理操作

切换数据库

-- 使用 USE 语句切换数据库
USE myapp;

-- 验证当前数据库
SELECT DATABASE();

修改数据库属性

-- 修改数据库字符集和排序规则
ALTER DATABASE myapp
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;

-- 仅修改字符集
ALTER DATABASE myapp CHARACTER SET utf8mb4;

-- 仅修改排序规则
ALTER DATABASE myapp COLLATE utf8mb4_unicode_ci;

数据库备份和恢复

-- 备份数据库结构(仅结构,不包含数据)
mysqldump -u root -p --no-data myapp > myapp_structure.sql

-- 备份完整数据库
mysqldump -u root -p myapp > myapp_backup.sql

-- 恢复数据库
mysql -u root -p myapp < myapp_backup.sql

-- 创建数据库并恢复
mysql -u root -p -e "CREATE DATABASE myapp_restored CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p myapp_restored < myapp_backup.sql

📋 完整示例:创建项目数据库

-- 项目数据库创建完整脚本
-- ================================

-- 1. 检查 MySQL 版本
SELECT VERSION() as 'MySQL版本';

-- 2. 查看当前字符集设置
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

-- 3. 创建项目数据库
CREATE DATABASE IF NOT EXISTS project_management
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
COMMENT '项目管理系统数据库';

-- 4. 验证创建结果
SHOW CREATE DATABASE project_management;

-- 5. 使用数据库
USE project_management;

-- 6. 创建用户并授权(可选)
CREATE USER IF NOT EXISTS 'project_user'@'localhost' 
IDENTIFIED BY 'secure_password';

GRANT ALL PRIVILEGES ON project_management.* 
TO 'project_user'@'localhost';

FLUSH PRIVILEGES;

-- 7. 验证权限
SHOW GRANTS FOR 'project_user'@'localhost';

-- 8. 显示最终状态
SELECT 
    DATABASE() as '当前数据库',
    USER() as '当前用户',
    @@character_set_database as '数据库字符集',
    @@collation_database as '数据库排序规则';
🗄️ MySQL 创建数据库
https://clxhxhhr.top/posts/2794/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。