您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

CREATE DATABASE

Name

CREATE DATABASE  --  创建新数据库

Synopsis

CREATE DATABASE 

name


    [ WITH [ LOCATION = '

dbpath

' ]
           [ TEMPLATE = 

template

 ]
           [ ENCODING = 

encoding

 ] ]
  

输入

name

要创建的数据库名.

dbpath

在文件系统里存储新数据库的可选位置;用字串文本声明. 或者用 DEFAULT 表示使用缺省位置.

template

从哪个模板创建新数据库,这是模板名.或者用 DEFAULT 使用缺省模板 ( template1 ).

encoding

创建新数据库用的多字节编码方法.声明一个字串文本名字 (比如, 'SQL_ASCII' ), 或者一个整数编号,或者是 DEFAULT 表示使用缺省编码.

输出

CREATE DATABASE

命令成功执行的返回信息.

ERROR: user ' username ' is not allowed to create/drop databases

你必须有特殊的 CREATEDB 权限来创建数据库。参阅 See CREATE USER

ERROR: createdb: database " name " already exists

如果声明的数据库 name 已经存在返回的信息.

ERROR: database path may not contain single quotes

数据库路径名 dbpath 不能包含单引号。这样要求是为了创建数据库目录的 shell 命令能够正确执行。

ERROR: CREATE DATABASE: may not be called in a transaction block

如果你有一个明确的事务块正在处理,你不能调用 CREATE DATABASE 。你必须先结束事务。

ERROR: Unable to create database directory ' path '.
ERROR: Could not initialize database directory.

这种情况最有可能是因为对数据目录权限不够, 磁盘已满或其他文件系统问题。数据库服务器运行的机器上的用户必 须能访问该路径。

描述

CREATE DATABASE 创建一个新的 PostgreSQL 数据库.创建者成为新数据库的管理员.

可以声明一个可选的数据库位置,例如,在另一块硬盘上存放数据库。 该路径必须是事先用 initlocation 命令准备好了的.

如果路径名不包含斜杠,那么它被解释成一个环境变量, 该变量必须为服务进程所知。这样数据库管理员 可以对能够在那里创建数据库进行控制。(例如,一个用户化的选择是 ' PGDATA2 '。)如果服务器带着 ALLOW_ABSOLUTE_DBPATHS (缺省时没有)选项编译, 那么也允许使用以斜杠开头为标识的绝对路径(例如, ' ' /usr/local/pgsql/data ')。

缺省时,新数据库将通过克隆标准系统数据库 template1 来创建.不同的模板可以用 TEMPLATE = name 来写.尤其是,如果你用 TEMPLATE = template0 , 你可以创建一个很纯净的数据库,只包括你的版本的 PostgreSQL 预定义的 标准对象.这个方法可以避免把任何已经加入到 template1 里的本地安装对象拷贝到新数据库.

可选的编码参数允许选择数据库编码, 如果你的服务器是带着多字节编码支持编译的话. 如果没有声明,缺省是所选用的模板数据库用的编码.

可选参数可以以任意顺序写,而不仅是上面显示的顺序.

注意

CREATE DATABASE PostgreSQL 语言的扩展.

使用 DROP DATABASE 删除一个数据库.

程序 createdb 是 是这个命令的 shell 脚本的封装,提供来方便使用。

在用绝对路径指定的可选数据库位置时, 有一些安全和数据完整性的问题, 而且缺省时只有后端识别的环境变量可以声明为可选的路径. 参考管理员手册获取更多的信息.

尽管我们可以通过把某数据库名声明为模板从非 template1 数据库 拷贝数据库,但是这(还)不是一个通用的 COPY DATABASE 功能. 因此,我们建议当做模板使用的数据库都应该是以只读方式对待的. 参阅 管理员手册 获取更多信息.

用法

创建一个新的数据库:


olly=>
 

create database lusiadas;


   

在另一个地方 ~/private_db 创建新数据库:


$
 

mkdir private_db



$
 

initlocation ~/private_db


    
The location will be initialized with username "olly".
This user will own all the files and must also own the server process.
Creating directory /home/olly/private_db
Creating directory /home/olly/private_db/base

initlocation is complete.
    



$
 

psql olly



Welcome to psql, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit


olly=>

 

CREATE DATABASE elsewhere WITH LOCATION = '/home/olly/private_db';



CREATE DATABASE

   

兼容性

SQL92

在 SQL92 里没有 CREATE DATABASE 语句. 数据库等同于目录,其创建是由实现决定的.