概览概述(Overview)
部分 角色、数据库、表空间 对象,是在 DB Cluster 级别创建的,保存在 pg_global 中。
对象间的层级关系:Cluster Database Schema Table;(Schema 是个总称,其中包含 Table Function 等等);
当建立连接时,必须指定数据库。
查看数据库:
SELECT datname FROM pg_database; psql> \l
创建数据库(Creating a Database)
CREATE DATABASE name; createdb dbname # 命令行创建数据库; createdb # 以当前用户名创建数据库; // 为某个用户创建数据库 // 相应数据库属于当前用户,也用于后期删除操作; CREATE DATABASE dbname OWNER rolename; createdb -O rolename dbname
pg_database 的 datistemplate:暗示数据库是否为模板;否则只有 SuperUser 能够克隆该数据库;
pg_database 的 datallowconn:暗示数据库能否被连接;
模板数据库(Template Databases)
postgres,是最初的数据库,通过 initdb 创建;
template1,也是最初创建的数据库,所有 CREATE DATABASE 将复制该数据库;
template0,也是最初创建的数据库,但是其内容更加简单。需要使用这种类型的数据库:恢复 pg_dump 产生的数据时;template1 包含某些特定设置,而 template 则可以进行所需要的设置;
通过模板创建数据库:
CREATE DATABASE dbname TEMPLATE template0; createdb -T template0 dbname
数据库配置(Database Configuration)
修改特定数据库的配置:
ALTER DATABASE mydb SET geqo TO off; ALTER DATABASE dbname RESET varname; # 重置数据库配置
销毁数据库(Destroying a Database)
通过 DROP DATABASE 命令删除数据库;
但是,在登录当前数据库的时候,不能进行该数据库的删除动作;
表空间(Tablespaces)
表空间,其主要用途是来控制数据库文件在文件提供的保存位置的。例如,某些数据库的访问对性能有要求,所以将某些数据库保存在 SSD 磁盘中。
CREATE TABLESPACE fastspace LOCATION '/ssd1/postgresql/data'; CREATE TABLE foo(i int) TABLESPACE space1;