1 環(huán)境
postgresql-server版本 :13.2
psql版本:14.1
客戶端操作系統(tǒng):Windows 10
2 如何鏈接數(shù)據(jù)庫postgresql
打開powershell(Linux下打開Terminal),輸入.\psql.exe --help
,即可查看如何鏈接數(shù)據(jù)庫postgresql。
> .\psql.exe --help
psql是PostgreSQL 的交互式客戶端工具。
使用方法:
psql [選項]... [數(shù)據(jù)庫名稱 [用戶名稱]]
通用選項:
-c, --command=命令 執(zhí)行單一命令(SQL或內部指令)然后結束
-d, --dbname=DBNAME 指定要連接的數(shù)據(jù)庫 (默認:"jianglei02")
-f, --file=文件名 從文件中執(zhí)行命令然后退出
-l, --list 列出所有可用的數(shù)據(jù)庫,然后退出
-v, --set=, --variable=NAME=VALUE
設置psql變量NAME為VALUE
(例如,-v ON_ERROR_STOP=1)
-V, --version 輸出版本信息, 然后退出
-X, --no-psqlrc 不讀取啟動文檔(~/.psqlrc)
-1 ("one"), --single-transaction
作為一個單一事務來執(zhí)行命令文件(如果是非交互型的)
-?, --help[=options] 顯示此幫助,然后退出
--help=commands 列出反斜線命令,然后退出
--help=variables 列出特殊變量,然后退出
輸入和輸出選項:
-a, --echo-all 顯示所有來自于腳本的輸入
-b, --echo-errors 回顯失敗的命令
-e, --echo-queries 顯示發(fā)送給服務器的命令
-E, --echo-hidden 顯示內部命令產生的查詢
-L, --log-file=文件名 將會話日志寫入文件
-n, --no-readline 禁用增強命令行編輯功能(readline)
-o, --output=FILENAME 將查詢結果寫入文件(或 |管道)
-q, --quiet 以沉默模式運行(不顯示消息,只有查詢結果)
-s, --single-step 單步模式 (確認每個查詢)
-S, --single-line 單行模式 (一行就是一條 SQL 命令)
輸出格式選項 :
-A, --no-align 使用非對齊表格輸出模式
--csv CSV(逗號分隔值)表輸出模式
-F, --field-separator=STRING
為字段設置分隔符,用于不整齊的輸出(默認:"|")
-H, --html HTML 表格輸出模式
-P, --pset=變量[=參數(shù)] 設置將變量打印到參數(shù)的選項(查閱 \pset 命令)
-R, --record-separator=STRING
為不整齊的輸出設置字錄的分隔符(默認:換行符號)
-t, --tuples-only 只打印記錄i
-T, --table-attr=文本 設定 HTML 表格標記屬性(例如,寬度,邊界)
-x, --expanded 打開擴展表格輸出
-z, --field-separator-zero
為不整齊的輸出設置字段分隔符為字節(jié)0
-0, --record-separator-zero
為不整齊的輸出設置記錄分隔符為字節(jié)0
聯(lián)接選項:
-h, --host=主機名 數(shù)據(jù)庫服務器主機或socket目錄(默認:"本地接口")
-p, --port=端口 數(shù)據(jù)庫服務器的端口(默認:"5432")
-U, --username=用戶名 指定數(shù)據(jù)庫用戶名(默認:"jianglei02")
-w, --no-password 永遠不提示輸入口令
-W, --password 強制口令提示 (自動)
更多信息,請在psql中輸入"\?"(用于內部指令)或者 "\help"(用于SQL命令),
或者參考PostgreSQL文檔中的psql章節(jié).
臭蟲報告至<pgsql-bugs@lists.postgresql.org>.
PostgreSQL 主頁: <https://www.postgresql.org/>
連接postgresql數(shù)據(jù)庫的示例:
> .\psql.exe -h {ip} -p 5432 -U {user1} -d db1
用戶 {user1} 的口令:
psql (14.1, 服務器 13.2 (Debian 13.2-1.pgdg100+1))
輸入 "help" 來獲取幫助信息.
db1=>
3 psql如何操作數(shù)據(jù)庫
在psql鏈接postgresql成功之后,輸入\?
即可查看所有可以操作數(shù)據(jù)庫對象的psql命令。
db1=> \?
一般性
\copyright 顯示PostgreSQL的使用和發(fā)行許可條款
\crosstabview [COLUMNS] 執(zhí)行查詢并且以交叉表顯示結果
\errverbose 以最冗長的形式顯示最近的錯誤消息
\g [(OPTIONS)] [FILE] 執(zhí)行查詢(并將結果發(fā)送到文件或|管道);
不帶參數(shù)的\g等價于分號
\gdesc 描述查詢結果,而不執(zhí)行它
\gexec 執(zhí)行策略,然后執(zhí)行其結果中的每個值
\gset [PREFIX] 執(zhí)行查詢并把結果存到psql變量中
\gx [(OPTIONS)] [FILE] 就像\g,但強制擴展輸出模式
\q 退出 psql
\watch [SEC] 每隔SEC秒執(zhí)行一次查詢
幫助
\? [commands] 顯示反斜線命令的幫助
\? options 顯示 psql 命令行選項的幫助
\? variables 顯示特殊變量的幫助
\h [NAME] SQL命令語法上的說明,用*顯示全部命令的語法說明
查詢緩存區(qū)
\e [FILE] [LINE] 使用外部編輯器編輯查詢緩存區(qū)(或文件)
\ef [FUNCNAME [LINE]] 使用外部編輯器編輯函數(shù)定義
\ev [VIEWNAME [LINE]] 用外部編輯器編輯視圖定義
\p 顯示查詢緩存區(qū)的內容
\r 重置(清除)查詢緩存區(qū)
\w 文件 將查詢緩存區(qū)的內容寫入文件
輸入/輸出
\copy ... 執(zhí)行 SQL COPY,將數(shù)據(jù)流發(fā)送到客戶端主機
\echo [-n] [STRING] 將字符串寫到標準輸出(-n表示沒有換行符)
\i 文件 從文件中執(zhí)行命令
\ir FILE 與 \i類似, 但是相對于當前腳本的位置
\o [文件] 將全部查詢結果寫入文件或 |管道
\qecho [-n] [STRING] 將字符串寫入\o輸出流(-n表示無換行)
\warn [-n] [STRING] 將字符串寫入標準錯誤(-n 表示無換行)
條件
\if EXPR 開始條件塊
\elif EXPR 當前條件塊內的備選方案
\else 當前條件塊內的最終備選方案
\endif 條件塊的結尾
資訊性
(選項: S = 顯示系統(tǒng)對象, + = 其余的詳細信息)
\d[S+] 列出表,視圖和序列
\d[S+] 名稱 描述表,視圖,序列,或索引
\da[S] [模式] 列出聚合函數(shù)
\dA[+] [模式] 列出訪問方法
\dAc[+] [AMPTRN [TYPEPTRN]] 列出運算符
\dAf[+] [AMPTRN [TYPEPTRN]] 列出運算符集合
\dAo[+] [AMPTRN [OPFPTRN]] 列出運算符集合
\dAp[+] [AMPTRN [OPFPTRN]] 列出運算符集合所支持的功能
\db[+] [模式] 列出表空間
\dc[S+] [模式] 列表轉換
\dC[+] [模式] 列出類型強制轉換
\dd[S] [模式] 顯示沒有在別處顯示的對象描述
\dD[S+] [模式] 列出共同值域
\ddp [模式] 列出默認權限
\dE[S+] [模式] 列出引用表
\des[+] [模式] 列出外部服務器
\det[+] [模式] 列出引用表
\deu[+] [模式] 列出用戶映射
\dew[+] [模式] 列出外部數(shù)據(jù)封裝器
\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]
列出 [only agg/normal/procedure/trigger/window] 函數(shù)
\dF[+] [模式] 列出文本搜索配置
\dFd[+] [模式] 列出文本搜索字典
\dFp[+] [模式] 列出文本搜索解析器
\dFt[+] [模式] 列出文本搜索模版
\dg[S+] [模式] 列出角色
\di[S+] [模式] 列出索引
\dl 列出大對象, 功能與\lo_list相同
\dL[S+] [模式] 列出所有過程語言
\dm[S+] [模式] 列出所有物化視圖
\dn[S+] [模式] 列出所有模式
\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]
列出運算符
\dO[S+] [模式] 列出所有校對規(guī)則
\dp [模式] 列出表,視圖和序列的訪問權限
\dP[itn+] [PATTERN] 列出[僅表/索引]分區(qū)關系[n=nested]
\drds [ROLEPTRN [DBPTRN]] list per-database role settings
\dRp[+] [模式] 列出復制發(fā)布
\dRs[+] [模式] 列出復制訂閱
\ds[S+] [模式] 列出序列
\dt[S+] [模式] 列出表
\dT[S+] [模式] 列出數(shù)據(jù)類型
\du[S+] [模式] 列出角色
\dv[S+] [模式] 列出視圖
\dx[+] [模式] 列出擴展
\dX [PATTERN] 列出擴展統(tǒng)計信息
\dy[+] [PATTERN] l列出所有事件觸發(fā)器
\l[+] [模式] 列出所有數(shù)據(jù)庫
\sf[+] FUNCNAME 顯示一個函數(shù)的定義
\sv[+] VIEWNAME 顯示一個視圖的定義
\z [模式] 和\dp的功能相同
格式化
\a 在非對齊模式和對齊模式之間切換
\C [字符串] 設置表的標題,或如果沒有的標題就取消
\f [字符串] 顯示或設定非對齊模式查詢輸出的字段分隔符
\H 切換HTML輸出模式 (目前是 關閉)
\pset [NAME [VALUE]] 設置表輸出選項
(border|columns|csv_fieldsep|expanded|fieldsep|
fieldsep_zero|footer|format|linestyle|null|
numericlocale|pager|pager_min_lines|recordsep|
recordsep_zero|tableattr|title|tuples_only|
unicode_border_linestyle|unicode_column_linestyle|
unicode_header_linestyle
\t [開|關] 只顯示記錄 (目前是關閉)
\T [字符串] 設置HTML <表格>標簽屬性, 或者如果沒有的話取消設置
\x [on|off|auto] 切換擴展輸出模式(目前是 關閉)
連接
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
連接到新數(shù)據(jù)庫(當前是"znbase8")
\conninfo 顯示當前連接的相關信息
\encoding [編碼名稱] 顯示或設定客戶端編碼
\password [USERNAME] 安全地為用戶更改口令
操作系統(tǒng)
\cd [目錄] 更改目前的工作目錄
\setenv NAME [VALUE] 設置或清空環(huán)境變量
\timing [開|關] 切換命令計時開關 (目前是關閉)
\! [命令] 在 shell中執(zhí)行命令或啟動一個交互式shell
變量
\prompt [文本] 名稱 提示用戶設定內部變量
\set [名稱 [值數(shù)]] 設定內部變量,若無參數(shù)則列出全部變量
\unset 名稱 清空(刪除)內部變量
大對象
\lo_export LOBOID 文件
\lo_import 文件 [注釋]
\lo_list
\lo_unlink LOBOID 大對象運算
4 查看postgresql的SQL命令使用方法
在psql鏈接postgresql成功之后,輸入\h
即可查看所有操作數(shù)據(jù)庫對象的SQL命令
;輸入\h sql_command
可以查看具體SQL sql_command
的使用方法。
db1=> \h
可用的說明:
ABORT CREATE USER
ALTER AGGREGATE CREATE USER MAPPING
ALTER COLLATION CREATE VIEW
ALTER CONVERSION DEALLOCATE
ALTER DATABASE DECLARE
ALTER DEFAULT PRIVILEGES DELETE
ALTER DOMAIN DISCARD
ALTER EVENT TRIGGER DO
ALTER EXTENSION DROP ACCESS METHOD
ALTER FOREIGN DATA WRAPPER DROP AGGREGATE
ALTER FOREIGN TABLE DROP CAST
ALTER FUNCTION DROP COLLATION
ALTER GROUP DROP CONVERSION
ALTER INDEX DROP DATABASE
ALTER LANGUAGE DROP DOMAIN
ALTER LARGE OBJECT DROP EVENT TRIGGER
ALTER MATERIALIZED VIEW DROP EXTENSION
ALTER OPERATOR DROP FOREIGN DATA WRAPPER
ALTER OPERATOR CLASS DROP FOREIGN TABLE
ALTER OPERATOR FAMILY DROP FUNCTION
ALTER POLICY DROP GROUP
ALTER PROCEDURE DROP INDEX
ALTER PUBLICATION DROP LANGUAGE
ALTER ROLE DROP MATERIALIZED VIEW
ALTER ROUTINE DROP OPERATOR
ALTER RULE DROP OPERATOR CLASS
ALTER SCHEMA DROP OPERATOR FAMILY
ALTER SEQUENCE DROP OWNED
ALTER SERVER DROP POLICY
ALTER STATISTICS DROP PROCEDURE
ALTER SUBSCRIPTION DROP PUBLICATION
ALTER SYSTEM DROP ROLE
ALTER TABLE DROP ROUTINE
ALTER TABLESPACE DROP RULE
ALTER TEXT SEARCH CONFIGURATION DROP SCHEMA
ALTER TEXT SEARCH DICTIONARY DROP SEQUENCE
ALTER TEXT SEARCH PARSER DROP SERVER
ALTER TEXT SEARCH TEMPLATE DROP STATISTICS
ALTER TRIGGER DROP SUBSCRIPTION
ALTER TYPE DROP TABLE
ALTER USER DROP TABLESPACE
ALTER USER MAPPING DROP TEXT SEARCH CONFIGURATION
ALTER VIEW DROP TEXT SEARCH DICTIONARY
ANALYZE DROP TEXT SEARCH PARSER
BEGIN DROP TEXT SEARCH TEMPLATE
CALL DROP TRANSFORM
CHECKPOINT DROP TRIGGER
CLOSE DROP TYPE
CLUSTER DROP USER
COMMENT DROP USER MAPPING
COMMIT DROP VIEW
COMMIT PREPARED END
COPY EXECUTE
CREATE ACCESS METHOD EXPLAIN
CREATE AGGREGATE FETCH
CREATE CAST GRANT
CREATE COLLATION IMPORT FOREIGN SCHEMA
CREATE CONVERSION INSERT
CREATE DATABASE LISTEN
CREATE DOMAIN LOAD
CREATE EVENT TRIGGER LOCK
CREATE EXTENSION MOVE
CREATE FOREIGN DATA WRAPPER NOTIFY
CREATE FOREIGN TABLE PREPARE
CREATE FUNCTION PREPARE TRANSACTION
CREATE GROUP REASSIGN OWNED
CREATE INDEX REFRESH MATERIALIZED VIEW
CREATE LANGUAGE REINDEX
CREATE MATERIALIZED VIEW RELEASE SAVEPOINT
CREATE OPERATOR RESET
CREATE OPERATOR CLASS REVOKE
CREATE OPERATOR FAMILY ROLLBACK
CREATE POLICY ROLLBACK PREPARED
CREATE PROCEDURE ROLLBACK TO SAVEPOINT
CREATE PUBLICATION SAVEPOINT
CREATE ROLE SECURITY LABEL
CREATE RULE SELECT
CREATE SCHEMA SELECT INTO
CREATE SEQUENCE SET
CREATE SERVER SET CONSTRAINTS
CREATE STATISTICS SET ROLE
CREATE SUBSCRIPTION SET SESSION AUTHORIZATION
CREATE TABLE SET TRANSACTION
CREATE TABLE AS SHOW
CREATE TABLESPACE START TRANSACTION
CREATE TEXT SEARCH CONFIGURATION TABLE
CREATE TEXT SEARCH DICTIONARY TRUNCATE
CREATE TEXT SEARCH PARSER UNLISTEN
CREATE TEXT SEARCH TEMPLATE UPDATE
CREATE TRANSFORM VACUUM
CREATE TRIGGER VALUES
CREATE TYPE WITH
db1=>
db1=> \h create type
命令: CREATE TYPE
描述: 建立新的數(shù)據(jù)類型
語法:
CREATE TYPE 名稱 AS
( [ 屬性_名稱 數(shù)據(jù)_類型 [ COLLATE 校對規(guī)則 ] [, ... ] ] )
CREATE TYPE 名稱 AS ENUM
( [ '標簽' [, ... ] ] )
CREATE TYPE 名稱 AS RANGE (
SUBTYPE = 子類型
[ , SUBTYPE_OPCLASS = subtype_operator_class(子類型_操作符_類) ]
[ , COLLATION = 校對規(guī)則 ]
[ , CANONICAL = 標準_函數(shù) ]
[ , SUBTYPE_DIFF = subtype_diff_function(子類型_區(qū)分_函數(shù)) ]
[ , MULTIRANGE_TYPE_NAME = multirange_type_name ]
)
CREATE TYPE 名稱 (
INPUT = 輸入_函數(shù),
OUTPUT = 輸出_函數(shù)
[ , RECEIVE = 接收_函數(shù) ]
[ , SEND = 發(fā)送_函數(shù) ]
[ , TYPMOD_IN = 類型修改器數(shù)組輸入函數(shù)名稱 ]
[ , TYPMOD_OUT = 類型修改器輸出函數(shù)名稱 ]
[ , ANALYZE = 分析_函數(shù) ]
[ , SUBSCRIPT = subscript_function ]
[ , INTERNALLENGTH = { 內部長度 | VARIABLE } ]
[ , PASSEDBYVALUE ]
[ , ALIGNMENT = 順序排列(alignment) ]
[ , STORAGE = 存儲 ]
[ , LIKE = LIKE類型(like_type) ]
[ , CATEGORY = 類型 ]
[ , PREFERRED = 優(yōu)先 ]
[ , DEFAULT = 默認 ]
[ , ELEMENT = 成員項 ]
[ , DELIMITER = 分隔符 ]
[ , COLLATABLE = 要校對的 ]
)
CREATE TYPE 名稱
URL: https://www.postgresql.org/docs/14/sql-createtype.html
db1=>