# 关系型数据库管理系统比较[编辑]

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

## 基本信息

|  | 维护者
 | 首次发行日期
 | 最新稳定版
 | 软件授权协议
 |
| --- | --- | --- | --- | --- |
| 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年
 | 12.1 (2024年11月14日，18個月前)
 | 专有
 |
| DBISAM
 | Elevate Software （页面存档备份，存于互联网档案馆）
 | ?
 | 4.25
 | 专有
 |
| ElevateDB
 | Elevate Software （页面存档备份，存于互联网档案馆）
 | ?
 | 1.01
 | 专有
 |
| Firebird
 | Firebird Foundation
 | 2000年7月25日
 | 5.0.4 (2026年4月17日，2個月前)
 | 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年
 | 2025 (2025年11月18日，6個月前)
 | 专有
 |
| MonetDB
 | The MonetDB Developer Team （页面存档备份，存于互联网档案馆）
 | 2004年
 | 4.16 (Feb. 2007)
 | MonetDB Public License v1.1 （页面存档备份，存于互联网档案馆）
 |
| MySQL
 | MySQL AB
 | 1995年
 | 9.7.0 (2026年4月21日，2個月前)
 | GPL 或 专有
 |
| HP NonStop SQL
 | Hewlett-Packard
 | 1987年
 | SQL MX 2.0
 | 专有
 |
| Oracle
 | Oracle Corporation
 | 1979年11月
 | 26ai (2025年10月14日，8個月前)
 | 专有
 |
| 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月
 | 18.4 (2026年5月14日，39天前)
 | 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日
 | 3.53.2 (2026年6月3日，19天前)
 | 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): 外联键约束在语法上有效，但实际上并不能得到强制执行，可使用触发器替代。不支持嵌套事务。[1] （页面存档备份，存于互联网档案馆）

## 表与视图

|  | 临时表
 | 物化视图(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): 服务器提供临时数据库，可供会话存放公共／私有的临时表。[2]

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

注记 (7): 物化视图在PostgreSQL 9.3中已经实现支持。 [4] （页面存档备份，存于互联网档案馆）.

## 索引

数据库所支持的索引类型（除基本的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): 可通过索引一个经过计算的列，或使用一个已索引的视图实现 [5] （页面存档备份，存于互联网档案馆）

注记 (9): 可使用索引视图实现。 [6] （页面存档备份，存于互联网档案馆）

注记 (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. [7] （页面存档备份，存于互联网档案馆）

注记 (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或者其他过程语言模拟。[8] （页面存档备份，存于互联网档案馆）

## 数据库与模式(Schemas)

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

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

## 参考资料

* [9]（页面存档备份，存于互联网档案馆） 各种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（页面存档备份，存于互联网档案馆）

* 关系型数据库管理系统列表