常見資料庫 SQL 特性比較之查詢功能

2021-08-29 10:08:57 字數 1787 閱讀 4613

本文只關注 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那樣久經考驗,尤其是...