PostgreSQL數(shù)據(jù)庫(kù)管理入門之psql工具篇
psql是PostgreSQL自身提供的一款強(qiáng)大的查詢和腳本工具,本文將向讀者介紹該工具的入門知識(shí)。
一、關(guān)于psql
psql是PostgreSQL自身提供的一款查詢工具,也就是說,無論哪種操作系統(tǒng)平臺(tái)下,該工具都可用,并且使用方法都是一致的。所以,當(dāng)我們開發(fā)可移植的應(yīng)用軟件和技術(shù)的時(shí)候,該工具是一個(gè)理想的選擇。
Psql有兩大功能,除了作為交互查詢工具使用之外,psql還是一款理想的腳本工具。
#p#
二、使用方法
本文中,我們假設(shè)psql有權(quán)訪問PostgreSQL服務(wù)器,所有連接參數(shù)都是缺省的,但是現(xiàn)實(shí)中并非總是這樣。我們當(dāng)前的連接參數(shù)如下所示:
- psql –h hostname –p 5432 –d dbname –U username –W
下面開始介紹有關(guān)的具體操作。psql 最簡(jiǎn)單的用法就是執(zhí)行單個(gè)SQL命令,并輸出命令結(jié)果,如下所示:
- $ psql -c "SELECT current_time"
- timetz
- -----------------
- 20:48:62.384+01
- (1 row)
帶 -c的命令表示為非交互式的。如果您想一次執(zhí)行多條命令的話,可以將這些命令寫入一個(gè)文本文件中,然后通過-f 選項(xiàng)來執(zhí)行它們。下面給出的命令將加載一組命令:
- $ psql –f examples.sql
如果執(zhí)行成功,會(huì)產(chǎn)生如下所示的輸出:
- SET
- SET
- SET
- SET
- SET
- SET
- CREATE SCHEMA
- SET
- SET
- SET
- DROP TABLE
- CREATE TABLE
- DROP TABLE
- CREATE TABLE
腳本examples.sql非常類似于PostgreSQL備份工具所建立的轉(zhuǎn)儲(chǔ)文件,并且它們的類型與結(jié)果也是非常相通的。當(dāng)上面的命令成功執(zhí)行的時(shí)候,PostgreSQL會(huì)用命令的名稱生成命令標(biāo)簽,就像上面看到的輸出結(jié)果那樣。
上面的用法類似于批處理方式,實(shí)際上psql還可以用于交互方式,并且該方式是默認(rèn)的工作方式,無需任何選項(xiàng),例如:
- $ psql
- postgres=#
下面我們開始練習(xí)我們的第一條交互式命令,像下面這樣:
- postgres=# help
然后,我們就可以輸入SQL或其他的命令了。當(dāng)我們要退出交互模式的時(shí)候,可以使用如下所示的命令:
- postgres=# \quit
注意,這里您不能輸入quit,也不能輸入\exit或者其他選項(xiàng),而只能是\quit或者\(yùn)q,后者是前者的簡(jiǎn)寫形式。
#p#
三、命令類型
psql允許使用兩種類型的命令:
psql "meta-commands"
SQL
meta-command 是用于psql客戶端,而SQL則發(fā)給數(shù)據(jù)庫(kù)服務(wù)器。meta-command的一個(gè)例子是\q,它命令客戶端斷開連接。所有以反斜線符號(hào)\開頭的命令都被作為meta-command。
如果一條命令不是meta-command,那么它就是SQL命令。該命令將一直讀取SQL,直到遇見分號(hào)為止,所以我們可以將一條較長(zhǎng)的SQL命令分到多行中,只要您覺得方便即可。
命令help是唯一的例外。help命令有兩種形式,如下所示:
\? 提供psql meta - commands命令的幫助信息
\h 提供特定SQL命令的幫助信息
下面舉例進(jìn)行說明:
- postgres=# \h DELETE
- Command: DELETE
- Description: delete rows of a table
- Syntax:
- DELETE FROM [ ONLY ] table [ [ AS ] alias ]
- [ USING usinglist ]
- [ WHERE condition | WHERE CURRENT OF cursor_name ]
- [ RETURNING * | output_expression [ AS output_name ] [,]]
經(jīng)驗(yàn)表明,這是一種探索和記憶選項(xiàng)和語(yǔ)法好方法。
#p#
四、注釋方法
有兩種常用的注釋方法,即單行注釋和多行注釋,下面分別加以解釋。單行注釋用雙破折號(hào)表示:
- -- 這里是單行注釋
而多行注釋與Java語(yǔ)法類似,如下:
- /**//*
- *多行注釋
- */
#p#
五、其它功能
開始的時(shí)候,您對(duì)于psql的反斜扛命令可能不太適應(yīng),但是用一段時(shí)間就好了,您會(huì)發(fā)現(xiàn),該軟件是非常強(qiáng)大的。psql是PostgreSQL最神奇的部分之一,用過其他工具后您會(huì)發(fā)現(xiàn),它對(duì)于數(shù)據(jù)庫(kù)管理任務(wù)來說,作用非凡。
當(dāng)然,我們可回滾早先的命令歷史記錄功能。此外,tab補(bǔ)齊功能也是非常有幫助的,因?yàn)橹灰聪耇AB鍵,程序就會(huì)幫我們完成后面的語(yǔ)法部分。該功能對(duì)于對(duì)象名稱也同樣有效,所以我們只輸入前幾個(gè)字母,然后按Tab鍵所有可能的選擇都會(huì)顯示出來,這樣只要輸入足夠多的字符,對(duì)象名稱就會(huì)變成唯一選擇,這時(shí)敲一下Tab鍵就搞定了。下面是psql其它的有用的特性:
通知功能
輸出格式化
使用\timing命令計(jì)算執(zhí)行時(shí)間
輸入、輸出和編輯命令
自動(dòng)起動(dòng)執(zhí)行文件:.psqlrc
可替代的參數(shù)(變量)
訪問OS命令行
六、小結(jié)
psql是PostgreSQL自身提供的一款強(qiáng)大的查詢和腳本工具,在本文中,我們向讀者詳細(xì)介紹了該工具的有關(guān)入門知識(shí),希望對(duì)您能夠有所幫助。
【編輯推薦】