ITPub博客

首页 > 数据库 > 数据库开发技术 > 奇亿主管2540437PostgreSQL:数据库的创建与删除

奇亿主管2540437PostgreSQL:数据库的创建与删除

原创 数据库开发技术 作者:奇亿主管2540437 时间:2020-12-11 20:45:33 0 删除 编辑

创建数据库

CREATE DATABASE 

  1. 语法 
    PostgreSQL中可以使用\h+command的方式来获取对应的提示,例子如下: 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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
  2. 查看当前已存在的数据库 

    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 )
  3. 示例

    • 创建新数据库 

      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

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 runoobdb
password ******

以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并创建 runoobdb 数据库。

删除数据库

DROP DATABASE

  1. 语法 

    1
    2
    3
    4
    5
    6
    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
  2. 例子

    • 正常删除

      1
      2
      3
      4
      postgres=#  drop  database  test1;
      DROP  DATABASE
      postgres=#  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, 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 )
    • 如果此时有其他连接正连接在需要删除的数据库上,将无法删除该数据库,报错如下: 

      1
      2
      3
      postgres=#  drop  database  test3;
      ERROR:   database  "test3"  is  being accessed  by  other users
      DETAIL:  There  is  1 other session using the  database .

dropdb

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 runoobdb
password ******

以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并删除 runoobdb 数据库。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69990216/viewspace-2741621/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2020-12-11

  • 博文量
    1
  • 访问量
    349