Loading...
Loading...
Loading...
Loading...
以下所提到慣例,用於指令的語法描述上(均為半型字元):
中括號([
和 ]
)指可選擇是否輸入的選項。(在 Tcl 指令的語法中,習慣使用問號 ?
來表達這樣的可選擇性)
大括號({
和 }
)及垂直線(|
)指的是必須要輸入的部份。
連續句點(...
)指的是該段落可以允許不斷重覆。
為了使說明更簡潔:
SQL 指令會跟在命令提示字元 =>
之後
Shell 命令會跟在命令提示字元 $
之後。雖然一般而言,提示字元可能不會顯示。
關於操作人員的定義:
管理者(Administrator) 一般的定義是負責安裝及運行資料庫系統的人
使用者(User) 指的是任何正在使用資料庫的人,或者正要使用任何 PostgreSQL 相關系統的人。
這些定義不應該被解釋得太過嚴格,在本文件中,對於系統管理的工作,並沒有固定的假設。
Loading...
Loading...
Loading...
Loading...
Loading...
版本:11
在開始使用之前,你需要瞭解基本的 PostgreSQL 系統架構。瞭解 PostgreSQL 如何回應操作,有助於讓你更清楚理解接下來的說明。
以資料庫的術語來說,PostgreSQL 採用了主從式架構(client/server)。PostgreSQL 會在進行下列操作時保持連線:
伺服器的執行程序,負責管理資料庫的檔案、受理用戶端的連線要求、執行相對應的資料庫動作。這樣的資料庫伺服端程式稱之為「postgres」。
用戶端的程式用來發起資料庫操作的行為,其設計的形態很廣泛:可能是文字介面的工具、圖型介面的程式、將資料庫內容顯示成網頁的網際網路伺服器、甚或是專用的資料庫管理工具。有一些用戶端程式是由 PostgreSQL 官方所提供,大部份由第三方的其他使用者所開發。
如同一般的主從式架構,用戶端與伺服端可以是兩台不同的主機,而他們透過 TCP/IP 的網路協定溝通。你應該將這個觀念謹記在心,因為某些在用戶端可以被存取的檔案,在伺服端可能就無法存取(或使用不同的檔案名稱)。
PostgreSQL 伺服器可以管理來自多個用戶端的同時連線。為了達到這樣的功能,它會自我複製(fork)成新的執行程序,一對一地處理每一個連線。這個部份進一步來說,用戶端和新的伺服器執行程序之間的溝通,並不需要原始的 postgres 執行程序介入。也就是說,主要的資料庫服務執行程序會持續等待其他用戶端的連線,協助安排好其與伺服端執行程序的配對之後便完全交接,再回到等待的狀態。(當然,使用者完全不會察覺這些行為,在此說明僅僅是為了整體性的概念描繪)
Loading...
Loading...
本章適合初學資料庫的朋友閱讀,以簡單的語法範例,實際操作以瞭解資料庫的運作方式。事實上,更複雜的資料庫行為,也不脫這個基本的操作模式。
Loading...
PostgreSQL 是一個關連式資料庫管理系統(RDBMS)。這表示它是一個管理關連性質資料的系統。關連性,基本上在數學裡是以資料表(table)的形式來表現的。今天,以資料表為形式儲存資料是很常見的事,它是很自然的表現,但也有很多其他組識資料庫的方式。在 Unix-like 的作業系統中,檔案和目錄是一個階層式資料庫的案例。更先進的發展是採用物件導向式的資料庫。
每一個資料表是很多資料列(row)的集合。而每一個資料列則以許多相同集合的欄位(column)所組成。每一個欄位都被指定了特定的資料型別。每一個資料列中欄位的次序是固定的。很重要且必須記得的是,SQL 並不保證資料列在資料表中的次序(雖然他們可以在顯示的時候被明確表現)。
一個資料庫中集合了許多資料表,而很多的資料庫則被一個 PostgreSQL 服務所管理,形成一個資料庫叢集。
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
本使用手冊由台灣 PostgreSQL 社群提供,翻譯自 PostgreSQL 官方使用手冊,以推廣 PostgreSQL 於台灣的應用。
本使用手冊由台灣 PostgreSQL 使用者社群提供,編譯自 PostgreSQL 官方使用手冊,以推廣 PostgreSQL 於台灣的應用。
本使用手冊目前編譯內容為 PostgreSQL 15。
每一個頁面均附上對應連結,翻譯未詳盡之處,可對照閱讀。 未翻譯完成之段落,將暫以原文(英文)替代。
此手冊為自由參與的開源專案,歡迎任何夥伴參與協作! 每一個頁面右上角均可點選「Edit on GitHub」,修改後直接送出 PR 即可。(只翻一句也可以唷!)
下載及安裝指引,請到,依您的環境選擇操作步驟。
任何問題或建議可以 Email 給我們的文件小組:
本手冊是 PostgreSQL 的官方手冊。由 PostgreSQL 開發人員和其他志願者在 PostgreSQL 軟體開發的同時所撰寫的。它描述了目前 PostgreSQL 版本正式支援的所有功能。
為了使有關 PostgreSQL 的大量資訊易於管理,本書劃分為幾個部分。每個部分針對的是不同需求的使用者,或針對處於 PostgreSQL 經驗不同階段的使用者:
是對新使用者的入門簡介。
將介紹 SQL 查詢語言環境,包括資料型別、函數以及使用者層級的效能調教。每個 PostgreSQL 使用者都應該閱讀此部份的內容。
則介紹伺服器的安裝及管理。任何維運 PostgreSQL 伺服器的人,無論是供私人使用還是提供給其他人使用,都應該閱讀此部分。
描述了 PostgreSQL 用戶端的程式設計介面。
為進階使用者提供有關資料庫服務進階功能的資訊。主題包括使用者定義的資料型別與函數。
包含有關 SQL 命令、用戶端和伺服器程式的參考資訊。這部分以命令或程序分類結構化資訊。
包含了對 PostgreSQL 開發人員可能有用的各種資訊。
PostgreSQL 是美國加州伯克萊大學資訊科學系基於 所研發的物件關聯式資料庫管理系統(ORDBMS, Object-Relational Database Management System)。POSTGRES 中的許多重要概念成為日後一些商用資料庫系統重要的一部份。
PostgreSQL 由伯克萊大學公開其原始碼所誕生,它支援了大多數的標準 SQL 語法,並提供許多先進的功能:
複雜查詢(complex queries)
外部索引鍵(foreign keys)
觸發器(triggers)
可更新檢查表(updatable views)
事務完整性(transactional integrity)
多版本併行控制(multiversion concurrency control)
同時,PostgreSQL 也支援讓使用者能以自己的方式進行擴充。比如透過新增:
資料型別(data types)
函數(functions)
操作(operators)
聚合函數(aggregate functions)
索引方法(index methods)
過程式語言(procedural languages)
並且基於自由許可證,任何人都能夠以任何目的,免費地使用、修改、與散布 PostgreSQL,不論是個人使用、商業用途還是學術研究。
現在被稱為 PostgreSQL 的物件關聯式資料庫管理系統,是根據美國加州伯克萊大學所研發的 POSTGRES 衍生而成。經過超過二十年以上的演進,PostgreSQL 現在是世界上最先進的開源資料庫系統。
POSTGRES 專案是由 Michael Stonebraker 教授領導的團隊進行研發,由美國國防高等研究計劃署(DARPA, Defense Advanced Research Projects Agency)、美國陸軍研究辦公室(ARO, the Army Research Office)、美國國家科學基金會(NSF, the National Science Foundation)及美國電磁系統實驗室(ESL, Inc)所贊助。POSTGRES 專案始於 1986 年,最原始的設計,"The design of POSTGRES",作為開端,其最初的資料結構模型則揭露於"The POSTGRES data model"。規則系統設計發表於"The design of the POSTGRES rules system",而當時的關連式資料儲存的架構則刊載於"The design of the POSTGRES storage system"。
POSTGRES 接下進行了幾次重大的變革。第一代的"demoware"在 1987 年真的實作成為可用的系統,並在 1988 年的 ACM-SIGMOD 研討會中進行展示,並在 1989 年六月,釋出了第一版可供外部使用者使用的資料庫系統。為了回應當時使用者對於第一代規則系統的批評,其規則系統重新進行設計,並在隔年 1990 年的六月份,隨即推出第二版系統,搭載新的規則系統設計。第三版系統則於 1991 年發表,新增支援多重儲存管理機制,改善查詢處理器,並又改寫了規則系統。如此直到 Postgres 95 誕生之前,主要都專注於移植性及可信賴度的發展。
POSTGRES 接下來開始被運用在許多不同的研究和產品上,財務資料分析系統、噴氣引擎效能監控系統、小行星追蹤資料庫、醫療資訊系統、以及數個地理資訊系統。POSTGRES 也被好幾所大學用於其教學工具。最後,由 Illustra Information Technologies(後來併入 ,而 Informix 目前為 所擁有)技術移轉,並將其商業化。於 1992 年末,POSTGRES 成為 主要的資料管理系統。
在 1993 年間,用戶數量呈現倍數成長,伴隨而來的是大量的程式碼維護與服務支援,占去絕大部份原來應該進行研究的時間。為了減少維運的負擔,伯克萊的 POSTGRES 專案正式終止於 4.2 版。
1994年,Andrew Yu 和 Jolly Chen 在 POSTGRES 增加了 SQL 語法的直譯器,並且以新的 Postgres95 為名,在網路上開放讓全世界的人使用,他們成為伯克萊 POSTGRES 原始碼最初的繼承者。
Postgres95 的程式碼是完全以 ANSI C 開發,並且輕量化了 25%。許多內部的改良增進了效率及可維護性。當時 Wisconsin Benchmark 進行測試,Postgres95 在 1.0.x 時的效能比原始的 POSTGRES 4.2 快了約 30% 至 50%。除了一些錯誤修正之外,還有下面這些主要的改良:
原有的 PostQUEL 以 SQL(實作於伺服器端)所取代。(連接介面在 PostQUEL 之後便採 函式庫)子查詢一直到 PostgreSQL 出現之前都還未支援,但在 Postgres95 便已能使用自訂的 SQL 函數,聚合函數 Aggregate function 則被重新實作。GROUP BY
查詢語句也在此時被加入。
提供新的工具 psql
可進行互動式的 SQL 操作,採用的是 GNU Readline 的技術,大量地取代了老舊的管理工具。
提供新的前端函式庫 libpgtcl
,支援 Tcl-based 用戶端程式。還有一個簡易的 shell 接口 pgtclsh
,使用新的 Tcl 命令來和 Postgres95 伺服器進行操作。
重新改寫了大型物件的交換介面,只保留大型物件翻轉(inversion)作為儲存大型物件的唯一機制。(移除了 inversion 檔案系統)
淘汰了實例層級(instance-level)的規則系統,但其規則仍用於重構規則所使用。
製作了一個簡短的說明,介紹標準的 SQL 功能,並隨 Postgres95 原始碼發佈。
使用 GNU make(取代 BSD make)來編譯程式碼。除此之外,Postgres95 也支援使用未修正的 GCC 編譯器(修正高精度資料對齊問題)。
1996 年,「Postgres95」這個名稱很明顯不再適合。於是我們選擇了新的名稱「PostgreSQL」來呈現出與原始 POSTGRES 之間的源由,也彰顯了結合 SQL 力量的意義。同時,我們設定其版本由 6.0 開始,重回伯克萊 POSTGRES 專案的版號序列。
許多人持續使用「Postgres」(現在已經很少使用全大寫字母表現)來代表 PostgreSQL,是因為傳統,也可能是因為比較好發音。這樣的用法也廣為用於暱稱或別名。
Postgres95 的發展主要在於瞭解及定義伺服器程式既有的問題,而 PostgreSQL 則更重視系統的能力與爭議性的功能上,不過所有的工作是全面性的。
除了此份文件之外,PostgreSQL 還有其他的參考資源:
PostgreSQL的 記錄了這個專案的 ,,以及其他更多不同主題的資訊。
PostgreSQL wiki 也有的頁面喔。
PostgreSQL 的,有最新軟體的釋出訊息,讓你能夠和 PostgreSQL 相處得更棒!
郵件列表的功能,是一個為您解答疑問的好地方,你也可以分享使用經驗給其他同好,或直接和開發者溝通。詳情請參閱 PostgreSQL 的官方網站。
PostgreSQL 是一個開源的專案,也就是說,它仰賴社群的每一個人給予支持。當你開始使用 PostgreSQL,你會需要其他人的幫助,可能是透過文件或是郵件列表的功能。請考慮也可以回饋您的知識。在閱讀郵件列表和回答疑問的同時,如果你學到了未被文件記載的知識時,請寫下來,並且供獻出來。如果你撰寫了一些程式碼增加了特別的功能,也希望能夠回饋到社群之中。
歡迎來到 PostgreSQL 的新手教學。在這個部份裡的內容,主要提供有關於 PostgreSQL 各項功能的簡介、關連式資料庫概念、以及 SQL 語法的入門說明。我們只假設您俱備一些電腦系統基本操作,並不需要很專業的 Unix 或程式設計經驗。這裡主要提供一些實用的經驗,還有 PostgreSQL 系統中重要部份的介紹。在這個部份並不會進行所有議題的詳細說明。
在你閱讀完新手教學之後,也許可以繼續閱讀:更多有關於 SQL 語法的標準知識;或者到:瞭解如何開發 PostgreSQL 的應用程式;而如果你需要建置及管理你的資料庫伺服器的話,請參閱的內容。
:從無到有,安裝一個 PostgreSQL 資料庫系統。
:認識 PostgreSQL 的資料庫架構。
:建立第一個 PostgreSQL 資料庫。
:開始存取你的 PostgreSQL 資料庫。
版本:11
你需要先進行安裝,才能開始使用 PostgreSQL。當然,PostgreSQL 也可能已經被安裝在你的系統之中,因為你的作業系統預設套件包含了 PostgreSQL,或其他系統管理者已先行安裝。如果是這樣的話,那麼你應該先瞭解作業系統的資訊,或向你的系統管理員取得存取方式的資訊。
如果你並不確定 PostgreSQL 是否已經可以使用,那麼你也可以自行安裝試試。這樣做並不是很困難,而且是很好的操作練習。PostgreSQL 可以以一般使用者進行安裝,它並不需要系統管理者(root)的權限才能安裝。
如果你打算自行安裝 PostgreSQL,你可以參考的指令進行,完成之後再回到這裡,以瞭解下面有關設定環境變數的內容。
如果你的系統管理者並非以預設的方式安裝,你可能還有一些額外的工作要做。例如,如果資料庫主機其實是遠端的伺服器,你會需要設定 PGHOST 的環境變數,將其指向資料庫主機的網路名稱。而 PGPORT 變數也是必須要設定的。最基本的情境是,如果你嘗試啓動一個應用程式,而它回報它無法取得資料庫連線時,你就必須洽詢你的系統管理者。而如果系統管理者就是你自己,那麼你應該依文件再確認你的環境設定是正確的。如果你仍然並不清楚前面所描述的事項,請詳細閱讀下一節的內容。
第一個測試確認你是否能夠存取一個資料庫服務,就是嘗試去建立一個資料庫。一個執行中的 PostgreSQL 服務可以管理許多個資料庫。一般來說,每一個專案或使用者會分開使用不同的資料庫。
你的系統管理員也可能已經為你建立了一個資料庫,如果是這樣的話,那你可以略過本節說明,直接進入到下一節的內容。
要建立一個新的資料庫,在本例中取名叫「mydb」,你可以使用以下的命令:
如果在這個步驟沒有產生任何回應,那就是成功了。你可以跳過本節剩餘的部份。
但你如果看到如下的訊息:
這個訊息代表 PostgreSQL 並沒有被正確的安裝。不是它沒有被安裝好,那就是你的命令路徑設定並未包含這個指令。 嘗試使用下列這個包含絕對路徑的指令看看:
命令路徑在你的系統可能會有些不同。洽詢你的系統管理員,或著檢查安裝步驟以修正這個情況。
另一種回應可能是如此:
這代表了資料庫服務尚未啓動,或者它並不存在於createdb預設連線的位置。同樣地,檢查安裝的步驟或洽詢系統管理者。
而另一種回應也可能是:
這裡指出你用來連線的使用者名稱。這種情況可能會發生在你的資料庫管理員並未建立屬於你的資料庫。(PostgreSQL 的使用者帳戶是獨立於作業系統的使用者帳戶的)如果你是資料庫管理員,請參閱,進行建立資料庫帳戶。你必須是 PostgreSQL 初始安裝的管理者(通常是 postgres),以建立第一個一般資料庫使用者的帳戶。這個情況也可能發生在,你被發配的 PostgreSQL 使用者名稱有別於你的作業系統使用者名稱,如果是這樣的話,那你需要在指令上使用 -U 選項,或者設定 PGUSER 環境變數,以指定你的 PostgreSQL 使用者名稱。
如果你有一個資料庫帳戶,但你並沒有建立資料庫的權限,你將會看到下列訊息:
並非每一個使用者都被授權可以建立一個新的資料庫。如果 PostgreSQL 拒絕你建立資料庫,那麼系統管理者就需要賦予你建立資料庫的權限。洽詢你的系統管理者,如果是這種情況的話。如果你是自行安裝 PostgreSQL,那麼你應該以你啓動資料庫服務的使用者登入作業系統,再嘗試這個操作。
你也可以建立資料庫,但使用其他的名稱。PostgreSQL 允許在資料庫系統中建立無限制數量的資料庫。資料庫名稱必須是以英文字母為開頭,總長度限制為 63 位元組。一個簡便的方式是,建立一個與你使用者名稱同名的資料庫。許多工具會預設假定資料庫名稱和你同名,所以這可以省略一些文字的輸入。要建立這樣的資料庫,只要簡單地輸入:
如果你不再使用你的資料庫,你可以移除它。舉例來說,你是 mydb 這個資料庫的擁有者(建立者),你可以使用下列指令來消毁它:
(對這個指令來說,資料庫名稱並不會預設使用你的使用者同名資料庫。你必須明確地指定名稱)這個動作會完全地移除所有和這個資料庫相關的檔案,並且沒有回復的可能,所以要進行這個動作的話,請一定要考慮清楚。
一旦你已經建立一個資料庫,你就可以開始以下列方式進行存取:
執行 PostgreSQL 互動式的終端程式,稱作 psql,它可以讓你輸入、編輯、執行 SQL 指令。
使用既有的圖型化介面工具,例如 pgAdmin 或是支援 ODBC 或 JDBC 的辦公室軟體,以建立並輸入資料到資料庫裡。不過這部份並未包含在這份手冊之中。
自行撰寫一個程式,可以使用許多種程式語言來完成。這個部份將會在第 IV 章中進行介紹。
在這份指南中,你可能會先使用 psql 來進行一些嘗試。你可以藉由下列指令開始操作 mydb 這個資料庫:
如果你並未指明資料庫名稱,那麼它預設會以你的使用者名稱作為資料庫名稱。在先前的章節使用 createdb 時,你已經知道這個隱含的規則了。
在 psql 中,你會以下列訊息開始:
最後一行也可能是:
這表示你是資料庫的超級使用者(superuser),如果你是自行安裝 PostgreSQL 的話,大概就會是這個情況。 作為一個超級使用者,表示你不會受限於任何存取控制。不過在這份指南中,這並不是重要的事。
如果你在啓動 psql 時遭遇了一些問題,那麼請回到前一節。createdb 和 psql 的行為很類似,如果前者正常,後者也應該如期運行。
最後一行會輸出的是 psql 的提示字串,它表示 psql 正在等待你輸入 SQL 查詢語句。試試下面的指令吧:
psql 程式中也內建了一些非 SQL 的命令。他們會以倒斜線( )起頭。舉例來說,你可以輸入下列指令以取得一些有關 PostgreSQL 所支援的 SQL 語法資訊:
要離開 psql 的話,請輸入:
在這一章之中,提供了一個如何使用 SQL 進行簡易操作的大致概念。這裡主要讓你有基本的認識,但無法提供 SQL 完整且巨細靡遺的說明。許多書籍詳細介紹了 SQL,例如「Understanding the New SQL. A complete quide.」及「A Guide to the SQL Standard. A user's guid to the standard database language SQL.」。你應該瞭解的是,一些 PostgreSQL 語法來自於標準 SQL 的延伸。
在下面的例子當中,我們假設你已經建立了一個資料庫 mydb,如同前面章節所述,你也能夠使用 psql 了。
這些例子也放在 PostgreSQL 的原始碼之中,你可以在目錄 src/tutorial/ 下找到他們。(PostgreSQL的可執行套件可能未包含這些檔案)想要使用這些檔案的話,首先請切換到該目錄之下,然後執行 make:
這將會建立編譯 C 語言的程序,包含了使用者自訂的函式及型別。接下來,進行下列動作,以開始這個導覽:
\i 指令會去指定的檔案讀取內容,並且執行。而在 psql 的 -s 選項則可以使用單步模式執行,也就是在每一個與伺服器互動的指令之後暫停。這個指令被使用在本節的檔案 basics.sql 之中。
你可以創建一個新的資料表,為它取一個名字,並且宣告所有的欄位名稱與其資料型別:
你可以把上述內容在 psql 中輸入,包含換行字元不會影響判讀。psql 是以分號作為指令結束的判定。
空白(包含「空白」、「定位符號」和「換行符號」)都可以自由使用在 SQL 指令當中。這表示你可以將指令以不同的形式排版,甚至全部寫都在一行也沒問題。使用破折號,連續2個("--"),表示緊接的內容只是註解,直到該行結束為止。PostgreSQL 是不分大小寫字母的,包括各類關鍵字和描述語,除非是使用雙引號括起來的文字。(更精確地說,沒有被雙引號括起來的識別字,都會轉為小寫字母進行識別)
varchar(80) 表示指定一個資料型別,它可以儲放任意 80 個字元以內的字串。int 是一般認知的整數型別。real 表示資料是單精確度的浮點數。date 顧名思義,就是日期時間型別。(本例中欄位名稱和型別都使用 date,這可能是方便,也可能是困擾,端看你如何使用。)
PostgreSQL 支援標準的資料型別 int, smallint, real, double precision, char(N), varchar(N), date, time, timestamp, interval,也支援了複合型的地理資料型別。PostgreSQL 可以自訂組合任意數量的資料型別。語法上,資料型別名稱並不是保留關鍵字的範圍,除非特定的標準 SQL 支援需求之外。
第二個例子用來儲存城市及其所在的地理位置:
point 型別是一個 PostgreSQL專屬資料型別的範例。
最後,應該被點出來的是,如果你不再需要一個表格,或者想要重新以別的方式創建它,那麼你可以以下列的指令來移除它:
INSERT 指令被用來將資料以資料列(row)的形式,新增至資料表(table)之中:
注意,所有的資料型別都有明確的輸入格式。只要不是簡單的數值內容,都必須要以單引號(')括住,如同在本例中的形式。日期時間型別(date type)的資料內容就比較有彈性,但在這個導覽之中,我們仍然使用較固定的格式來表現。
地理資訊型別(point type)需要有座標組作為輸入,如下所示:
到目前為止,語法的使用需要你依照欄位宣告的次序擺放,而另一種語法可以允許你明確地指定資料相對應的欄位:
你可以將欄位以不同的次序擺放,甚或略去某些欄位,例如,precipitation 欄位(prcp)內容未知:
許多開發者會認為,在撰寫習慣上,明確指定欄位是比較好的方式。
請執行下列的指令,你將會擁有後續章節所需要的範例資料。
你可能需要使用 COPY 這個指令從文字檔案來載入大量的資料。這個指令會比 INSERT 要快上許多,因為 COPY 指令的設計就是為了大量資料輸入而產生的。它少了一些彈性,但提供了效率上的最佳表現。使用範例如下所示:
資料來源的檔案必須存在於後端的伺服器之中,並且可被 PostgreSQL 使用者(postgres)所存取,注意不是用戶端的主機,因為後端伺服器的服務需要直接讀取該檔案。你可以取得更多詳細說明,在 的說明頁面。
要從資料表(table)中取出資料,稱作資料表的查詢。要進行這個行為,你需要 SQL 中的 SELECT 指令。這個指令由幾個部份所組成,回傳列表(select list,想要回傳的欄位)、資料表列表(資料來源的資料表)、選擇性的條件定義(指定一些限制條件)。舉個例子來說,要取得資料表 weather 中所有的資料的話,請輸入:
這裡的星號 * 表示「所有欄位」。下列的指令會回傳相同的結果。
其輸出結果將會如下所示:
你可以在回傳列表中撰寫一些運算表示式,而不只是簡單的欄位引用。舉例來說,你可以輸入:
這應該會產生這樣的結果:
注意,「AS」被用來重新命名輸出的欄位。(選用)
查詢語句可以加上「WHERE」來設定限制條件,以指定哪些列才需要被回傳。WHERE 的內容是一個布林(truth value)表示式,而只有在其運算值為真(true)時,該列才會被回傳。一般的布林運算子(AND, OR, NOT)都是被允許出現在表示式中的。舉例來說,下列的指令將會回傳 San Francisco 在雨天的天氣數值:
結果:
你可以將結果進行排序:
在這個例子之中,其次序並沒有完全地被指定,所以你可能會得到 San Francisco 的列以另一種次序呈現。而你如果以下列指令查詢的話,那你就會得到如上但固定的結果:
你可以在查詢時去除重覆的列:
再一次,其結果的次序可能每次都不同,你可以同時使用 DISTINCT 及 ORDER BY 來確保能得到一致性的查詢結果:
更多有關於 PostgreSQL 的發展,請參閱 。
更多有關於 createdb 和 dropdb 的說明,請參閱 和 的相關章節。
如此的話,psql 將會結束,並回到你的命令列介面之中。(想瞭解更多內建指令,在 psql 提示字串後輸入 \? 。)完整的 psql 說明,都記載在 之中。在這份指南中,我們並未使用這些功能,但你可以在需要的時候使用他們。