首页 > 数据库 > PostgreSQL > 正文

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 语句.数据库等同于目录,其创建是由实现决定的.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选