使用 CREATE DATABASE 语句创建新数据库。
该语句是 SQL ANSI/ISO 标准的扩展。
该语句是 ANSI 标准语法的扩展。(SQL 语句的 ANSI/ISO 标准不为数据库的构造,即数据库的形成过程指定任何语法。)
CREATE DATABASE 指定的数据库成为当前的数据库。
如果 DBCREATE_PERMISSION 配置参数没有设置,则任何用户都可创建数据库。然而,如果该配置文件包含一个或多个 DBCREATE_PERMISSION 指定,则只有指定的用户才能创建数据库。无论 DBCREATE_PERMISSION 是否设置,用户 gbasedbt 都可以使用 CREATE DATABASE 语句。
您声明的数据库名称在您正在工作的数据库服务器环境中必须是唯一的。数据库服务器创建描述新数据库的结构的系统目录表。
如果您包含了可选的 IF NOT EXISTS 关键字,则当指定的数据库名称已经存在于您要连接的由数据库服务器实例管理的数据库中时,数据库不会采取任何操作(而不是向应用程序发送异常)。
当创建数据库时,只有您自己可以存取它。它不会让其他用户访问,除非您作为 DBA 通过运行 GRANT 语句授权。
如果先前的 CONNECT 语句建立了到数据库的显式连接,而且该连接仍是当前连接,那么在使用 DISCONNECT 语句关闭该显式连接之前,你不能使用 CREATE DATABASE 语句(或任何创建隐式连接的 SQL 语句)。
在 GBase 8s ESQL/C 中,CREATE DATABASE 语句不能出现在多语句 PREPARE 操作中。
您要连接的数据库服务器实例的 SQL_LOGICAL_CHAR 配置参数记录在该新数据库的系统目录中。SQL_LOGICAL_CHAR 配置参数扩展内置字符数据类型声明中的大小设定的扩展。即使 GBase 8s 实例管理的数据库被新的 SQL_LOGICAL_CHAR 值停止并重启,也不能更改此设置,它会持续到数据库被删除。systables 系统目录表的 flags 列为此数据库编码 SQL_LOGICAL_CHAR 设置。
如果您未指定 dbspace ,则缺省情况下,数据库服务器在 root dbspace 中创建系统目录表。然而,如果您启用数据库自动定位,则缺省情况下,数据库创建于被此服务器选择的 dbspace 中。要启用数据库的自动定位,请将 AUTOLOCATE 配置参数或会话环境变量设置为一个正整数。
CREATE DATABASE vehicles;
CREATE DATABASE vehicles IN research;
但是如果没有 DROP DATABASE 语句删除现有的第一个示例创建的 vehicles 数据库,则第二个示例发生错误并失败,并且没有数据库被创建,因为 vehicles 数据库的标识符在数据库服务器实例中不是唯一的。