本文只關注 sql 語句中的特性,以及不依賴於其他軟體(例如編譯器)的 sql 指令碼中支援的特性。 資料庫的管理功能或者部署功能不屬於此次比較的內容。
如果想要進一步了解某些 sql 特性的不同實現比較,可以訪問** modern sql。
由於原文內容較多,我們拆分為幾個部分,這是第一部分,只包含查詢相關的功能。
查詢功能
oracle
postgresql
sql server
ibm db2
mysql
mariadb
firebird
h2hsqldb
derby
sqlite
視窗函式yy1
y1yyy
ynnn
y1通用表表示式yy
yyyy
ynyn
y子查詢中的 cteyy
nnyn
ynyn
y遞迴查詢yy
yyyy
yy2yn
y行構造器ny
y3ynn
nnyy
y聚合函式過濾ny
nnnn
nnyn
npivot 支援yn4
ynnn
nnnn
ngroup by … rollupyy
yyyy
nnny
ngroup by … grouping setsyy
yynn
nnnn
n時態查詢yn
yynn
nnnn
n無 from 子句的 selectny
yny5y5ny
y6ny並行查詢yy7
yynn
nnnn
n字串聚合y8y
yyyy
yyyn
y元組比較y9y
nyy10y10
ny11yn
y12元組更新yy
nynn
nyyn
y包含表連線的 updateny
ynyy
nnnn
nansi 日期常量yy
nyyy
yyyn
n查詢中的變數13nn
ynyy
nynn
nunnestny
nynn
nnyn
n將字串拆分為多行ny
ynnn
nnnn
n視窗函式內不支援 distinct 關鍵字。 ↩︎
↩︎↩︎
所有的列都當作 varchar 處理;cte 名稱不能在同乙個事務中被重用;不能在檢視定義中使用;不能在子查詢中使用;不能在 insert 語句中使用。 ↩︎
只能用於 from 子句,不能用於其它地方,例如,直接用於 cte。 ↩︎
可以通過 crosstab 函式實現該功能。 ↩︎
不允許使用 where 子句,例如select 42 where not exists (...);
。 ↩︎↩︎
需要啟用 postgresql 相容性設定。 ↩︎
只支援某些型別的連線和聚合操作。 ↩︎
聚合後的字串最長為 32k。 ↩︎
不支援 >、< 以及 between 操作符。 ↩︎
不支援 between 操作符。 ↩︎↩︎
不支援 in 操作符。 ↩︎
使用 in 操作符時不支援使用常量值,例如(a,b) in ( (1,2), (3,4) )
。 ↩︎
不利用過程語言**,直接在查詢語句中使用變數。 ↩︎
常見資料庫 SQL 特性比較之索引和約束
更新日期 2019 10 10。索引oracle postgresql sql server ibm db2 mysql mariadb firebird h2hsqldb derby sqlite 部分索引y1y y2nnn nnnn y降序索引yy yyyn y3yyn y函式索引yy n4yy...
常見資料庫比較
一 開放性1.sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在...
常見資料庫比較
一 開放性 1.sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是...