CREATE DATABASE 语句

CREATE DATABASE语句在当前服务器上定义了一个 Db2 数据库。

调用 CREATE DATABASE

此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL

授权 CREATE DATABASE

以下定义的特权套装必须至少包含以下一项:

  • CREATEDBA特权
  • CREATEDBC特权
  • SYSADM 或 SYSCTRL 权限
  • 系统 DBADM
  • 更改开始安装 SYSOPR 权限(当前进程的 SQLID 设置为 SYSINSTL 时)更改结束

如果数据库是作为工作文件数据库创建的,则下面定义的权限集必须包含 SYSADM 权限。

权限设置:

如果语句嵌入到应用程序中,权限集就是计划或软件包所有者所拥有的权限。

如果语句是动态准备的,则权限集是指进程的SQL授权ID 所拥有的权限,除非该进程处于可信环境中,并且指定了ROLE AS OBJECT OWNER子句。 在这种情况下,特权集是指与流程的主要授权ID关联的角色所拥有的一组特权。

请参阅CREATE DATABASE的注释 ,了解CREATE DATABASE语句成功后的授权效果。

语法 CREATE DATABASE

阅读语法图跳过可视化语法图CREATE DATABASE数据库名称1BUFFERPOOLbpnameINDEXBPbpnameAS WORKFILEFOR会员名STOGROUPSYSDEFLT用户组名称CCSIDASCIIEBCDICUNICODE
注意:
  • 1 同一条款不得重复出现。

描述 CREATE DATABASE

数据库名称
命名数据库。 名称不能以DSNDB开头,也不能指明当前服务器上存在的数据库。 数据库名称不能以DSN开头,后面紧跟五个数字。 如果数据库是数据共享环境中的工作文件数据库,那么 DSNDB07 是一个可以接受的工作文件数据库名称。 但是,数据共享组中只能有一个成员使用 DSNDB07 作为其工作文件数据库的名称。
BUFFERPOOL bpname
指定在数据库中创建的表空间使用的默认缓冲池名称。 如果数据库是工作文件数据库,则无法指定 8KB 和 16KB 缓冲池。 有关bpname 的详细信息,请参阅 SQL中的命名约定

如果省略BUFFERPOOL子句,则使用TBSBPOOL子系统参数值的缓冲池。 如果隐式创建表空间,则 Db2 将按照隐式定义表空间中所述选择缓冲池。

INDEXBP bpname
指定用于数据库中创建的索引的默认缓冲池名称。 该名称可以标识一个 4KB、 8KB、 16KB 或 32KB 缓冲池。 有关bpname 的详细信息,请参阅 SQL中的命名约定

如果省略了 INDEXBP 条款,则使用安装面板 DSNTIP1 上为用户索引指定的缓冲池。 该面板上用户索引字段的缺省值为 BP0。

AS WORKFILE
指定数据库为工作文件数据库。 AS WORKFILE 只能在数据共享环境中指定。 每个 Db2 子系统只能创建一个工作文件数据库。 工作文件数据库用于工作文件、创建的全局临时表、声明的临时表以及敏感的静态可滚动游标。

PUBLIC隐式获得CREATETAB权限(无GRANT权限),可在工作文件数据库中定义已声明的临时表。 这种隐含的特权没有记录在 Db2 目录中,也无法撤销。

工作文件数据库不支持CCSID条款。 如果指定了 AS WORKFILE,请不要使用 CCSID 子句。

FOR 会员名
指定要为其创建数据库的成员。 仅在数据共享环境中指定FOR member-name。

如果未指定 FOR 成员名称 ,则该成员为执行 CREATE DATABASE 语句的 Db2 子系统。

STOGROUP 用户组名称
根据需要指定要使用的存储组,作为默认存储组,以满足数据库中表空间和索引对DASD空间的需求。 默认值为SYSDEFLT。
CCSID 编码方案
指定数据库中存储数据的默认编码方案。 默认设置适用于数据库中创建的表格空间。 存储在表格空间中的所有表格必须使用相同的编码方案。
ASCII
指定必须使用服务器的ASCII CCSID对数据进行编码。
EBCDIC
指定必须使用服务器的EBCDIC CCSID对数据进行编码。
UNICODE
指定必须使用服务器的UNICODE CCSID对数据进行编码。

通常,每种编码方案只需要一个CCSID。 当使用混合、图形或UNICODE数据时,需要额外的CCSID。

该选项默认为安装面板 DSNTIPF 上的字段 DEF ENCODING SCHEME 的值。

如果您指定了AS WORKFILE子句,请不要使用CCSID子句。

备注 CREATE DATABASE

如果语句嵌入在应用程序中,则计划或包的所有者就是数据库的所有者。 如果语句是动态生成的,则该过程的SQL授权ID就是数据库的所有者。

如果数据库拥有者拥有 CREATEDBA、SYSADM 或 SYSCTRL 权限,则该拥有者将获得该数据库的 DBADM 权限。 数据库管理员(DBADM)对数据库的权限包括对该数据库中所有表的表权限。 因此,如果拥有 SYSCTRL 权限的用户创建了一个数据库,则该用户对该数据库中的所有表都拥有表权限。 这是SYSCTRL权限不包括表权限的例外情况。

如果数据库所有者拥有 CREATEDBC 权限,但未拥有 CREATEDBA 权限,则该所有者将获得数据库的 DBCTRL 权限。 在这种情况下,除非具有SYSADM权限的授权ID授予权限,否则任何授权ID都不具有DBADM权限。

例子 CREATE DATABASE

示例 1
创建数据库 DSN8D12P。 指定 DSN8G120 作为数据库中表空间和索引的默认存储组。 将 8KB 缓冲池 BP8K1 指定为数据库中表空间的默认缓冲池,将 BP2 指定为数据库中索引的默认缓冲池。
   CREATE DATABASE DSN8D12P
     STOGROUP DSN8G120
     BUFFERPOOL BP8K1
     INDEXBP BP2;
示例 2
创建数据库 DSN8TEMP。 使用默认存储组和默认缓冲池名称的默认值。 将ASCII指定为数据库中存储数据的默认编码方案。
   CREATE DATABASE DSN8TEMP
     CCSID ASCII;