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