線上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語句
遞歸語句
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5iMwAzXjlGcfNDMfFTM0AzNxAjMvwFNwcTMwIzLcJXZ0NXYt9CX3Fmcvw1ZvxmYvwFbh92ZpR2Lc12bj5iY1hGdpd2Lc9CX6MHc0RHaiojIsJye.jpg)
例子
插入
批量插入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