PostgreSQL16 使用Navica创建数据库

创建数据库

所有者

选你登录的用户名

你不填,自动把 “当前登录的用户” 当成所有者,不会报错!

模板

选择 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