天天看點

一天學會PostgreSQL應用開發與管理 - 3 通路資料

線上sql平台

<a href="http://www.sqlfiddle.com/">http://www.sqlfiddle.com/</a>

psql 是postgresql軟體包中的指令行工具,可以連接配接資料庫,執行sql。

psql 詳細用法參考

psql的選項

使用psql連接配接資料庫例子

psql 支援輸出幫助文檔,例如select 子句的文法

目标、源 别名

select 目标

字段、函數、表達式、子查詢

select 源

表、視圖、物化視圖、函數、表達式、子查詢

select where條件

select 排序

select 随機排序

select 分組

select 限制輸出條數

select 位移

select 目前表以及所有繼承表

select 目前表

建立遊标

fetch 遊标

關閉遊标

行表達式

with語句

遞歸語句

一天學會PostgreSQL應用開發與管理 - 3 通路資料
一天學會PostgreSQL應用開發與管理 - 3 通路資料

例子

一天學會PostgreSQL應用開發與管理 - 3 通路資料

插入

批量插入1

批量插入2

批量插入3

更新

有則更新、無則插入

删除資料

truncate(如果要清除全表,建議使用truncate)

注意,請使用ddl鎖逾時,如果有繼承表,并且隻想清理目前表,使用only.

建議所有的ddl操作前,都設定鎖逾時,避免堵塞其他操作。

drop表

drop表時,如果有依賴對象,想一同删除,可以使用cascade關鍵字

alter table修改表

例如添加字段

添加字段,并添加預設值(會rewrite table, 不建議對大表這麼操作,會很久。大表增加字段和預設值,建議先增加自動,預設值可以異步小批量的update)

轉換相容類型

轉換不相容類型

psql服務端copy(檔案讀寫在資料庫所在伺服器)

copy out

copy in

psql用戶端copy(檔案讀寫在用戶端)

軟體開發時請使用程式語言對應的驅動接口。

where子句過濾條件

隐藏字段(表oid, 插入事務号, 删除事務号, 事務指令偏移值, 行号)

postgresql允許建立多個序列,每個序列獨立自主,有自己的取值空間。

序列一旦消耗掉,就無法回退,除非設定它。

序列通常用來表示唯一自增值。

建立序列

擷取序列值

讀取序列目前狀态

讀取目前會話,上一次擷取的序列值

設定序列起始值

設定序列是否輪回

設定序列的cache值,提升性能,每個會話,一次會擷取一個cache的value。

設定序列的步調

修改序列的nextval(與restart效果一樣)

serial2,serial4,serial8類型

這三個類型,對應int2,int4,int8,同時會自動建立序列,并将預設值設定為序列值。

postgresql 的函數支援傳回多條記錄,使用這種方法可以很友善的生成測試資料。

插入1萬條測試資料

其他生産資料的方法

pgbench 壓測生成tpc-b測試資料

pgbench 壓測, 使用腳本生成測試資料

do 程式設計

plpgsql 程式設計

判斷空值

is null

is not null

is distinct from null

is distinct from 或 is not distinct from 可以用于兩張表的join,如果希望null與null相連,可以使用is not distinct from

修正空值

目前日期

事務時間

事務timestamp

語句時間

語句timestamp

提取時間中的資訊

<a href="https://www.postgresql.org/docs/9.6/static/functions-datetime.html">https://www.postgresql.org/docs/9.6/static/functions-datetime.html</a>

unix epoch time

一年中的第幾日

一年中的第幾周

一月中的第幾日

一周中的第幾日

子查詢

join

update from