一、安裝
自然,在你能開始使用PostgreSQL之前, 你必須安裝它。PostgreSQL很有可能已經安裝到你的節點上了, 因為它可能包含在你的操作系統的發布里, 或者是系統管理員已經安裝了它。如果是這樣的話, 那么你應該從操作系統的文檔或者你的系統管理員那里獲取有關如何訪問PostgreSQL的信息。
如果你不清楚PostgreSQL是否已經安裝, 或者不知道你能否用它(已經安裝的)做自己的實驗,那么你就可以自己安裝。 這么做並不難,並且是一次很好的練習。PostgreSQL可以由任何非特權用戶安裝, 並不需要超級用戶 (root)的權限。
二、架構基礎
在我們繼續之前,你應該先了解PostgreSQL的系統架構。 對PostgreSQL的部件之間如何相互作用的理解將會使本節更易理解。
在數據庫術語里,PostgreSQL使用一種客戶端/服務器的模型。一次PostgreSQL會話由下列相關的進程(程序)組成:
-
一個服務器進程,它管理數據庫文件、接受來自客戶端應用與數據庫的聯接並且代表客戶端在數據庫上執行操作。 該數據庫服務器程序叫做postgres。
-
那些需要執行數據庫操作的用戶的客戶端(前端)應用。 客戶端應用可能本身就是多種多樣的:可以是一個面向文本的工具, 也可以是一個圖形界面的應用,或者是一個通過訪問數據庫來顯示網頁的網頁服務器,或者是一個特制的數據庫管理工具。 一些客戶端應用是和 PostgreSQL發布一起提供的,但絕大部分是用戶開發的。
和典型的客戶端/服務器應用(C/S應用)一樣,這些客戶端和服務器可以在不同的主機上。 這時它們通過 TCP/IP 網絡聯接通訊。 你應該記住的是,在客戶機上可以訪問的文件未必能夠在數據庫服務器機器上訪問(或者只能用不同的文件名進行訪問)。
PostgreSQL服務器可以處理來自客戶端的多個並發請求。 因此,它為每個連接啟動("forks")一個新的進程。 從這個時候開始,客戶端和新服務器進程就不再經過最初的 postgres進程的干涉進行通訊。 因此,主服務器進程總是在運行並等待着客戶端聯接, 而客戶端和相關聯的服務器進程則是起起停停(當然,這些對用戶是透明的。我們介紹這些主要是為了內容的完整性)。
三、創建一個數據庫
看看你能否訪問數據庫服務器的第一個例子就是試着創建一個數據庫。 一台運行着的PostgreSQL服務器可以管理許多數據庫。 通常我們會為每個項目和每個用戶單獨使用一個數據庫。你的站點管理員可能已經為你創建了可以使用的數據庫。 如果這樣你就可以省略這一步, 並且跳到下一節。
要創建一個新的數據庫,在我們這個例子里叫mydb,你可以使用下面的命令:
createdb mydb
如果看到類似下面的信息
createdb: command not found
那么就是PostgreSQL沒有安裝好。或者是根本沒安裝, 或者是你的shell搜索路徑沒有設置正確。嘗試用絕對路徑調用該命令試試:
/usr/local/pgsql/bin/createdb mydb 在你的站點上這個路徑可能不一樣。和你的站點管理員聯系或者看看安裝指導獲取正確的位置。
另外一種響應可能是這樣:
createdb: could not connect to database postgres: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
這意味着該服務器沒有啟動,或者沒有按照createdb預期地啟動。同樣, 你也要查看安裝指導或者咨詢管理員。
另外一個響應可能是這樣:
createdb: could not connect to database postgres: FATAL: role "joe" does not exist
在這里提到了你自己的登陸名。如果管理員沒有為你創建PostgreSQL用戶帳號, 就會發生這些現象。(PostgreSQL用戶帳號和操作系統用戶帳號是不同的。)
你需要變成安裝PostgreSQL的操作系統用戶的身份(通常是 postgres)才能創建第一個用戶帳號。 也有可能是賦予你的PostgreSQL用戶名和你的操作系統用戶名不同; 這種情況下,你需要使用-U選項或者使用PGUSER環境變量指定你的PostgreSQL用戶名。
如果你有個數據庫用戶帳號,但是沒有創建數據庫所需要的權限,那么你會看到下面的信息:
createdb: database creation failed: ERROR: permission denied to create database
並非所有用戶都被許可創建新數據庫。 如果PostgreSQL拒絕為你創建數據庫, 那么你需要讓站點管理員賦予你創建數據庫的權限。出現這種情況時請咨詢你的站點管理員。 如果你自己安裝了PostgreSQL, 那么你應該以你啟動數據庫服務器的用戶身份登陸然后參考手冊完成權限的賦予工作。
你還可以用其它名字創建數據庫。PostgreSQL允許你在一個站點上創建任意數量的數據庫。 數據庫名必須是以字母開頭並且小於 63 個字符長。 一個方便的做法是創建和你當前用戶名同名的數據庫。 許多工具假設該數據庫名為缺省數據庫名,所以這樣可以節省你的敲鍵。 要創建這樣的數據庫,只需要鍵入:
createdb
果你再也不想使用你的數據庫了,那么你可以刪除它。 比如,如果你是數據庫mydb的所有人(創建人), 那么你就可以用下面的命令刪除它:
dropdb mydb
(對於這條命令而言,數據庫名不是缺省的用戶名,因此你就必須聲明它) 。這個動作將在物理上把所有與該數據庫相關的文件都刪除並且不可取消, 因此做這中操作之前一定要考慮清楚。
四、訪問數據庫
一旦你創建了數據庫,你就可以通過以下方式訪問它:
(1)運行PostgreSQL的交互式終端程序,它被稱為psql, 它允許你交互地輸入、編輯和執行SQL命令。
(2)使用一種已有的圖形化前端工具,比如pgAdmin或者帶ODBC或JDBC支持的辦公套件來創建和管理數據庫。
(3)使用多種綁定發行的語言中的一種寫一個自定義的應用。
你可能需要啟動psql來試驗本教程中的例子。 你可以用下面的命令為mydb數據庫激活它:
psql mydb
如果你不提供數據庫名字,那么它的缺省值就是你的用戶賬號名字。在前面使用createdb的小節里你應該已經了解了這種方式。
在psql中,你將看到下面的歡迎信息:
psql (9.6.0) Type "help" for help. mydb=>
最后一行也可能是:
mydb=#
這個提示符意味着你是數據庫超級用戶,最可能出現在你自己安裝了 PostgreSQL實例的情況下。 作為超級用戶意味着你不受訪問控制的限制。 對於本教程的目的而言, 是否超級用戶並不重要。
如果你啟動psql時碰到了問題,那么請回到前面的小節。診斷createdb的方法和診斷 psql的方法很類似, 如果前者能運行那么后者也應該能運行。
psql打印出的最后一行是提示符,它表示psql正聽着你說話,這個時候你就可以敲入 SQL查詢到一個psql維護的工作區中。試驗一下下面的命令:
psql程序有一些不屬於SQL命令的內部命令。它們以反斜線開頭,"\"。 歡迎信息中列出了一些這種命令。比如,你可以用下面的命令獲取各種PostgreSQL的SQL命令的幫助語法:
mydb=> \h
要退出psql,輸入:
mydb=> \q
psql將會退出並且讓你返回到命令行shell。 (要獲取更多有關內部命令的信息,你可以在psql提示符上鍵入\?。)