关系型数据库管理系统比较

在以下的表格中，将对一些关系型数据库管理系统的基本信息和技术信息进行对比。请参考以下产品各自的条目以获得更详细的介绍。该表格不可能包罗万象，也许有些信息已过时。除非注明，以下产品为各自的稳定版本，且没有安装任何形式的扩展程序。

## 基本信息

维护者｜首次发行日期｜最新稳定版｜软件授权协议

4th Dimension｜4D s.a.sd｜1984年｜2004.5｜专有

Adaptive Server Enterprise｜Sybase｜1987年｜15.0｜专有

Apache Derby｜Apache软件基金会｜2004年｜10.13.1.1｜Apache许可证

DB2｜IBM｜1982年｜()｜专有

DBISAM｜ Elevate Software｜?｜4.25｜专有

ElevateDB｜ Elevate Software｜?｜1.01｜专有

Firebird｜Firebird Foundation｜2000年7月25日｜()｜Initial Developer's Public License

Informix｜IBM｜1985年｜10.0｜专有

HSQLDB｜HSQL Development Group｜2001年｜1.8.0｜BSD

H2｜H2 Software｜2005年｜1.0｜Freeware

Ingres｜Ingres Corp.｜1974年｜Ingres 2006 II 9.0.4｜GPL 与 专有

InterBase｜CodeGear｜1985年｜2007｜专有

Sybase IQ｜Sybase｜1996年｜15.2｜专有

MaxDB｜MySQL AB, SAP AG｜?｜7.6｜GPL 或 专有

Microsoft SQL Server｜Microsoft｜1989年｜()｜专有

MonetDB｜ The MonetDB Developer Team｜2004年｜4.16 (Feb. 2007)｜ MonetDB Public License v1.1

MySQL｜MySQL AB｜1995年｜()｜GPL 或 专有

HP NonStop SQL｜Hewlett-Packard｜1987年｜SQL MX 2.0｜专有

Oracle｜Oracle Corporation｜1979年11月｜()｜专有

Oracle Rdb｜Oracle Corporation｜1984年｜7.2｜专有

OpenEdge｜Progress Software Corporation｜1984年｜10.1B｜专有

OpenLink Virtuoso｜ OpenLink Software｜1998年｜4.5.3 (April 2006)｜GPL 或 专有

Pervasive PSQL｜Pervasive Software｜?｜9｜专有

PostgreSQL｜ PostgreSQL Global Development Group｜1989年6月｜()｜BSD

Pyrrho DBMS｜University of Paisley｜2005年11月｜0.5｜专有

SmallSQL｜SmallSQL｜2005年4月16日｜0.12｜LGPL

SQL Anywhere｜Sybase｜1992年｜10.0｜专有

SQLite｜D. Richard Hipp｜2000年8月17日｜()｜Public domain

Teradata｜Teradata｜1984｜13.10｜专有

Valentina｜Paradigma Software｜1998年2月｜3.0.1｜专有

Vertica｜Vertica｜2005｜4.0｜专有

维护者｜首次发行日期｜最新稳定版｜软件授权协议

## 操作系统支持

这些数据库所能支持的操作系统。

Windows｜Mac OS X｜Linux｜BSD｜UNIX｜z/OS 1

4th Dimension｜是｜是｜否｜否｜否｜否

Adaptive Server Enterprise｜是｜是｜是｜是｜是｜否

Apache Derby 2｜是｜是｜是｜是｜是｜是

DB2｜是｜否｜是｜否｜是｜是

Firebird｜是｜是｜是｜是｜是｜可能

HSQLDB 2｜是｜是｜是｜是｜是｜是

H2 2｜是｜是｜是｜是｜是｜可能

Informix｜是｜是｜是｜是｜是｜否

Ingres｜是｜否｜是｜是｜是｜可能

InterBase｜是｜否｜是｜否｜是 (Solaris)｜否

Adabas｜是｜否｜是｜否｜是｜是

MaxDB｜是｜否｜是｜否｜是｜可能

Microsoft SQL Server｜是｜否｜是｜否｜否｜否

MonetDB｜是｜是｜是｜否｜是｜否

MySQL｜是｜是｜是｜是｜是｜可能

Oracle｜是｜是｜是｜否｜是｜是

OpenEdge｜是｜否｜是｜否｜是｜否

OpenLink Virtuoso｜是｜是｜是｜是｜是｜是

PostgreSQL｜是｜是｜是｜是｜是｜否

Pyrrho DBMS｜是 (.NET)｜否｜是 (Mono)｜否｜否｜否

SmallSQL｜是｜是｜是｜是｜是｜是

SQL Anywhere｜是｜是｜是｜否｜是｜否

SQLite｜是｜是｜是｜是｜是｜可能

Teradata｜是｜否｜是｜否｜是｜否

Valentina｜是｜是｜是｜否｜否｜否

Windows｜Mac OS X｜Linux｜BSD｜UNIX｜z/OS 1

注记 (1): 列表中标明了UNIX兼容的开源数据库可以在z/OS的内建子系统UNIX系统服务(USS)下编译和运行。大部分Linux兼容的数据库可以与z/OS在同一台服务器上通过Linux on zSeries运行。

