PostgreSQL:資料庫的建立與刪除

Ryan_Bai發表於2020-11-30

建立資料庫

CREATE DATABASE

  1. 語法
    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: 
  2. 檢視當前已存在的資料庫

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

  • 建立新資料庫

    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

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 資料庫。

刪除資料庫

DROP DATABASE

  1. 語法

    postgres@postgres=>\h drop database
    Command:     DROP DATABASE
    Description: remove a database
    Syntax:
    DROP DATABASE [ IF EXISTS ] name
    URL: 
  2. 例子

  • 正常刪除

    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

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章