创建数据库
所有者
选你登录的用户名
你不填,自动把 “当前登录的用户” 当成所有者,不会报错!
模板
选择 template0
【排序规则 / 字符分类】的作用
| 配置项 | 推荐值 | 原因 |
|---|---|---|
| 编码 | UTF8 |
支持所有中文和特殊字符,避免乱码 |
| 排序规则排序 | zh_CN.UTF-8 |
按中文拼音排序,列表展示正常 |
| 字符分类 | zh_CN.UTF-8 |
中文大小写、比较行为正常 |
连接限制
-1 表示不限制
sql预览
CREATE DATABASE "test"
WITH
OWNER = "postgres"
TEMPLATE = "template0"
ENCODING = 'UTF8'
LC_COLLATE = 'zh_CN.UTF-8'
LC_CTYPE = 'zh_CN.UTF-8'
;
为什么必须选择模板
PostgreSQL 创建数据库,必须基于一个“模板库”,不能凭空创建!
因为 PostgreSQL 设计机制就是:
所有新数据库 = 复制模板库(template1 或 template0)
模板库里自带了:
- 系统表
- 系统函数
- 系统视图
- 默认编码、排序规则
没有模板,就没有数据库!
两个模板的区别
1. template1(默认模板)
- 你平时界面点创建,自动用它
- 它的编码、排序规则固定死了
- 如果你想指定新的排序规则(比如 zh_CN.UTF-8)
→ 和模板冲突 → 直接报错!
2. template0(干净模板)
- 官方专门用来自定义编码、自定义排序的干净模板
- 你可以随便指定:
- UTF8
- zh_CN.UTF-8
- 不会冲突!不会报错!
总结
PostgreSQL:必须复制模板建库
想自定义中文排序 → 必须用 template0
