常見資料庫 SQL 特性比較之索引和約束

2021-09-28 15:17:02 字數 1483 閱讀 1779

更新日期:2019-10-10。

索引oracle

postgresql

sql server

ibm db2

mysql

mariadb

firebird

h2hsqldb

derby

sqlite

部分索引y1y

y2nnn

nnnn

y降序索引yy

yyyn

y3yyn

y函式索引yy

n4yyn4

y5nnn

y使用自定義函式建立函式索引yy

nyny

nnnn

n6索引包含額外的列ny

yynn

nnnn

n基於多列的統計資訊yy

yynn

nnnn

n聚集索引y7n

yyyy

nnnn

y唯一索引中允許多個 null 值n8y

nny9y9ny

yny約束oraclepostgresqlsql serveribm db2mysqlmariadbfirebirdh2hsqldbderbysqlite

延遲約束yy

nnnn

nnny

y檢查約束yy

yyyy

yyyy

y基於子查詢的檢查約束nn

nnnn

ynnn

n基於自定義函式的檢查約束ny

yynn

ynnn

n6排除約束ny

nynn

nnnn

n語句級別的約束評估yy

yynn

nyyy

y外來鍵約束支援 on delete cascadeyy

yyyy

yyyy

y外來鍵約束支援 on update cascadeny

ynyy

yyyn

y通過函式索引實現。 ↩︎

索引的 where 條件中不支援使用函式。 ↩︎

多列索引不支援混合使用 asc 和 desc。 ↩︎

可以基於計算列建立索引來實現類似功能。 ↩︎↩︎

只能使用單列表示式,不能與其他列組合索引。 ↩︎

使用 c 實現的函式可以用於索引和約束。 ↩︎↩︎

oracle 中稱為索引組織表(index-organized table)。 ↩︎

單列索引允許,多列索引不允許。 ↩︎

取決於儲存引擎,innodb 和 myisam 都支援。 ↩︎↩︎

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

本文只關注 sql 語句中的特性,以及不依賴於其他軟體 例如編譯器 的 sql 指令碼中支援的特性。資料庫的管理功能或者部署功能不屬於此次比較的內容。如果想要進一步了解某些 sql 特性的不同實現比較,可以訪問 modern sql。由於原文內容較多,我們拆分為幾個部分,這是第一部分,只包含查詢相關...

常見資料庫比較

一 開放性1.sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在...

常見資料庫比較

一 開放性 1.sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是...