在 MySQL 中创建数据库是一个非常基础且重要的操作。其核心命令是 `CREATE DATABASE`。
以下是创建数据库的详细语法、选项和最佳实践。
一、 核心语法
```sql
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];
```
二、 参数与选项说明
| 部分 | 说明 | 是否可选 |
| :--- | :--- | :--- |
| `CREATE DATABASE` | 核心命令,用于创建新数据库。 | 必选 |
| `database_name` | 你希望为数据库指定的名称。命名需遵循规则(如仅使用数字、字母、下划线,不能纯数字)。 | 必选 |
| `[IF NOT EXISTS]` | 关键选项。如果指定,只有当数据库不存在时才会创建。可避免因重复创建而报错,在脚本中非常有用。 | 可选 |
| `[CHARACTER SET]` | 指定数据库的默认字符集。例如 `utf8mb4`(推荐,支持完整的UTF-8,包括表情符号)。 | 可选 |
| `[COLLATE]` | 指定数据库的默认排序规则。常与字符集配对使用,例如 `utf8mb4_unicode_ci`(大小写不敏感)。 | 可选 |
三、 常用操作示例
1. 创建最简单的数据库
```sql
CREATE DATABASE my_new_db;
```
这条命令会创建一个名为 `my_new_db` 的数据库,使用 MySQL 服务器的默认字符集和排序规则。
2. 安全地创建数据库(推荐使用)
使用 `IF NOT EXISTS` 子句可以防止因为数据库已存在而导致的错误。
```sql
CREATE DATABASE IF NOT EXISTS my_new_db;
```
执行结果:
* 如果 `my_new_db` 不存在:创建它,并返回成功。
* 如果 `my_new_db` 已存在:不会报错,只会返回一个警告(Warning)。这在自动化脚本中至关重要。
3. 创建指定字符集和排序规则的数据库
这是生产环境的推荐做法,可以避免因默认设置不同导致的乱码问题。
```sql
CREATE DATABASE IF NOT EXISTS my_app_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
```
说明:
* `utf8mb4`: 当前推荐的字符集,完全支持 Unicode,包括表情符号(emoji)。
* `utf8mb4_unicode_ci`: 基于 Unicode 排序规则,对于多种语言能提供准确的排序结果,且大小写不敏感(`ci` = case insensitive)。
四、 后续步骤:查看与使用数据库
创建数据库后,你通常需要切换到该数据库进行后续操作(如创建表)。
1. 查看所有数据库
查看当前 MySQL 服务器上所有的数据库,确认你的数据库是否创建成功。
```sql
SHOW DATABASES;
```
2. 选择(使用)数据库
在进行任何表操作之前,必须先指定要操作哪个数据库。
```sql
USE my_new_db;
```
执行后,命令行提示符可能会发生变化,显示当前所在的数据库名,例如:`mysql>` 变为 `my_new_db>`。
3. 查看数据库的创建信息
可以查看已创建数据库的详细定义,包括其字符集和排序规则。
```sql
SHOW CREATE DATABASE my_app_db;
```
输出结果会显示完整的 `CREATE DATABASE` 语句。
五、 完整工作流示例
假设你要为一个新的博客项目初始化数据库。
```sql
-- 1. 安全地创建数据库,并明确指定字符集
CREATE DATABASE IF NOT EXISTS blog_platform
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 2. 查看所有数据库,确认创建成功
SHOW DATABASES;
-- 3. 切换到新创建的数据库
USE blog_platform;
-- 现在,你可以在这个数据库中创建表了,例如:
-- CREATE TABLE users (...);
-- CREATE TABLE posts (...);
```
六、 注意事项与最佳实践
1. 权限要求:执行 `CREATE DATABASE` 命令的用户必须拥有 `CREATE` 权限。
2. 命名规范:使用有意义的、一致的命名规则(如使用下划线分隔单词),避免使用特殊字符和MySQL保留字。
3. 字符集选择:强烈建议显式地指定 `CHARACTER SET utf8mb4`,这是现代的、兼容性最好的选择。
4. 脚本化:在部署脚本或应用程序初始化脚本中,始终使用 `IF NOT EXISTS` 子句来使脚本具备幂等性(即执行多次的效果和执行一次一样)。
5. 删除数据库:如果需要删除数据库,可以使用 `DROP DATABASE database_name;` 命令。此操作会立即删除数据库及其中的所有数据,且无法恢复,请极其谨慎地使用。
另外搭配便捷的MYSQL备份工具,可定时备份、异地备份,MYSQL导出导入。可本地连接LINUX里的MYSQL,简单便捷。可以大大地提高工作效率喔。