
# 创建和管理DWS数据库
数据库（Database）是表、索引、视图、存储过程、操作符等对象的集合。DWS支持创建多个数据库，但是客户端程序一次只能连接并访问一个数据库，无法跨数据库进行查询。
#### 模板和默认数据
- DWS提供了两个模板数据库template0、template1，以及一个默认的数据库gaussdb。
- 默认情况下，每个新创建的数据库都是基于一个模板数据库。DWS数据库默认使用template1作为模板，编码格式为SQL_ASCII，且不允许自定义字符编码。若创建数据库时需指定字符编码，请使用template0创建数据库。
- 请避免使用客户端或其他手段连接及操作两个模板数据库。
  ![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
  通过"show server_encoding"命令可以查看当前数据库存储编码。
  
 
#### 创建数据库
使用CREATE DATABASE语句创建一个新的数据库。
```
CREATE DATABASE mydatabase;
```
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
- 创建数据库时，若数据库名称长度超过63字节，server端会对数据库名称进行截断，保留前63个字节，因此建议数据库名称长度不要超过63个字节，不要使用多字节字符作为对象名。（如果出现因为误操作导致在多字节字符的中间截断进而无法删除数据库对象的现象，请使用截断前的数据库对象名进行删除操作，或将该对象从各个数据库节点的相应系统表中依次删掉。）
- 数据库名称遵循SQL标识符的一般规则。当前用户自动成为此新数据库的所有者。
- 如果一个数据库系统用于承载相互独立的用户和项目，建议把它们放在不同的数据库里。
- 如果项目或者用户是相互关联的，并且可以相互使用对方的资源，则应该把它们放在同一个数据库里，但可以规划在不同的Schema中。
- 用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库。
 
#### 查看数据库
查看数据库的方式：
- 使用\\l元命令查看数据库系统的数据库列表。
  ```
  \l
  ```
  
- 通过系统表pg_database查询数据库列表。
  ```
  SELECT datname FROM pg_database;
  ```
  
 
#### 修改数据库
可以使用ALTER DATABASE语句修改数据库属性（比如：owner、名称和默认的配置属性）。
- 为数据库设置默认的模式搜索路径。
  ```
  ALTER DATABASE mydatabase SET search_path TO pa_catalog,public;
  ```
  
- 重新命名数据库。
  ```
  ALTER DATABASE mydatabase RENAME TO newdatabase;
  ```
  
 
#### 删除数据库
可以使用DROP DATABASE语句删除数据库。该语句删除了数据库中的系统目录，并且删除了带有数据的磁盘上的数据库目录。用户必须是数据库的owner或者系统管理员才能删除数据库。当有用户连接数据库时，删除操作会失败。删除数据库时请先连接到其他的数据库。
使用DROP DATABASE语句删除数据库：
```
DROP DATABASE newdatabase;
```
