說明
PG在使用中,常常和MySQL以及 Oracle進行比較使用。了解基本的情況,用於對相應的技術有個大概認識
PG基本情況
查看pg_catalog.pg_namespace來查看當前數據庫中全部的Schema
select oid,* from pg_catalog.pg_namespace;
SHOW search_path;
select * FROM information_schema.tables;
select catalog_name,schema_name from information_schema.schemata ;
information_schema.columns
系統Schema: information_schema 與 pg_catalog
pg_catalog 模式,它包含系統表和所有內置數據類型、函數、操作符。
pg_catalog 總是搜索路徑中的一部分。如果它沒有明確出現在路徑中,那么它隱含地在所有路徑之前搜索
pg_catalog 是系統Schema,包含了系統的自帶函數/數據類型定義等,pg_catalog是保障postgres正常運轉的重要基石。
information_schema是方便用戶查看表/視圖/函數信息提供的,它大多是視圖,MySQL,SQL Server同樣有information_schema這個schema。
查詢
SELECT tablename FROM pg_tables;
SELECT viewname FROM pg_views WHERE schemaname ='public' ;
查看表結構
SELECT table_name,column_name,data_type,character_maximum_length
FROM information_schema.columns
WHERE table_schema='testpg' and TABLE_NAME ='t_test_conution';
查看表數據
select * from "testpg"."t_test_conution" limit 2;
分布式數據庫來說,動態擴縮容
Citus 以插件的方式擴展到postgresql中,獨立於postgresql內核
database.schema.TABLE
有聲明任何模式名字就創建了表。缺省時,這樣的表(以及其它對象)都自動放到一個叫做"public"的模式中去
修改主庫,開啟歸檔,將日志歸檔到從庫: archive_mode = on
數據類型
character varying(n), varchar(n) 變長,有長度限制
character(n), char(n) 定長,不足補空白
varchar(n) 和 char(n) 分別是 character varying(n) 和 character(n)的別名,
如果沒有聲明長度的 character 等於 character(1) ;
如果不帶長度說明詞使用 character varying,那么該類型接受任何長度的字符串。后者是 PostgreSQL 的擴展。
decimal numeric
bigint integer
執行的操作
索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構
PostgreSQL中的默認索引類型是B-Tree
散列:與具有固有排序的B-Tree索引不同
GIN:GIN是一個反向索引,它基本上允許單個鍵的多個值
BRIN:如果您的數據具有特定的自然順序
事務
BEGIN TRANSACTION:開始一個事務。
COMMIT:事務確認,或者可以使用 END TRANSACTION 命令。
ROLLBACK:事務回滾
事務可以使用 BEGIN TRANSACTION 命令或簡單的 BEGIN 命令來啟動。此類事務通常會持續執行下去,
直到遇到下一個 COMMIT 或 ROLLBACK 命令。不過在數據庫關閉或發生錯誤時,事務處理也會回滾
plsq 元命令
PostgresQL 常用的元命令 PostgreSQL中也有一個類似的命令行工具,就是plsq,它允許你交互地鍵入SQL或命令
PostgresQL 命令的格式是用反斜線后面直接跟上一個命令動詞,然后是一些參數。
在使用前可以使用“\?”來獲取幫助信息,了解可以使用的命令清單
進入psql psql -h <hostname or ip> -p <端口> [數據庫名稱] [用戶名稱]
表的清理和刪除
PostgreSQL 中 DELETE 語句刪除數據的通用語法: 刪除 PostgreSQL 表中的數據
DELETE FROM table_name WHERE [condition];
如果沒有指定 WHERE 子句,PostgreSQL 表中的所有記錄將被刪除。
PostgreSQL 中 TRUNCATE TABLE 用於刪除表的數據,但不刪除表結構。
PostgreSQL 中 DELETE 語句刪除數據
truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行
PostgreSQL 中 DROP TABLE 刪除表, 這個命令會連表的結構一起刪除
分區表
分區表:
PostgreSQL本身支持基於從一個或多個列值計算的分區鍵值將表分片到多個子表中
參考:
postgreSQL psql工具使用詳解 https://www.cnblogs.com/nanshanjushi/p/11324607.html