国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

PostgreSQL 備忘清單

PostgreSQL 備忘清單為您提供了常用的 PostgreSQL 命令和語句。

入門

入門

切換和連接

$ sudo -u postgres psql

列出所有數(shù)據(jù)庫

postgres=# \l

連接到名為 postgres 的數(shù)據(jù)庫

postgres=# \c postgres

斷開

postgres=# \q
postgres=# \!

psql 命令

參數(shù)示例說明
[-d] <database>psql -d mydb連接到數(shù)據(jù)庫
-Upsql -U john mydb以特定用戶身份連接
-h -ppsql -h localhost -p 5432 mydb連接到主機(jī)/端口
-U -h -p -dpsql -U admin -h 192.168.1.5 -p 2506 -d mydb連接遠(yuǎn)程 PostgreSQL
-Wpsql -W mydb強(qiáng)制密碼
-cpsql -c '\c postgres' -c '\dt'執(zhí)行 SQL 查詢或命令
-Hpsql -c "\l+" -H postgres > database.html生成 HTML 報(bào)告
-lpsql -l列出所有數(shù)據(jù)庫
-fpsql mydb -f file.sql從文件執(zhí)行命令
-Vpsql -V打印 psql 版本

獲得幫助

:--
\hSQL 命令語法幫助
\h DELETEDELETE SQL 語句語法
\?PostgreSQL 命令列表

在 PostgreSQL 控制臺中運(yùn)行

PostgreSQL 工作

Recon 觀察

顯示版本

SHOW SERVER_VERSION;

顯示系統(tǒng)狀態(tài)

\conninfo

顯示環(huán)境變量

SHOW ALL;

列出用戶

SELECT rolname FROM pg_roles;

顯示當(dāng)前用戶

SELECT current_user;

顯示當(dāng)前用戶的權(quán)限

\du

顯示當(dāng)前數(shù)據(jù)庫

SELECT current_database();

顯示數(shù)據(jù)庫中的所有表

\dt

列出函數(shù)

\df <schema>

Databases 數(shù)據(jù)庫

列出數(shù)據(jù)庫

\l

連接到數(shù)據(jù)庫

\c <database_name>

顯示當(dāng)前數(shù)據(jù)庫

SELECT current_database();

創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE <database_name> WITH OWNER <username>;

刪除數(shù)據(jù)庫

DROP DATABASE IF EXISTS <database_name>;

重命名數(shù)據(jù)庫

ALTER DATABASE <old_name> RENAME TO <new_name>;

Tables 表

列出當(dāng)前數(shù)據(jù)庫中的表

\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>';

創(chuàng)建表

CREATE TABLE <table_name>(
  <column_name> <column_type>,
  <column_name> <column_type>
);

創(chuàng)建表,主鍵自增

CREATE TABLE <table_name> (
  <column_name> SERIAL PRIMARY KEY
);

刪除表

DROP TABLE IF EXISTS <table_name> CASCADE;

Permissions 權(quán)限

成為 postgres 用戶,如果您有權(quán)限錯(cuò)誤

sudo su - postgres
psql

授予 對數(shù)據(jù)庫的所有權(quán)限

GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;

授予數(shù)據(jù)庫連接權(quán)限

GRANT CONNECT ON DATABASE <db_name> TO <user_name>;

授予架構(gòu)權(quán)限

GRANT USAGE ON SCHEMA public TO <user_name>;

授予函數(shù)權(quán)限

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;

授予在所有表上選擇、更新、插入、刪除的權(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>;

Columns 列

添加欄目

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>;

將列更新為自增主鍵

ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;

使用自動遞增的主鍵插入表中

INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);
INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );

Data 數(shù)據(jù)

