PostgreSQL7.0手册-用户手册-19. SQL命令-CREATE DATABASE
2019-09-08 23:33:01
供稿:网友
CREATE DATABASE
名称
CREATE DATABASE ― 创建新数据库
语法
CREATE DATABASE name [ WITH LOCATION = 'dbpath' ]
输入
name
要创建的数据库名.
dbpath
在文件系统里存储新数据库的可选位置。参阅下面的注意事项。
输出
CREATE DATABASE
命令成功执行的返回信息.
ERROR: user 'username' is not allowed to create/drop databases
你必须有特殊的 CREATEDB 权限来创建数据库。参阅 CREATE USER。
ERROR: createdb: database "name" already exists
如果声明的数据库 database 已经存在返回的信息.
ERROR: Single quotes are not allowed in database names., ERROR: Single quotes are not allowed in database paths.
数据库 name 和 dbpath 不能包含单引号。这样要求是为了创建数据库目录的 shell 命令能够正确执行。
ERROR: The path 'xxx' is invalid.
对声明的 dbpath 扩展(参阅下面为什么)失败。检查你输入的路径或者确信你引用的环境变量的确存在。
ERROR: createdb: 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 创建一个新的 Postgres 数据库.创建者成为新数据库的管理员.
A
可以声明一个可选的数据库位置,例如,为了在另一块硬盘上存放数据库。该路径必须是事先用 initlocation 准备好了的.
如果路径包含斜杠,那么(斜杠)前面的部分被解释成一个环境变量,该变量必须为服务进程所知。这样数据库管理员可以对能够在那里创建数据库进行控制。(例如,一个用户化的选择是 'PGDATA2'。)如果服务器被编译成带有 ALLOW_ABSOLUTE_DBPATHS (缺省时没有)选项,以斜杠开头为标识的绝对路径(例如, '/usr/local/pgsql/data')同样也允许。
注意
CREATE DATABASE 是 Postgres 语言的扩展.
使用 drop_database 删除一个数据库.
程序 createdb 是这个命令的 shell 脚本的封装,提供来方便使用。
在用绝对路径指定的可选数据库位置时,有一些安全和数据完整性的问题,而且缺省时只有后端识别的环境变量可以声明为可选的路径.参考管理员手册获取更多的信息.
用法
创建一个新的数据库:
olly=> create database lusiadas;
在另一个地方创建新数据库. ~/private_db:
$ mkdir private_db
$ initlocation ~/private_db
Creating Postgres database system directory /home/olly/private_db/base
$ 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 语句.数据库等同于目录,其创建是由实现决定的.