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
- 数据库名称
- 命名数据库。 名称不能以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;
