计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive

CREATE DATABASE

更新时间:2024-08-20 GMT+08:00

功能描述

创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。

注意事项

  • 只有拥有CREATEDB权限的用户才可以创建新数据库,系统管理员默认拥有此权限。
  • 不能在事务块中执行创建数据库语句。
  • 在创建数据库过程中,出现类似“Permission denied”的错误提示,可能是由于文件系统上数据目录的权限不足。出现类似“No space left on device”的错误提示,可能是由于磁盘满引起的。

语法格式

CREATE DATABASE database_name
    [ [ WITH ] { [ OWNER [=] user_name ] |
               [ TEMPLATE [=] template ] |
               [ ENCODING [=] 'encoding' ] |
               [ LC_COLLATE [=] 'lc_collate' ] |
               [ LC_CTYPE [=] 'lc_ctype' ] |
               [ DBCOMPATIBILITY [=] 'compatibility_type' ] |
               [ TABLESPACE [=] tablespace_name ] |
               [ CONNECTION LIMIT [=] connlimit ] |
               [ DBTIMEZONE [=] 'time_zone' ] }[...] ];

参数说明

  • database_name

    数据库名称。

    取值范围:字符串,要符合标识符命名规范且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。当角色名中包含大写字母时数据库会自动转换为小写字母,如果需要创建包含大写字母的角色名则需要使用双引号括起来。

    说明:

    标识符需要为小写字母(a-z)、大写字母(A-Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。

  • OWNER [ = ] user_name

    可选。数据库所有者。缺省时,新数据库的所有者是当前用户。

    取值范围:已存在的用户名。

  • TEMPLATE [ = ] template

    可选。模板名。即从哪一个模板创建新数据库。GaussDB采用从模板数据库复制的方式来创建新的数据库。初始时,GaussDB包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。

    开启templatem特性后,会新增一个模板数据库templatem。开启templatem特性,参见《M-Compatibility开发指南》中"创建M-Compatibility数据库及用户"章节。

    取值范围:template0、templatem。

  • ENCODING [ = ] 'encoding'

    可选。指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。

    不指定时,对于M-Compatibility数据库,默认使用utf8编码;其他默认使用模版数据库的编码。模板数据库template0和template1的编码默认与操作系统环境相关。template1不允许修改字符编码,因此若要变更编码,请使用template0创建数据库。

    常用取值:GBK、UTF8、Latin1、GB18030等,具体支持的字符集如下。

    表1 GaussDB字符集

    名称

    描述

    语言

    是否服务器端?

    ICU(International Components for Unicode)?

    字节/字符

    别名

    BIG5

    Big Five

    繁体中文

    1-2

    WIN950, Windows950

    EUC_CN

    扩展UNIX编码-中国

    简体中文

    1-3

    -

    EUC_JP

    扩展UNIX编码-日本

    日文

    1-3

    -

    EUC_JIS_2004

    扩展UNIX编码-日本, JIS X 0213

    日文

    1-3

    -

    EUC_KR

    扩展UNIX编码-韩国

    韩文

    1-3

    -

    EUC_TW

    扩展UNIX编码-中国台湾

    繁体中文

    1-3

    -

    GB18030

    国家标准

    中文

    1-4

    -

    GB18030_2022

    国家标准

    中文

    1-4

    -

    GBK

    扩展国家标准

    简体中文

    1-2

    WIN936, Windows936

    ISO_8859_5

    ISO 8859-5, ECMA 113

    拉丁语/西里尔语

    1

    -

    ISO_8859_6

    ISO 8859-6, ECMA 114

    拉丁语/阿拉伯语

    1

    -

    ISO_8859_7

    ISO 8859-7, ECMA 118

    拉丁语/希腊语

    1

    -

    ISO_8859_8

    ISO 8859-8, ECMA 121

    拉丁语/希伯来语

    1

    -

    JOHAB

    JOHAB

    韩语

    1-3

    -

    KOI8R

    KOI8-R

    西里尔语(俄语)

    1

    KOI8

    KOI8U

    KOI8-U

    西里尔语(乌克兰语)

    1

    -

    LATIN1

    ISO 8859-1, ECMA 94

    西欧

    1

    ISO88591

    LATIN2

    ISO 8859-2, ECMA 94

    中欧

    1

    ISO88592

    LATIN3

    ISO 8859-3, ECMA 94

    南欧

    1

    ISO88593

    LATIN4

    ISO 8859-4, ECMA 94

    北欧

    1

    ISO88594

    LATIN5

    ISO 8859-9, ECMA 128

    土耳其语

    1

    ISO88599

    LATIN6

    ISO 8859-10, ECMA 144

    日耳曼语

    1

    ISO885910

    LATIN7

    ISO 8859-13

    波罗的海

    1

    ISO885913

    LATIN8

    ISO 8859-14

    凯尔特语

    1

    ISO885914

    LATIN9

    ISO 8859-15

    带欧罗巴和口音的LATIN1

    1

    ISO885915

    LATIN10

    ISO 8859-16, ASRO SR 14111

    罗马尼亚语

    1

    ISO885916

    MULE_INTERNAL

    Mule内部编码

    多语种编辑器

    1-4

    -

    SJIS

    Shift JIS

    日语

    1-2

    Mskanji, ShiftJIS, WIN932, Windows932

    SHIFT_JIS_2004

    Shift JIS, JIS X 0213

    日语

    1-2

    -

    SQL_ASCII

    未指定(见文本)

    任意

    1

    -

    UHC

    统一韩语编码

    韩语

    1-2

    WIN949, Windows949

    UTF8

    Unicode, 8-bit

    所有

    1-4

    Unicode

    WIN866

    Windows CP866

    西里尔语

    1

    ALT

    WIN874

    Windows CP874

    泰语

    1

    -

    WIN1250

    Windows CP1250

    中欧

    1

    -

    WIN1251

    Windows CP1251

    西里尔语

    1

    WIN

    WIN1252

    Windows CP1252

    西欧

    1

    -

    WIN1253

    Windows CP1253

    希腊语

    1

    -

    WIN1254

    Windows CP1254

    土耳其语

    1

    -

    WIN1255

    Windows CP1255

    希伯来语

    1

    -

    WIN1256

    Windows CP1256

    阿拉伯语

    1

    -

    WIN1257

    Windows CP1257

    波罗的海

    1

    -

    WIN1258

    Windows CP1258

    越南语

    1

    ABC, TCVN, TCVN5712, VSCII

    ZHS16GBK

    扩展国家标准

    简体中文

    1-2

    -

    注意:
    • 需要注意并非所有的客户端API都支持上面列出的字符集。
    • SQL_ASCII设置与其他设置表现得相当不同。如果服务器字符集是SQL_ASCII,服务器把字节值0-127根据ASCII标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码,因为这个声明会忽略编码。在大多数情况下,如果你使用了任何非ASCII数据,那么使用SQL_ASCII设置都是不明智的,因为数据库将无法帮助你转换或者校验非ASCII字符。
    须知:
    • 指定新的数据库字符集编码必须与所选择的本地环境中(LC_COLLATE和LC_CTYPE)的设置兼容。
    • 当指定的字符编码集为GBK、ZHS16GBK时,部分中文生僻字无法直接作为对象名。这是因为GBK第二个字节的编码范围在0x40-0x7E之间时,字节编码与ASCII字符@A-Z[\]^_`a-z{|}重叠。其中@[\]^_'{|}是数据库中的操作符,直接作为对象名时,会语法报错。例如“侤”字,GBK16进制编码为0x8240,第二个字节为0x40,与ASCII“@”符号编码相同,因此无法直接作为对象名使用。如果确实要使用,可以在创建和访问对象时,通过增加双引号来规避这个问题。
    • 若客户端编码为A,服务器端编码为B,则需要满足数据库中存在编码格式A与B的转换。数据库能够支持的所有的编码格式转换详见系统表PG_CONVERSION(若无法转换,则建议客户端编码与服务器端编码保持一致,客户端编码可通过GUC参数client_encoding修改)。
    • 若要指定数据库字符集编码为GB18030_2022,且客户端编码也要设置为GB18030_2022时,必须确保客户端操作系统支持的GB18030字符集为2022版本,否则由于GB18030字符集自身的各版本间存在不完全兼容,可能导致数据的不一致性。同时,涉及到历史数据切换为GB18030_2022数据库时应当遵循切库流程,进行数据迁移操作。
  • LC_COLLATE [ = ] 'lc_collate'

    可选。指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。

    该参数的使用会影响到对字符串的排序顺序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的字符集。该参数对M-Compatibility数据库不生效。

    取值范围:操作系统支持的字符集。

  • LC_CTYPE [ = ] 'lc_ctype'

    可选。指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。该参数对M-Compatibility数据库不生效。

    取值范围:操作系统支持的字符分类。

    说明:
    • 对于lc_collate和lc_ctype参数的取值范围,取决于本地环境支持的字符集。例如:在Linux操作系统上,可通过locale -a命令获取操作系统支持的字符集列表,在应用lc_collate和lc_ctype参数时可从中选择用户需要的字符集和字符分类。
    • 如果需要设置字符编码集为GB18030_2022时,lc_collate参数和lc_ctype参数的取值范围与GB18030保持一致。
    • 如果需要设置字符编码集为ZHS16GBK时,lc_collate参数和lc_ctype参数的取值范围需与GBK字符集保持一致。
  • DBCOMPATIBILITY [ = ] compatibility_type

    可选。指定兼容的数据库的类型,默认兼容O。

    取值范围:A、B、C、PG、M。分别表示兼容O、MY、TD、POSTGRES和M-Compatibility。

    说明:
    • A兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。
    • 将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。
    • PG兼容性下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。
    • M-Compatibility下,数据库特性详见《M-Compatibility开发指南》。
  • TABLESPACE [ = ] tablespace_name

    可选。指定数据库对应的表空间。

    取值范围:已存在表空间名。

  • CONNECTION LIMIT [ = ] connlimit

    可选。数据库可以接受的并发连接数。

    须知:
    • 系统管理员不受此参数的限制。
    • connlimit数据库主节点单独统计,数据库整体的连接数 = connlimit * 当前正常数据库主节点个数。

    取值范围:[-1, 2^31-1]的整数。默认值为-1,表示没有限制。

有关字符编码的一些限制:

  • 若区域设置为C(或POSIX),则允许所有的编码类型,但是对于其他的区域设置,字符编码必须和区域设置相同。
  • 若字符编码方式是SQL_ASCII,并且修改者为管理员用户时,则字符编码可以和区域设置不相同。
  • 编码和区域设置必须匹配模板数据库,除了将template0当作模板。 因为其他数据库可能会包含不匹配指定编码的数据,或者可能包含排序顺序受LC_COLLATE和LC_CTYPE影响的索引。复制这些数据会导致在新数据库中的索引失效。template0是不包含任何会受到影响的数据或者索引。
  • DBTIMEZONE [ = ] time_zone

    指定新数据库的时区。例如,通过DBTIMEZONE = '+00:00'设定该参数。该参数会影响新数据库的时区。默认设置为PRC时区。

    前提条件:当前连接数据库是A兼容、a_format_version='10c'、a_format_dev_version='s2'。

    取值范围:操作系统支持的时区名称和缩写或者-15:59到+15:00时间戳范围。

示例

--创建jim用户。
gaussdb=# CREATE USER jim PASSWORD '********';

--创建一个GBK编码的数据库testdb1。
gaussdb=# CREATE DATABASE testdb1 ENCODING 'GBK' template = template0;
--查看数据库testdb1信息。
gaussdb=#SELECT datname,pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'testdb1';
 datname | pg_encoding_to_char 
---------+---------------------
 testdb1 | GBK
(1 row)
--创建兼容A格式的数据库testdb2,并指定所有者为jim。
gaussdb=# CREATE DATABASE testdb2 OWNER jim DBCOMPATIBILITY = 'A';
--查看testdb2信息。
gaussdb=# SELECT t1.datname,t2.usename,t1.datcompatibility 
                   FROM pg_database t1,pg_user t2 
                   WHERE t1.datname = 'testdb2' AND t1.datdba=t2.usesysid;
 datname | usename | datcompatibility 
---------+---------+------------------
 testdb2 | jim     | A
(1 row)
--切换至A兼容性数据库testdb2,并设置会话参数。
gaussdb=# \c testdb2
testdb2=# SET a_format_version='10c';
testdb2=# SET a_format_dev_version='s2';
--创建兼容A格式的数据库并指定时区。
testdb2=# CREATE DATABASE testdb3 DBCOMPATIBILITY 'A' DBTIMEZONE='+08:00';
--查看testdb3信息。
testdb2=# SELECT datname,datcompatibility,dattimezone FROM pg_database WHERE datname = 'testdb3';
 datname | datcompatibility | dattimezone 
---------+------------------+-------------
 testdb3 | A                | +08:00
(1 row)
--切换至初始数据库
testdb2=# \c postgres
--删除数据库。
gaussdb=# DROP DATABASE testdb1;
gaussdb=# DROP DATABASE testdb2;
gaussdb=# DROP DATABASE testdb3;
--删除用户。
gaussdb=# DROP USER jim;

相关链接

ALTER DATABASEDROP DATABASE

优化建议

  • create database

    事务中不支持创建database。

  • ENCODING LC_COLLATE LC_CTYPE

    当新建数据库Encoding与模板数据库(SQL_ASCII)不匹配(为'GBK' /'UTF8'/'LATIN1'/'GB18030'/'GB18030_2022/ZHS16GBK')时,必须指定template [=] template0。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容