mysql如何创建数据库_mysql创建数据库命令说明

来源:这里教程网 时间:2026-02-28 20:48:54 作者:

CREATE DATABASE 语句的基本写法

MySQL 创建数据库最直接的方式就是用

CREATE DATABASE
命令,它不依赖其他前置操作,但必须有对应权限。最简形式是:
CREATE DATABASE mydb;
执行后就建好一个名为
mydb
的数据库,字符集和排序规则采用 MySQL 默认值(通常是
utf8mb4
+
utf8mb4_0900_ai_ci
,取决于版本)。

指定字符集和排序规则的必要性

中文存储或国际化场景下,不显式指定字符集容易导致插入中文时报错或乱码,尤其是老项目迁移或跨版本部署时。推荐始终明确声明:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

utf8mb4
是 MySQL 中真正支持完整 Unicode(含 emoji)的字符集,
utf8
实际只支持 BMP 平面,已不建议使用
utf8mb4_unicode_ci
utf8mb4_0900_ai_ci
兼容性更广,尤其在 MySQL 5.7 和部分 8.0 环境中更稳妥
排序规则(collation)影响
ORDER BY
=
GROUP BY
的行为,不能只看字符集而忽略它

避免 ERROR 1007:Database exists 错误

重复执行

CREATE DATABASE
会报错
ERROR 1007 (HY000): Can't create database 'xxx'; database exists
。生产脚本或自动化部署中必须加判断:
CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意:
IF NOT EXISTS
只抑制错误,不会覆盖已有库的字符集设置——如果库已存在但字符集不符,这条命令不会修改它,需单独用
ALTER DATABASE

创建时能否指定默认存储引擎?

不能。

CREATE DATABASE
语句本身不接受
ENGINE
参数。MySQL 的存储引擎是表级概念,数据库只是逻辑容器。默认引擎由全局变量
default_storage_engine
控制(通常为
InnoDB
),建表时若不指定
ENGINE
,才继承该值。想确认当前默认引擎,可运行:
SELECT @@default_storage_engine;
如果需要某张表用
MyISAM
,只能在
CREATE TABLE
里显式写
ENGINE=MyISAM

实际执行前最好先用
SHOW DATABASES LIKE 'mydb';
确认是否存在,比单纯依赖
IF NOT EXISTS
更利于调试;字符集一旦设错,后续改库级设置要小心,因为已有表的字符集不会自动同步。

相关推荐