選擇 所有數(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>;

Users 用戶

列出角色

SELECT rolname FROM pg_roles;

創(chuàng)建用戶

CREATE USER <user_name> WITH PASSWORD '<password>';

刪除用戶

DROP USER IF EXISTS <user_name>;

更改 用戶密碼

ALTER ROLE <user_name> WITH PASSWORD '<password>';

Schema

列出 Schemas

\dn
SELECT schema_name FROM information_schema.schemata;
SELECT nspname FROM pg_catalog.pg_namespace;

創(chuàng)建架構(gòu)

CREATE SCHEMA IF NOT EXISTS <schema_name>;

刪除模式

DROP SCHEMA IF EXISTS <schema_name> CASCADE;

PostgreSQL 命令

:--
\d <table>描述表
\d+ <table>詳細(xì)描述表格
\dt列出當(dāng)前模式中的表
\dt *.*列出所有模式中的表
\dt <schema>.*列出架構(gòu)的表
\dp列出表訪問權(quán)限
\det[+]列出外部表

查詢緩沖區(qū)

:--
\e [FILE]編輯查詢緩沖區(qū)(或文件)
\ef [FUNC]編輯函數(shù)定義
\p顯示內(nèi)容
\r重置(清除)查詢緩沖區(qū)
\s [FILE]顯示歷史記錄或保存到文件
\w FILE將查詢緩沖區(qū)寫入文件

信息

:--
\l[+]列出所有數(shù)據(jù)庫
\dn[S+]列出架構(gòu)
\di[S+]列出索引
\du[+]列出角色
\ds[S+]列出序列
\df[antw][S+]列出函數(shù)
\deu[+]列出用戶映射
\dv[S+]列表視圖
\dl列出大對象
\dT[S+]列出數(shù)據(jù)類型
\da[S]列出聚合
\db[+]列出表空間
\dc[S+]列出轉(zhuǎn)化
\dC[+]列出演員表
\ddp列出默認(rèn)權(quán)限
\dd[S]顯示對象描述
\dD[S+]列出域
\des[+]列出國外服務(wù)器
\dew[+]列出外部數(shù)據(jù)包裝器
\dF[+]列出文本搜索配置
\dFd[+]列出文本搜索詞典
\dFp[+]列出文本搜索解析器
\dFt[+]列出文本搜索模板
\dL[S+]列出程序語言
\do[S]列出運(yùn)算符
\dO[S+]列出排序規(guī)則
\drds列出每個(gè)數(shù)據(jù)庫的角色設(shè)置
\dx[+]列出擴(kuò)展

S:顯示系統(tǒng)對象,+:附加細(xì)節(jié)

連接

:--
\c [DBNAME]連接到新數(shù)據(jù)庫
\encoding [ENCODING]顯示或設(shè)置客戶端編碼
\password [USER]更改密碼
\conninfo顯示信息

格式化

:--
\a在未對齊和對齊之間切換
\C [STRING]設(shè)置表格標(biāo)題,如果沒有則取消設(shè)置
\f [STRING]顯示或設(shè)置未對齊的字段分隔符
\H切換 HTML 輸出模式
\t [on|off]僅顯示行
\T [STRING]設(shè)置或取消設(shè)置 HTML <table> 標(biāo)簽屬性
\x [on|off]切換擴(kuò)展輸出

輸入輸出

:--
\copy ...導(dǎo)入/導(dǎo)出表 另見: 復(fù)制
\echo [STRING]打印字符串
\i FILE執(zhí)行文件
\o [FILE]將所有結(jié)果導(dǎo)出到文件
\qecho [STRING]輸出流的字符串

變量

:--
\prompt [TEXT] NAME設(shè)置變量
\set [NAME [VALUE]]設(shè)置變量 (如果沒有參數(shù),則列出所有變量)
\unset NAME刪除變量

雜項(xiàng)

:--
\cd [DIR]更改目錄
\timing [on|off]切換時(shí)間
\! [COMMAND]在shell中執(zhí)行
\! ls -l在shell中列出所有

大對象

  • \lo_export LOBOID FILE
  • \lo_import FILE [COMMENT]
  • \lo_list
  • \lo_unlink LOBOID

各種各樣的

備份

使用 pg_dumpall 備份所有數(shù)據(jù)庫

$ pg_dumpall -U postgres > all.sql

使用 pg_dump 備份數(shù)據(jù)庫

$ pg_dump -d mydb -f mydb_backup.sql
  • ? -a ? 只轉(zhuǎn)儲數(shù)據(jù),而不是模式(schema)
  • ? -s ? 只轉(zhuǎn)儲模式,不轉(zhuǎn)儲數(shù)據(jù)
  • ? -c ? 在重新創(chuàng)建之前刪除數(shù)據(jù)庫
  • ? -C ? 還原前創(chuàng)建數(shù)據(jù)庫
  • ? -t ? 僅轉(zhuǎn)儲命名表
  • ? -F ? 格式(c:自定義,d:目錄,t:tar)

使用 pg_dump -? 獲取完整的選項(xiàng)列表

恢復(fù)

使用 psql 恢復(fù)數(shù)據(jù)庫

$ psql -U user mydb < mydb_backup.sql

使用 pg_restore 恢復(fù)數(shù)據(jù)庫

$ pg_restore -d mydb mydb_backup.sql -c
  • ? -U ? 指定數(shù)據(jù)庫用戶
  • ? -c ? 在重新創(chuàng)建之前刪除數(shù)據(jù)庫
  • ? -C ? 還原前創(chuàng)建數(shù)據(jù)庫
  • ? -e ? 如果遇到錯(cuò)誤退出
  • ? -F ? 格式(c:自定義,d:目錄,t:tar,p:純文本sql(默認(rèn)))

使用 pg_restore -? 獲取完整的選項(xiàng)列表

遠(yuǎn)程訪問

獲取 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 restart postgresql

導(dǎo)入/導(dǎo)出 CSV

將表格導(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

另見:復(fù)制

另見