psql -U john mydb在PostgreSQL的小抄為您提供了常見(jiàn)的PostgreSQL的命令和語(yǔ)句。
切換和連接
$ sudo -u postgres psql
列出所有數(shù)據(jù)庫(kù)
postgres=# \l
連接到名為 postgres 的數(shù)據(jù)庫(kù)
postgres=# \c postgres
斷開(kāi)
postgres=# \q
postgres=# \!
選項(xiàng) | 例子 | 描述 |
---|---|---|
[-d] <database> |
psql -d mydb | 連接到數(shù)據(jù)庫(kù) |
-U |
psql -U john mydb | 以特定用戶(hù)身份連接 |
-h -p |
psql -h localhost -p 5432 mydb | 連接到主機(jī)/端口 |
-U -h -p -d |
psql -U admin -h 192.168.1.5 -p 2506 -d mydb | 連接遠(yuǎn)程 PostgreSQL |
-W |
psql -W mydb | 強(qiáng)制密碼 |
-c |
psql -c '\c postgres' -c '\dt' | 執(zhí)行 SQL 查詢(xún)或命令 |
-H |
psql -c "\l+" -H postgres > database.html | 生成 HTML 報(bào)告 |
-l |
psql -l | 列出所有數(shù)據(jù)庫(kù) |
-f |
psql mydb -f file.sql | 從文件執(zhí)行命令 |
-V |
psql -V | 打印 psql 版本 |
\h |
有關(guān) SQL 命令語(yǔ)法的幫助 |
\h 刪除 |
DELETE SQL 語(yǔ)句語(yǔ)法 |
\? |
PostgreSQL 命令列表 |
在 PostgreSQL 控制臺(tái)中運(yùn)行
顯示版本
SHOW SERVER_VERSION;
顯示系統(tǒng)狀態(tài)
\conninfo
顯示環(huán)境變量
SHOW ALL;
列出用戶(hù)
SELECT rolname FROM pg_roles;
顯示當(dāng)前用戶(hù)
SELECT current_user;
顯示當(dāng)前用戶(hù)的權(quán)限
\du
顯示當(dāng)前數(shù)據(jù)庫(kù)
SELECT current_database();
顯示數(shù)據(jù)庫(kù)中的所有表
\dt
列出函數(shù)
\df <schema>
列出數(shù)據(jù)庫(kù)
\l
連接到數(shù)據(jù)庫(kù)
\c <database_name>
顯示當(dāng)前數(shù)據(jù)庫(kù)
SELECT current_database();
CREATE DATABASE <database_name> WITH OWNER <username>;
DROP DATABASE IF EXISTS <database_name>;
ALTER DATABASE <old_name> RENAME TO <new_name>;
列出當(dāng)前數(shù)據(jù)庫(kù)中的表
\dt
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
全局列出表
\dt *.*.
SELECT * FROM pg_catalog.pg_tables
列出表架構(gòu)
\d <table_name>
\d+ <table_name>
SELECT column_name, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '<table_name>';
CREATE TABLE <table_name>(
<column_name> <column_type>,
<column_name> <column_type>
);
創(chuàng)建表,使用自動(dòng)遞增的主鍵
CREATE TABLE <table_name> (
<column_name> SERIAL PRIMARY KEY
);
DROP TABLE IF EXISTS <table_name> CASCADE;
成為 postgres 用戶(hù),如果您有權(quán)限錯(cuò)誤
sudo su - postgres
psql
授予對(duì)數(shù)據(jù)庫(kù)的所有權(quán)限
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
授予數(shù)據(jù)庫(kù)連接權(quán)限
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
授予架構(gòu)權(quán)限
GRANT USAGE ON SCHEMA public TO <user_name>;
授予功能權(quán)限
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
授予對(duì)所有表進(jìn)行選擇、更新、插入、刪除的權(quán)限
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
在表上授予權(quán)限
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
授予在表上選擇的權(quán)限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];
更新列
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];
刪除列
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;
將列更新為自動(dòng)遞增的主鍵
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
插入到表中,使用自動(dòng)遞增的主鍵
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);
INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );
[選擇](http://www.postgresql.org/docs/current/static/sql-select.html]所有數(shù)據(jù)
SELECT * FROM <table_name>;
讀取一行數(shù)據(jù)
SELECT * FROM <table_name> LIMIT 1;
搜索數(shù)據(jù)
SELECT * FROM <table_name> WHERE <column_name> = <value>;
插入數(shù)據(jù)
INSERT INTO <table_name> VALUES( <value_1>, <value_2> );
更新數(shù)據(jù)
UPDATE <table_name>
SET <column_1> = <value_1>, <column_2> = <value_2>
WHERE <column_1> = <value>;
刪除所有數(shù)據(jù)
DELETE FROM <table_name>;
刪除特定數(shù)據(jù)
DELETE FROM <table_name>
WHERE <column_name> = <value>;
列出角色
SELECT rolname FROM pg_roles;
CREATE USER <user_name> WITH PASSWORD '<password>';
DROP USER IF EXISTS <user_name>;
修改用戶(hù)密碼
ALTER ROLE <user_name> WITH PASSWORD '<password>';
列出模式
\dn
SELECT schema_name FROM information_schema.schemata;
SELECT nspname FROM pg_catalog.pg_namespace;
CREATE SCHEMA IF NOT EXISTS <schema_name>;
DROP SCHEMA IF EXISTS <schema_name> CASCADE;
\d <table> |
描述表 |
\d+ <table> |
詳細(xì)描述表格 |
\dt |
列出當(dāng)前架構(gòu)中的表 |
\dt *.* |
列出所有模式中的表 |
\dt <schema>.* |
列出模式的表 |
\dp |
列出表訪問(wèn)權(quán)限 |
\det[+] |
列出外部表 |
—— | —— |
---|---|
\e [FILE] |
編輯查詢(xún)緩沖區(qū)(或文件) |
\ef [FUNC] |
編輯函數(shù)定義 |
\p |
顯示內(nèi)容 |
\r |
重置(清除)查詢(xún)緩沖區(qū) |
\s [FILE] |
顯示歷史記錄或?qū)⑵浔4娴轿募?/font> |
\w FILE |
將查詢(xún)緩沖區(qū)寫(xiě)入文件 |
\l[+] |
列出所有數(shù)據(jù)庫(kù) |
\dn[S+] |
列出模式 |
\di[S+] |
列出索引 |
\du[+] |
列出角色 |
\ds[S+] |
列出序列 |
\df[antw][S+] |
列出函數(shù) |
\deu[+] |
列出用戶(hù)映射 |
\dv[S+] |
列表視圖 |
\dl |
列出大對(duì)象 |
\dT[S+] |
列出數(shù)據(jù)類(lèi)型 |
\da[S] |
列出聚合 |
\db[+] |
列出表空間 |
\dc[S+] |
列出轉(zhuǎn)化次數(shù) |
\dC[+] |
列出演員表 |
\ddp |
列出默認(rèn)權(quán)限 |
\dd[S] |
顯示對(duì)象描述 |
\dD[S+] |
列出域 |
\des[+] |
列出國(guó)外服務(wù)器 |
\dew[+] |
列出外部數(shù)據(jù)包裝器 |
\dF[+] |
列出文本搜索配置 |
\dFd[+] |
列出文本搜索詞典 |
\dFp[+] |
列出文本搜索解析器 |
\dFt[+] |
列出文本搜索模板 |
\dL[S+] |
列出過(guò)程語(yǔ)言 |
\do[S] |
列出運(yùn)算符 |
\dO[S+] |
列出排序規(guī)則 |
\drds |
列出每個(gè)數(shù)據(jù)庫(kù)的角色設(shè)置 |
\dx[+] |
列出擴(kuò)展 |
S
: 顯示系統(tǒng)對(duì)象, +
: 附加細(xì)節(jié)
\c [DBNAME] |
連接到新數(shù)據(jù)庫(kù) |
\encoding [ENCODING] |
顯示或設(shè)置客戶(hù)端編碼 |
\password [USER] |
更改密碼 |
\conninfo |
顯示信息 |
\a |
在未對(duì)齊和對(duì)齊之間切換 |
\C [STRING] |
設(shè)置表格標(biāo)題,如果沒(méi)有則取消設(shè)置 |
\f [STRING] |
顯示或設(shè)置未對(duì)齊的字段分隔符 |
\H |
切換 HTML 輸出模式 |
\t [on|off] |
只顯示行 |
\T [STRING] |
設(shè)置或取消設(shè)置 HTML <table> 標(biāo)簽屬性 |
\x [on|off] |
切換擴(kuò)展輸出 |
\copy ... |
導(dǎo)入/導(dǎo)出表 另見(jiàn): 復(fù)制 |
\echo [STRING] |
打印字符串 |
\i FILE |
執(zhí)行文件 |
\o [FILE] |
將所有結(jié)果導(dǎo)出到文件 |
\qecho [STRING] |
輸出流的字符串 |
—— | —— |
---|---|
\prompt [TEXT] NAME |
設(shè)置變量 |
\set [NAME [VALUE]] |
設(shè)置變量(如果沒(méi)有參數(shù)則列出所有) |
\unset NAME |
刪除變量 |
—— | —— |
---|---|
\cd [DIR] |
更改目錄 |
\timing [on|off] |
切換計(jì)時(shí) |
\! [COMMAND] |
在 shell 中執(zhí)行 |
\! ls -l |
在 shell 中列出所有內(nèi)容 |
\lo_export LOBOID FILE
\lo_import FILE [COMMENT]
\lo_list
\lo_unlink LOBOID
使用 pg_dumpall 備份所有數(shù)據(jù)庫(kù)
$ pg_dumpall -U postgres > all.sql
使用 pg_dump 備份數(shù)據(jù)庫(kù)
$ pg_dump -d mydb -f mydb_backup.sql
-a
只轉(zhuǎn)儲(chǔ)數(shù)據(jù),不轉(zhuǎn)儲(chǔ)模式-s
只轉(zhuǎn)儲(chǔ)模式,不轉(zhuǎn)儲(chǔ)數(shù)據(jù)-c
在重新創(chuàng)建之前刪除數(shù)據(jù)庫(kù)-C
還原前創(chuàng)建數(shù)據(jù)庫(kù)-t
僅轉(zhuǎn)儲(chǔ)命名表-F
格式(c
:自定義,d
:目錄,t
:tar)使用pg_dump -?
來(lái)獲得完整的選項(xiàng)列表
使用 psql 恢復(fù)數(shù)據(jù)庫(kù)
$ psql -U user mydb < mydb_backup.sql
使用 pg_restore 恢復(fù)數(shù)據(jù)庫(kù)
$ pg_restore -d mydb mydb_backup.sql -c
-U
指定數(shù)據(jù)庫(kù)用戶(hù)-c
在重新創(chuàng)建之前刪除數(shù)據(jù)庫(kù)-C
還原前創(chuàng)建數(shù)據(jù)庫(kù)-e
如果遇到錯(cuò)誤則退出-F
格式(c
:自定義,d
:目錄,t
:tar,:p
純文本sql(默認(rèn)))使用pg_restore -?
來(lái)獲得完整的選項(xiàng)列表
獲取 postgresql.conf 的位置
$ psql -U postgres -c 'SHOW config_file'
附加到 postgresql.conf
listen_addresses = '*'
附加到 pg_hba.conf (與 postgresql.conf 相同的位置)
host all all 0.0.0.0/0 md5
host all all ::/0 md5
重啟 PostgreSQL 服務(wù)器
$ sudo systemctl resatart postgresql
將表格導(dǎo)出為 CSV 文件
\copy table TO '<path>' CSV
\copy table(col1,col1) TO '<path>' CSV
\copy (SELECT...) TO '<path>' CSV
將 CSV 文件導(dǎo)入表
\copy table FROM '<path>' CSV
\copy table(col1,col1) FROM '<path>' CSV
另見(jiàn):復(fù)制
更多建議: