2 - psql
psql 是 PostgreSQL 的 CLI。
進入 psql
psql [{OPTIONS}] [{DB_NAME}]
常用 Options
-U {DB_USER}
以指定的 database user 身份進入(若為指定則為 OS 的 username)。
若沒有指定
{DB_NAME}
,就會連到預設的 DB。
可以透過設定 environment variable 來設定預設要連到哪個 DB、預設使用哪個 user:
export PGDATABASE=my_db
export PGUSER=myuser
export POSTGRES_PASSWORD=MyPassword
這樣就會預設連到名為 my_db
的 database,並且預設使用 myuser
。
[!Note] 剛安裝 PostgreSQL 時,DBMS 中只會有一個 default user 叫
postgres
,這個 user 的密碼為postgres
,另外也會有一個 default DB 叫postgres
。然而進入 psql 時,預設會使用 OS 的 username 作為登入 DBMS 的 username,比如你在 OS 中的 username 叫
ubuntu
,那在輸入psql
進入 psql 時,會嘗試登入名為ubuntu
的 DB user,此時就會看到「User "ubuntu" 不存在」的錯誤訊息。解決方法是切換 OS 的 user 至
postgres
:sudo -u postgres psql
Meta Commands
\q
離開 psql
\q
離開 psql[!Note] 離開 psql 並不等於停止 PostgreSQL server,若要停止 server,請參考這裡。
\l
列出所有 Databases
\l
列出所有 Databases\c
連線至指定 Database
\c
連線至指定 Database\conninfo
印出目前連線狀態
\conninfo
印出目前連線狀態\df
查看目前 Database 中有哪些可用的 Functions
\df
查看目前 Database 中有哪些可用的 Functions\dt
列出目前連線的 Database 的所有 Tables
\dt
列出目前連線的 Database 的所有 Tables\du
列出所有 Database Roles (Users)
\du
列出所有 Database Roles (Users)也可以使用 SELECT * FROM pg_catalog.pg_user;
達到類似的效果,但 SELECT * FROM pg_catalog.pg_user;
輸出的資訊更詳細,且就像操作一般 table 一樣可以做 WHERE
、ORDER BY
、GROUP BY
等操作。
這個指令與 SELECT * FROM user;
不同,SELECT * FROM user;
只會列出可以存取目前所連線的 DB 的 users。
\i {path/to/sql/file}
執行 .sql
檔案
\i {path/to/sql/file}
執行 .sql
檔案\x
切換呈現結果的方式
\x
切換呈現結果的方式Table 的呈現方式分為直式與橫式,當 table 欄位過多時適合切換為直式。
\?
查看所有 Meta Commands
\?
查看所有 Meta Commands參考資料
Last updated