mysql如何创建数据库_mysql数据库创建语法解析

6次阅读

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

mysql如何创建数据库_mysql数据库创建语法解析

CREATE DATABASE 语句的基本写法

MySQL 创建数据库最直接的方式就是用 CREATE DATABASE,它不需要前置条件,只要用户有对应权限就能执行。最简形式是:

CREATE DATABASE mydb;

这条命令会在 MySQL 实例中新建一个名为 mydb 的数据库,字符集和排序规则都使用服务器默认值(通常是 utf8mb4utf8mb4_0900_ai_ci,取决于 MySQL 版本)。

指定字符集和排序规则的关键参数

生产环境几乎从不依赖默认值,因为中文、emoji 或特殊符号容易出乱码。必须显式声明 CHARACTER SETCOLLATE

  • 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 可跳过报错,但要注意它只是防止报错,并不会覆盖或修改已有库的字符集:

  • 已存在同名库且字符集不同?该语句不做任何变更,静默退出
  • 想确保字符集一致,得先 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,后续插入中文就可能报错或截断。所以建库这一步,不是“能跑就行”,而是整个数据一致性链条的第一环。

text=ZqhQzanResources