首页 > 数据库 > PostgreSQL > PostgreSQL:数据库的创建与删除
语法
PostgreSQL中可以使用\h+command的方式来获取对应的提示,例子如下:
postgres@postgres=>\h create database Command: CREATE DATABASE Description: create a new database Syntax: CREATE DATABASE name [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace_name ] [ ALLOW_CONNECTIONS [=] allowconn ] [ CONNECTION LIMIT [=] connlimit ] [ IS_TEMPLATE [=] istemplate ] ] URL: https://www.postgresql.org/docs/12/sql-createdatabase.html
查看当前已存在的数据库
postgres@postgres=>\l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------+-------+----------------------- postgres | postgres | LATIN1 | en_US | en_US | template0 | postgres | LATIN1 | en_US | en_US | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | LATIN1 | en_US | en_US | =c/postgres + | | | | | postgres=CTc/postgres (3 rows)
示例
创建新数据库
CREATE DATABASE test;
创建一个数据库 dbtest,拥有者是 utest,表空间是 tbstest
CREATE DATABASE dbtest OWNER utest TABLESPACE tbstest;
创建一个不同字符集的数据库
在本例中,如果指定的区域设置与 template1 中的区域设置不同,则需要 TEMPLATE template0 子句。(如果不是,那么显式地指定语言环境是多余的。)
CREATE DATABASE test LC_COLLATE 'sv_SE.utf8' LC_CTYPE 'sv_SE.utf8' TEMPLATE template0;
创建一个具有不同语言环境和不同字符集编码的数据库
指定的区域设置和编码设置必须匹配,否则将报告错误。
CREATE DATABASE test LC_COLLATE 'sv_SE.iso885915' LC_CTYPE 'sv_SE.iso885915' ENCODING LATIN9 TEMPLATE template0;
createdb 是一个 SQL 命令 CREATE DATABASE 的封装。
createdb 命令语法格式如下:
createdb [option...] [dbname [description]]
dbname:要创建的数据库名。
description:关于新创建的数据库相关的说明。
options:参数可选项,可以是以下值:
-D tablespace:指定数据库默认表空间。
-e:将 createdb 生成的命令发送到服务端。
-E encoding:指定数据库的编码。
-l locale:指定数据库的语言环境。
-T template:指定创建此数据库的模板。
--help:显示 createdb 命令的帮助信息。
-h host:指定服务器的主机名。
-p port:指定服务器监听的端口,或者 socket 文件。
-U username:连接数据库的用户名。
-w:忽略输入密码。
-W:连接时强制要求输入密码。
接下来我们打开一个命令窗口,进入到 PostgreSQL 的安装目录,并进入到 bin 目录,createdb 命令位于 **PostgreSQL安装目录/bin** 下,执行创建数据库的命令:
$ cd /Library/PostgreSQL/11/bin/ $ createdb -h localhost -p 5432 -U postgres runoobdb password ******
以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并创建 runoobdb 数据库。
语法
postgres@postgres=>\h drop database Command: DROP DATABASE Description: remove a database Syntax: DROP DATABASE [ IF EXISTS ] name URL: https://www.postgresql.org/docs/12/sql-dropdatabase.html
例子
正常删除
postgres=# drop database test1; DROP DATABASE postgres=# drop database test2; DROP DATABASE
无数据库
通过if exists子句进行判断,数据库不存在命令也不会报错
postgres=# drop database if exists test3; NOTICE: database "test3" does not exist, skipping DROP DATABASE postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows)
如果此时有其他连接正连接在需要删除的数据库上,将无法删除该数据库,报错如下:
postgres=# drop database test3; ERROR: database "test3" is being accessed by other users DETAIL: There is 1 other session using the database.
dropdb 是 DROP DATABASE 的包装器。
dropdb 用于删除 PostgreSQL 数据库。
dropdb 命令只能由超级管理员或数据库拥有者执行。
dropdb 命令语法格式如下:
dropdb [connection-option...] [option...] dbname
dbname:要删除的数据库名。
options:参数可选项,可以是以下值:
-e:显示 dropdb 生成的命令并发送到数据库服务器。
-i:在做删除的工作之前发出一个验证提示。
-V:打印 dropdb 版本并退出。
--if-exists:如果数据库不存在则发出提示信息,而不是错误信息。
--help:显示有关 dropdb 命令的帮助信息。
-h host:指定运行服务器的主机名。
-p port:指定服务器监听的端口,或者 socket 文件。
-U username:连接数据库的用户名。
-w:连接数据库的用户名。
-W:连接时强制要求输入密码。
--maintenance-db=dbname:删除数据库时指定连接的数据库,默认为 postgres,如果它不存在则使用 template1。
接下来我们打开一个命令窗口,进入到 PostgreSQL 的安装目录,并进入到 bin 目录,dropdb 名位于 PostgreSQL安装目录/bin 下,执行删除数据库的命令:
$ cd /Library/PostgreSQL/11/bin/ $ dropdb -h localhost -p 5432 -U postgres runoobdb password ******
以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并删除 runoobdb 数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31490526/viewspace-2738129/,如需转载,请注明出处,否则将追究法律责任。