create database 语句最简形式为 create database mydb;,生产环境须显式指定 character set utf8mb4 和 collate utf8mb4_unicode_ci;防错应加 if not exists,但不修改已有库配置;mysqladmin 不支持字符集定制,仅适用于测试。

CREATE DATABASE 语句的基本写法
MySQL 创建数据库最直接的方式就是用 CREATE DATABASE,它不需要前置条件,只要用户有对应权限就能执行。最简形式是:
CREATE DATABASE mydb;这条命令会在 MySQL 实例中新建一个名为
mydb 的数据库,字符集和排序规则都使用服务器默认值(通常是 utf8mb4 和 utf8mb4_0900_ai_ci,取决于 MySQL 版本)。
指定字符集和排序规则的关键参数
生产环境几乎从不依赖默认值,因为中文、emoji 或特殊符号容易出乱码。必须显式声明 CHARACTER SET 和 COLLATE:
-
CHARACTER SET utf8mb4:支持完整 Unicode(含 emoji),比旧的utf8更可靠 -
COLLATE utf8mb4_unicode_ci:适合多语言排序比较;若需大小写敏感,可用utf8mb4_bin
完整写法示例:
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;注意:两个参数要成对出现,只写
CHARACTER SET 不写 COLLATE 会自动补上对应默认排序规则,但显式写出更可控。
避免“Database exists”错误的防御写法
重复执行 CREATE DATABASE 会报错 ERROR 1007 (HY000): Can't create database 'xxx'; database exists。加 IF NOT EXISTS 可跳过报错,但要注意它只是防止报错,并不会覆盖或修改已有库的字符集:
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
- 已存在同名库且字符集不同?该语句不做任何变更,静默退出
- 想确保字符集一致,得先
DROP DATABASE再重建(慎用!线上禁用) - 或者用
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;单独调整
安全创建写法:
CREATE DATABASE IF NOT EXISTS myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysqladmin 命令行方式创建(非 SQL 场景)
有些自动化脚本或 CI/CD 流程里不用进 MySQL 客户端,而是直接调命令行工具。这时用 mysqladmin:
- 基本命令:
mysqladmin -u root -p create mydb,执行后会提示输入密码 - 它不支持指定字符集——建出来的库仍走 MySQL 全局默认配置
- 如果需要定制字符集,必须回到 SQL 方式,或在
my.cnf中提前配好default-character-set
也就是说,mysqladmin 只适合快速测试,不能替代 CREATE DATABASE 的精细控制。
真正容易被忽略的是:数据库创建后,CREATE TABLE 时如果不显式指定字符集,表会继承库级设置;但如果库是用默认值建的,而 MySQL 配置文件里又没统一设 utf8mb4,后续插入中文就可能报错或截断。所以建库这一步,不是“能跑就行”,而是整个数据一致性链条的第一环。









