语法
PostgreSQL中可以使用\h+command的方式来获取对应的提示,例子如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
postgres@postgres=>\h
create
databaseCommand:
CREATE
DATABASEDescription:
create
a new
databaseSyntax: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 |
查看当前已存在的数据库
|
1
2
3
4
5
6
7
8
9
10 |
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
) |
示例
创建新数据库
|
1 |
CREATE
DATABASE
test; |
创建一个数据库 dbtest,拥有者是 utest,表空间是 tbstest
|
1 |
CREATE
DATABASE
dbtest OWNER utest TABLESPACE tbstest; |
创建一个不同字符集的数据库
在本例中,如果指定的区域设置与 template1 中的区域设置不同,则需要 TEMPLATE template0 子句。(如果不是,那么显式地指定语言环境是多余的。)
|
1
2
3 |
CREATE
DATABASE
test
LC_COLLATE
'sv_SE.utf8'
LC_CTYPE
'sv_SE.utf8'
TEMPLATE template0; |
创建一个具有不同语言环境和不同字符集编码的数据库
指定的区域设置和编码设置必须匹配,否则将报告错误。
|
1
2
3
4 |
CREATE
DATABASE
test
LC_COLLATE
'sv_SE.iso885915'
LC_CTYPE
'sv_SE.iso885915'
ENCODING LATIN9
TEMPLATE template0; |
createdb 是一个 SQL 命令 CREATE DATABASE 的封装。
createdb 命令语法格式如下:
|
1 |
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** 下,执行创建数据库的命令:
|
1
2
3 |
$
cd
/Library/PostgreSQL/11/bin/$ createdb -h localhost -p 5432 -U postgres runoobdbpassword ****** |
以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并创建 runoobdb 数据库。
语法
|
1
2
3
4
5
6 |
postgres@postgres=>\h
drop
databaseCommand:
DROP
DATABASEDescription: remove a
databaseSyntax:DROP
DATABASE
[ IF EXISTS ]
nameURL: https://www.postgresql.org/docs/12/sql-dropdatabase.html |
例子
正常删除
|
1
2
3
4 |
postgres=#
drop
database
test1;DROP
DATABASEpostgres=#
drop
database
test2;DROP
DATABASE |
无数据库
通过if exists子句进行判断,数据库不存在命令也不会报错
|
1
2
3
4
5
6
7
8
9
10
11
12
13 |
postgres=#
drop
database
if exists test3;NOTICE:
database
"test3"
does
not
exist, skippingDROP
DATABASEpostgres=# \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
) |
如果此时有其他连接正连接在需要删除的数据库上,将无法删除该数据库,报错如下:
|
1
2
3 |
postgres=#
drop
database
test3;ERROR:
database
"test3"
is
being accessed
by
other usersDETAIL: There
is
1 other session using the
database
. |
dropdb 是 DROP DATABASE 的包装器。
dropdb 用于删除 PostgreSQL 数据库。
dropdb 命令只能由超级管理员或数据库拥有者执行。
dropdb 命令语法格式如下:
|
1 |
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 下,执行删除数据库的命令:
|
1
2
3 |
$
cd
/Library/PostgreSQL/11/bin/$ dropdb -h localhost -p 5432 -U postgres runoobdbpassword ****** |
以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并删除 runoobdb 数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69990216/viewspace-2741621/ ,如需转载,请注明出处,否则将追究法律责任。