create database 语句用于创建数据库,最简形式为create database mydb;,推荐显式指定字符集和排序规则如utf8mb4与utf8mb4_unicode_ci,使用if not exists避免重复创建错误,但不支持设置存储引擎。

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;
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
-
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 更利于调试;字符集一旦设错,后续改库级设置要小心,因为已有表的字符集不会自动同步。









