Skip to content

创建数据库

语法格式

sql
CREATE DATABASE [IF NOT EXISTS] database_name 
[CHARACTER SET {ColId|Sconst}]
[TIME ZONE]
[{DISABLE|ENABLE} ENCRYPT]
[ENCRYPT BY Sconst]

参数说明

  • IF NOT EXISTS:创建数据库时若同名数据库存在则忽略错误。该关键字无法验证已有同名数据库与当前创建库结构是否一致。
  • database_name:数据库名。
  • {ColId|Sconst}:字符集名称。可以在数据库中执行SELECT*FROM sys_charsets查看系统支持的字符集。
    • ColId:预定义的字符集标识符(如utf8),无需引号。
    • Sconst:字符串常量(如'utf8'),需单引号包裹。
  • TIME ZONE:时区,其形式为GMT+HH:MMGMT-HH:MM,表示当前时区与格林威治时间的时差。
  • {DISABLE|ENABLE} ENCRYPT:是否加密。
  • ENCRYPT BY Sconst:使用加密机加密并指定加密机名。

示例

  • 示例1
    创建一个名为dbtest的数据库,其字符集是GBK,时区是东8区,并使用名为TEST的加密机进行加密(加密机已创建)。

    sql
    SQL> CREATE DATABASE dbtest CHARACTER SET 'GBK' TIME ZONE 'GMT+08:00' ENABLE ENCRYPT ENCRYPT BY 'TEST';
  • 示例2
    创建数据库时存在同名数据库,但原数据库和创建库字符类型不同。

    SQL
    SQL> CREATE DATABASE db_fea CHAR SET 'GB18030';
    
    SQL> SELECT db_name,char_set from dba_databases WHERE db_name='DB_FEA';
    
    DB_NAME | CHAR_SET | 
    ------------------------------------------------------------------------------
    DB_FEA| GB18030|
    
    -- 创建一个与原数据库字符类型不同的数据库,此处会返回警告
    SQL> CREATE DATABASE IF NOT EXISTS db_fea CHAR SET 'gbk_chinese_ci';
    Warnning: [E2007] 数据库已存在
    
    -- 不会对原数据库产生影响
    SQL> SELECT db_name,char_set from dba_databases WHERE db_name='DB_FEA';
    
    DB_NAME | CHAR_SET | 
    ------------------------------------------------------------------------------
    DB_FEA| GB18030|