Chapter 18. 管理資料庫

Table of Contents
18.1. 概述
18.2. 建立資料庫
18.3. 模板資料庫
18.4. 資料庫配置
18.5. 刪除資料庫
18.6. 資料表空間

每個正在執行的PostgreSQL伺服器實例都管理著一個或多個資料庫。 因此,在組織SQL"資料庫對像")對象的層次中,資料庫位於最頂層。 本章描述資料庫的屬性,以及如何建立,管理,和刪除它們。

18.1. 概述

資料庫是一些SQL對像("資料庫對像")的命名集合; 通常每個資料庫對像(資料表,函數等等)屬於並且只屬於一個資料庫。 (不過有幾個系統資料表,比如 pg_database,屬於整個集群並且可以在集群之內的每個資料庫裡訪問。) 更準確地說,一個資料庫是一個模式的集合,而模式包含資料表,函數等等。 因此完整的層次是這樣的:伺服器,資料庫,模式,資料表(或者其他類型對象,比如函數)。

在與資料庫伺服器連線的時候,應用應該在它的連線請求裡面帶有它想與之連線的資料庫名稱。 不允許在一次連線裡面對多個資料庫訪問.(不過沒有限制一個應用與同一個或者其他資料庫可以建立的連線數量.) 資料庫是實際上相互隔離的, 對它們的訪問控制是在連線層次進行控制的。如果一個PostgreSQL 伺服器實例用於承載那些應該分隔並且相互之間並不知曉的用戶和項目, 那麼我們建議把它們放在不同的資料庫裡。如果項目或者用戶是相互關聯的, 並且可以相互使用對方的資源,那麼應該把它們放在同一個資料庫裡, 但可能是不同的模式裡。模式只是一個純粹的邏輯結構,誰能訪問某個模式由權限系統控制。 有關管理模式的更多訊息在 Section 5.8 裡。

資料庫是使用 CREATE DATABASE 命令建立的(參閱 Section 18.2), 用 DROP DATABASE 命令刪除(參閱 Section 18.5)。 要判斷現有資料庫的集合,檢查系統資料表 pg_database,比如

SELECT datname FROM pg_database;

psql 程序的 \l 元命令和 -l 命令行選項也可以用來列出現存資料庫。

注意: SQL 標準把資料庫稱作"目錄(catalog)",不過這兩個東西實際上沒有什麼區別。