PostgreSQL CLI(psql)
速查
Shell:
psql -l # 列出所有 database
psql -U myuser mydb # 以指定 role 登入資料庫
createuser myuser # 建立使用者
createdb mydb -O myuser -E utf8 # 建立 database(指定 owner、編碼)
dropdb mydb # 刪除 database
進入 psql 互動介面後:
\? # psql 本身指令說明
\h # SQL 語法說明(可接指令名,如 \h CREATE TABLE)
\du # 列出 roles
\l # 列出 databases
\dt # 列出目前資料庫的 tables
\z # 列出 tables 與權限
\c dbname # 切換連線到另一個 database
\conninfo # 顯示目前連線資訊
\password user # 修改密碼
\q # 離開
登入 psql
psql [dbname]
psql -U [role] [dbname]
psql -U postgres # 以 postgres role 登入預設 postgres DB
psql -U myuser mydb
psql -U postgres -d mydb # -d 指定 database
常用參數
| 參數 | 說明 |
|---|---|
-l / --list | 列出所有 database(不必進互動介面) |
-d / --dbname | 指定 database |
-h / --host | 主機 |
-p / --port | port |
-U / --username | 使用者(role) |
-w / --no-password | 不提示密碼 |
-W / --password | 強制提示密碼 |
-V / --version | 版本 |
-e / --echo-queries | 把送出的查詢印出來 |
-? / --help | 說明 |
完整參數見 psql 官方文件。
進入介面後:SQL 與 Meta-Commands
登入後可直接 寫 SQL;可換行,遇到 ; 才執行。
CREATE DATABASE my_new_db;
確認後切換:
\l
\c my_new_db
Meta-Commands(\ 指令)
以 \ 開頭的指令由 psql 本身處理,不是送進 SQL engine。形式:\ + verb + 參數。
| 類別 | 指令 | 說明 |
|---|---|---|
| 連線 | \c [dbname [username] [host] [port]] | 切換/重連 |
| 連線 | \conninfo | 目前連線資訊 |
| 角色 | \du | 列出 roles |
| 資料庫 | \l | 列出 databases |
| 資料表 | \dt | 目前 DB 的 tables |
| 資料表 | \z [pattern] | tables 與權限 |
| 變數 | \set foo bar / \echo :foo | 設定/讀取變數 |
| 內建變數 | \echo :DBNAME 等 | DBNAME、ENCODING、HOST、PORT、USER |
| 說明 | \h create table | SQL 用法 |
| Shell | \! pwd | 執行本機 shell 指令 |
| 帳號 | \password [username] | 改密碼 |
| 離開 | \q | 離開 psql |
createdb / dropdb / createuser
不必進 psql,可在 Shell 直接管理 DB:
createdb demo
createdb minicare_test -O postgres -E utf8
dropdb demo
createuser myuser
createdb 常用參數:
| 參數 | 說明 |
|---|---|
-O / --owner | 指定 owner |
-E / --encoding | 編碼(常見 utf8 |