更新时间:2023-12-01 GMT+08:00

创建和管理数据库

前提条件

用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库(如何赋予创建数据库的权限请参见用户)。

背景信息

  • 初始时,GaussDB(DWS)包含两个模板数据库template0、template1,以及一个默认的用户数据库gaussdb
  • CREATE DATABASE实际上通过拷贝模板数据库来创建新数据库。默认情况下,拷贝template1。请避免使用客户端或其他手段连接及操作两个模板数据库。
  • GaussDB(DWS)允许创建的数据库总数目上限为128个。
  • 数据库系统中会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。一个数据库集群中存在多个数据库时,需要通过-d参数指定相应的数据库实例进行连接。

操作步骤

  1. 创建一个新的数据库db_tpcds。

    1
    CREATE DATABASE db_tpcds;
    

    当结果显示如下信息,则表示创建成功。

    1
    CREATE DATABASE
    

    正如背景信息中所说,创建数据库时默认拷贝模板数据库template1。template1的编码格式为SQL_ASCII。对于这种编码格式,在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过数据库对象名长度限制(63字节)的时候,系统会从最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。

    针对这种情况,请遵循以下条件:

    • 保证数据对象的名称不超过限定长度。
    • 不要使用多字节字符做为对象名。

    如果出现因为误操作导致在多字节字符的中间截断进而无法删除数据库对象的现象,请使用截断前的数据库对象名进行删除操作,或将该对象从各个数据库节点的相应系统表中依次删掉。

    您也可以通过指示CREATE DATABASE使用template0取代template1进行拷贝,在复制tmplate0时指定新的编码和区域设置。例如使用utf-8编码集做为数据库的默认存储编码集(server_encoding)。详细请参见CREATE DATABASE的语法指导。

    通过“show server_encoding”命令可以查看当前数据库存储编码。

    • 数据库名称遵循SQL标识符的一般规则。当前用户自动成为此新数据库的所有者。
    • 如果一个数据库系统用于承载相互独立的用户和项目,建议把它们放在不同的数据库里。
    • 如果项目或者用户是相互关联的,并且可以相互使用对方的资源,则应该把它们放在同一个数据库里,但可以规划在不同的Schema中。Schema只是一个纯粹的逻辑结构,某个Schema的访问权限由三权分立的 “表1 默认的用户权限”控制。

  2. 查看数据库

    • 使用\l元命令查看数据库系统的数据库列表。
      1
      \l
      
    • 使用以下命令通过系统表pg_database查询数据库列表:
      1
      SELECT datname FROM pg_database;
      

  3. 修改数据库

    用户可以使用ALTER DATABASE命令修改数据库属性(比如:owner、名称和默认的配置属性)。

    • 使用以下命令为数据库设置默认的模式搜索路径:
      1
      ALTER DATABASE db_tpcds SET search_path TO pa_catalog,public;
      
    • 使用以下命令为数据库重新命名:
      1
      ALTER DATABASE db_tpcds RENAME TO human_tpcds;
      

  4. 删除数据库

    用户可以使用DROP DATABASE命令删除数据库。这个命令删除了数据库中的系统目录,并且删除了带有数据的磁盘上的数据库目录。用户必须是数据库的owner或者系统管理员才能删除数据库。当有人连接数据库时,删除操作会失败。删除数据库时请先连接到其他的数据库。

    使用如下命令删除数据库:
    1
    DROP DATABASE human_tpcds;