注记 (2): 该项受该平台上Java虚拟机的可用性制约。

## 基本功能

数据库系统所能实现的基本功能对比。

ACID｜关联完整性｜数据库事务｜统一码

Adaptive Server Enterprise｜是｜是｜是｜是

Apache Derby｜是｜是｜是｜是

DB2｜是｜是｜是｜是

Firebird｜是｜是｜是｜是

HSQLDB｜是｜是｜是｜是

H2｜是｜是｜是｜是

Informix｜是｜是｜是｜是

Ingres｜是｜是｜是｜是

InterBase｜是｜是｜是｜是

MaxDB｜是｜是｜是｜是

Microsoft SQL Server｜是｜是｜是｜是

MonetDB｜是｜是｜是｜是

MySQL｜是 3｜是 3｜是 3｜是

Oracle｜是｜是｜是｜是

OpenEdge｜是｜否｜是｜是

OpenLink Virtuoso｜是｜是｜是｜是

PostgreSQL｜是｜是｜是｜是

Pyrrho DBMS｜是｜是｜是｜是

SQL Anywhere｜是｜是｜是｜是

SQLite｜是｜否 4｜Basic 4｜是

Teradata｜是｜是｜是｜是

Valentina｜否｜是｜否｜是

ACID｜关联完整性｜数据库事务｜统一码

注记 (3): 需要使用InnoDB格式数据表才能实现关联完整性约束与事务。然而，InnoDB格式数据表仍旧允许存储的数据超出数据范围;一些观点认为它由此违反了ACID的完整性约束。

注记 (4): 外联键约束在语法上有效，但实际上并不能得到强制执行，可使用触发器替代。不支持嵌套事务。

## 表与视图

临时表｜物化视图(Materialized view)

Adaptive Server Enterprise｜是 5｜否

Apache Derby｜是｜否

DB2｜是｜是

Firebird｜Will be in 2.1｜否 (only common views)

HSQLDB｜是｜否

H2｜是｜否

Informix｜是｜是

Ingres｜是｜Ingres r4

InterBase｜是｜否

MaxDB｜是｜否

Microsoft SQL Server｜是｜是

MonetDB｜是｜否

MySQL｜是｜否 6

Oracle｜是｜是

OpenEdge｜是｜否

OpenLink Virtuoso｜是｜是

PostgreSQL｜是｜是 7

Pyrrho DBMS｜否｜否

SQL Anywhere｜是｜是

SQLite｜是｜否

Teradata｜是｜是

Valentina｜是｜否

临时表｜物化视图(Materialized view)

注记 (5): 服务器提供临时数据库，可供会话存放公共／私有的临时表。

注记 (6): 物化视图可用存储过程和触发器模拟。

注记 (7): 物化视图在PostgreSQL 9.3中已经实现支持。.

## 索引

数据库所支持的索引类型（除基本的B树外）

R-/R+ tree｜哈希｜Expression｜部分索引(Partial index)｜反向索引(Reverse index)｜位图索引（Bitmap）｜GiST｜GIN

Adaptive Server Enterprise｜否｜否｜否｜否｜是｜否｜否｜否

Apache Derby｜否｜否｜否｜否｜否｜否｜否｜否

DB2｜否｜?｜否｜否｜是｜是｜否｜否

Firebird｜否｜否｜是｜否｜是 16｜否｜否｜否

HSQLDB｜否｜否｜否｜否｜否｜否｜否｜否

H2｜否｜是｜否｜否｜否｜否｜否｜否

Informix｜是｜是｜是｜是｜是｜是｜否｜否

Ingres｜是｜是｜Ingres r4｜否｜否｜Ingres r4｜否｜否

InterBase｜否｜否｜否｜否｜否｜否｜否｜否

MaxDB｜?｜?｜否｜否｜否｜否｜否｜否

Microsoft SQL Server｜?｜否n/Cluster & fill factor｜是 8｜是 9｜是 8｜否｜否｜否

MonetDB｜否｜是｜否｜否｜否｜否｜否｜否

MySQL｜仅限MyISAM｜MEMORY, Cluster (NDB), 仅限InnoDB,17｜否｜否｜否｜否｜否｜否

Oracle｜EE edition only｜Cluster Tables｜是｜是 15｜是｜是｜否｜否

OpenLink Virtuoso｜是｜Cluster｜是｜否｜否｜是｜否｜否

PostgreSQL｜是｜是｜是｜是｜是 10｜否 11｜是｜是

Pyrrho DBMS｜否｜否｜否｜否｜否｜否｜否｜否

SQL Anywhere｜否｜否｜否｜否｜否｜否｜否｜否

SQLite｜否｜否｜否｜否｜是｜否｜否｜否

Teradata｜否｜是｜是｜是｜否｜是｜否｜否

Valentina｜否｜否｜是 8｜是 17｜是｜是｜否｜否

R-/R+ tree｜哈希｜Expression｜部分索引(Partial index)｜反向索引(Reverse index)｜位图索引（Bitmap）｜GiST｜GIN

注记 (8): 可通过索引一个经过计算的列，或使用一个已索引的视图实现

注记 (9): 可使用索引视图实现。

注记 (17): InnoDB自动按需生成 adaptive hash index。

注记 (10): 一个有效的PostgreSQL索引可以用来进行倒排序。

注记 (11): PostgreSQL将在8.3中支持保存于磁盘的位图索引。8.2提供了一种称为"内存位图扫描（in-memory bitmap scans）"的相关技术。

注记 (15): 在Oracle 8i及以后的版本可使用基于函数的索引（Function-based Indexes）实现。

注记 (16): The users need to use a function from freeAdhocUDF library or similar.

注记 (17): 在Valentina中可使用基于函数的索引（Function-based Indexes）实现。

## 其他对象

有关其他类型对象的支持情况。

数据域｜游标｜触发器｜函数 12｜存储过程 12｜外部调用 12

Adaptive Server Enterprise｜是｜是｜是｜是｜是｜是

Apache Derby｜否｜是｜是｜是 13｜是 13｜是 13

DB2｜否｜是｜是｜是｜是｜是

Firebird｜是｜是｜是｜是｜是｜是

HSQLDB｜?｜否｜是｜是｜是｜是

H2｜是｜否｜是｜是｜是｜是

Informix｜?｜是｜是｜是｜是｜是

Ingres｜是｜是｜是｜是｜是｜是

InterBase｜是｜是｜是｜是｜是｜是

MaxDB｜是｜是｜是｜是｜是｜?

Microsoft SQL Server｜是 (2000 and beyond)｜是｜是｜是｜是｜是

MonetDB｜否｜否｜是｜是｜是｜是

MySQL｜否｜是｜是｜是｜是｜是

Oracle｜是｜是｜是｜是｜是｜是

OpenLink Virtuoso｜是｜是｜是｜是｜是｜是

PostgreSQL｜是｜是｜是｜是｜是｜是

Pyrrho DBMS｜是｜是｜是｜是｜是｜是

SQL Anywhere｜是｜是｜是｜是｜是｜是

SQLite｜否｜否｜是｜否｜否｜是

Teradata｜否｜是｜是｜是｜是｜是

Valentina｜否｜是｜是｜否｜是｜否

数据域｜游标｜触发器｜函数 12｜存储过程 12｜外部调用

注记 (12): 以上函数和存储过程都是指使用SQL或者过程语言（如PL/SQL、PL/pgSQL等）编写的内部程序调用。外部调用是指使用其他外部语言，如C、Java等语言编写的调用。存储过程是这类调用的笼统称呼，在不同的供应商系统中，它们往往有着不同的定义。

注记 (13): In Derby, users code functions and procedures in Java.

## 数据表分区

范围(Range)｜哈希(Hash)｜混合（范围＋哈希）｜列表(List)

Adaptive Server Enterprise｜是｜是｜否｜是

Apache Derby｜否｜否｜否｜否

IBM DB2｜是｜是｜是｜是

Firebird｜否｜否｜否｜否

Informix｜是｜是｜?｜?

Ingres｜是｜是｜是｜是

InterBase｜否｜否｜否｜否

MaxDB｜否｜否｜否｜否

Microsoft SQL Server｜是｜否｜否｜否

MonetDB｜是 (M5)｜是 (M5)｜是 (M5)｜否

MySQL｜是 (5.1 beta)｜是 (5.1 beta)｜是 (5.1 beta)｜是 (5.1 beta)

Oracle｜是｜是｜是｜是

OpenLink Virtuoso｜是｜否｜否｜否

PostgreSQL｜是 14｜是 14｜是 14｜是 14

Pyrrho DBMS｜否｜否｜否｜否

SQL Anywhere｜否｜否｜否｜否

SQLite｜否｜否｜否｜否

Teradata｜是｜是｜是｜是

Valentina｜否｜否｜否｜否

范围(Range)｜哈希(Hash)｜混合（范围＋哈希）｜列表(List)

注记 (14): PostgreSQL 8.1 提供了使用check约束实现的数据表分区。范围、列表以及哈希分区可通过PL/pgSQL或者其他过程语言模拟。

## 数据库与模式(Schemas)

SQL标准明确了SQL模式（SQL schema）的定义，然而，许多数据库对它的实现并不正确。SQL模式是指一个数据库内部的名字空间，此空间内部的对象可以通过成员操作符`.`访问。

一个完整名字的查询类似这种形式：`select * from database.schema.table`。

## 外部链接

- 各种SQL标准实现的对比，包括Oracle, DB2, Microsoft SQL Server, MySQL 与 PostgreSQL. (08/Jun/2007)
- Comparison of Oracle 8/9i, MySQL 4.x and PostgreSQL 7.x DBMS against SQL standards. (14/Mar/2005)
- Comparison of Oracle and SQL Server. (2004)
- Comparison of geometrical data handling in PostgreSQL, MySQL and DB2 (29/Sep/2003)
- Open Source Database Software Comparison (Mar/2005)
- PostgreSQL vs. MySQL vs. Commercial Databases: It's All About What You Need (12/Apr/2004)
- The SQL92 standard