The following tables compare general and technical information for a number of relational database management systems. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.

General information

MaintainerFirst public release dateLatest stable versionLatest release dateLicensePublic issues list
4D (4th Dimension)4D S.A.S.1984v16.02017-01-10ProprietaryNo
ADABASSoftware AG19708.12013-06ProprietaryNo
Adaptive Server EnterpriseSAP AG198716.0 SP03 PL072019-06-10ProprietaryNo
Advantage Database Server (ADS)SAP AG199212.02015ProprietaryNo
AltibaseAltibase Corp.20007.1.0.1.22018-03-02ProprietaryNo
Apache DerbyApache200410.17.1.02023-11-14Apache LicenseYes
ClustrixDBMariaDB Corporation2010v7.02015-08-19ProprietaryNo
CockroachDBCockroach Labs2015v24.1.02024-05-20BSL,CCL,MIT,BSDYes
CUBRIDCUBRID2008-1111.2.32023-01-31Apache License 2.0, BSD license for APIs and GUI toolsYes
DatacomCA, Inc.Early 70s142012ProprietaryNo
IBM Db2IBM198312.12024-11-14; 17 months agoProprietaryNo
Empress Embedded DatabaseEmpress Software Inc197910.202010-03ProprietaryNo
ExasolEXASOL AG20047.1.12021-09-15; 4 years agoProprietaryNo
FileMakerFileMaker, Inc., an Apple subsidiary1985-04192020-05-20ProprietaryNo
FirebirdFirebird project2000-07-255.0.42026-04-17; 13 hours agoIPL and IDPLYes
GPUdbGIS Federal20143.2.52015-01-14ProprietaryNo
HSQLDBHSQL Development Group20012.6.12021-10-21BSDYes
H2H2 Software20052.3.2322024-08-12EPL and modified MPLYes
Informix Dynamic ServerIBM / HCL Technologies1981????198015.0.0.12025-03-15ProprietaryNo
IngresActian(HCLSoftware)197412.0.02024-05-06ProprietaryNo
InterBaseEmbarcadero Technologies1984XE7 v12.0.4.3572015-08-12ProprietaryNo
Linter SQL RDBMSRELEX Group19906.0.17.532018-02-15ProprietaryYes
LucidDBThe Eigenbase Project2007-010.9.42012-01-05GPL v2No
MariaDBMariaDB Community2010-02-0112.2.22026-02-12; 2 months agoGPL v2, LGPL (for client-libraries)Yes
MaxDBSAP AG2003-057.9.0.82014ProprietaryYes
SingleStore (formerly MemSQL)SingleStore2012-067.1.112020-10-12ProprietaryNo
Microsoft Access (JET)Microsoft199216 (2016)2015-09-22ProprietaryNo
Microsoft Visual FoxproMicrosoft19849 (2005)2007-10-11ProprietaryNo
Microsoft SQL ServerMicrosoft198920252025-11-18; 4 months agoProprietaryNo
Microsoft SQL Server Compact (Embedded Database)Microsoft20002011 (v4.0)ProprietaryNo
Mimer SQLMimer Information Technology197811.0.9F2026-02-05ProprietaryNo
MonetDBMonetDB Foundation2004Dec20252025-12-16Mozilla Public License, version 2.0Yes
mSQLHughes Technologies19944.12017-06-30ProprietaryNo
MySQLOracle Corporation1995-118.0.432025-10-21; 5 months agoGPL v2 or ProprietaryYes
NexusDBNexusDB Pty Ltd20034.00.142015-06-25ProprietaryNo
HPE NonStop SQLHewlett Packard Enterprise1987SQL/MX 3.4ProprietaryNo
NuoDBNuoDB20134.12020-08ProprietaryNo
Omnis StudioTigerLogic Inc1982-076.1.3 Release 1no2015-12ProprietaryNo
OpenEdgeProgress Software Corporation198412.82024-1ProprietaryNo
OpenLink VirtuosoOpenLink Software19987.2.142024-11-11GPL v2 or ProprietaryYes
Oracle DBOracle Corporation1979-1126ai2025-10-14; 6 months agoProprietaryNo
Oracle RdbOracle Corporation19847.4.1.12021-04-21[±]ProprietaryNo
ParadoxCorel Corporation1985112009-09-07ProprietaryNo
Percona Server for MySQLPercona20068.0.37-292024-08-06[±]GPL v2Yes
Actian Zen (PSQL)Actian1982v162024-06-30ProprietaryNo
Polyhedra DBMSENEA AB19939.02015-06-24Proprietary, with Polyhedra Lite available as FreewareNo
PostgreSQLPostgreSQL Global Development Group1989-0617.42025-02-21Postgres LicenseNo
R:BaseR:BASE Technologies198210.02016-05-26ProprietaryNo
SAP HANASAP AG20102.0 SPS042019-08-08ProprietaryNo
solidDBUNICOM Global19927.0.0.102014-04-29ProprietaryNo
SQL AnywhereSAP AG199217.0.0.482019-07-26ProprietaryNo
SQLBaseUnify Corp.198211.52008-11ProprietaryNo
SQLiteD. Richard Hipp2000-09-123.53.02026-04-09; 8 days agoPublic domainYes
SQream DBSQream Technologies20142.12018-01-15ProprietaryNo
SuperbaseSuperbase1984Classic2003ProprietaryNo
Superbase NGSuperbase NG2002Superbase NG 2.102017ProprietaryYes
TeradataTeradata1984152014-04ProprietaryNo
TiDBPingCAP Inc.20168.5.62026-04-14; 3 days agoApache LicenseYes
UniDataRocket Software19888.2.12017-07ProprietaryNo
VectorActian(HCLSoftware)20107.02024-12-17ProprietaryNo
YugabyteDBYugabyte, Inc.20182.20.1.32024-01-25[±]Apache LicenseYes
Actian Zen (PSQL)Actian1982v162024-06-30ProprietaryNo
MaintainerFirst public release dateLatest stable versionLatest release dateLicensePublic issues list

Operating system support

The operating systems that the RDBMSes can run on.

WindowsmacOSLinuxBSDUNIXAmigaOSz/OSOpenVMSiOSAndroid
4th DimensionYesYesNoNoNoNoNoNoNoNo
ADABASYesNoYesNoYesNoYesNoNoNo
Adaptive Server EnterpriseYesNoYesYesYesNoNoNoNoNo
Advantage Database ServerYesNoYesNoNoNoNoNoNoNo
AltibaseYesNoYesNoYesNoNoNoNoNo
Apache DerbyYesYesYesYesYesNoYesNo?No
ClustrixDBNoNoYesNoYesNoNoNoNoNo
CockroachDBYesYesYesNoNoNoNoNoNoNo
CUBRIDYesPartialYesNoNoNoNoNoNoNo
IBM Db2YesYesYesNoYesNoYesNoYesNo
Empress Embedded DatabaseYesYesYesYesYesNoNoNoNoYes
EXASolutionNoNoYesNoNoNoNoNoNoNo
FileMakerYesYesYesNoNoNoNoNoYesNo
FirebirdYesYesYesYesYesNoMaybeNoYesYes
HSQLDBYesYesYesYesYesNoYesNo??
H2YesYesYesYesYesNoYesNo?Yes
Informix Dynamic ServerYesNoYesNoYes (AIX)NoNoNoNoNo
IngresYesYesYesYesYesNoPartialYesNoNo
InterBaseYesYesYesNoYes (Solaris)NoNoNoYesYes
Linter SQL RDBMSYesYesYesYesYesNoUnder Linux on IBM ZYesYesYes
LucidDBYesYesYesNoNoNoNoNoNoNo
MariaDBYesYesYesYesYesNoNoNo?Yes
MaxDBYesNoYesNoYesNoMaybeNoNoNo
Microsoft Access (JET)YesNoNoNoNoNoNoNoNoNo
Microsoft Visual FoxproYesNoNoNoNoNoNoNoNoNo
Microsoft SQL ServerYesNoYesNoNoNoNoNoNoNo
Microsoft SQL Server Compact (Embedded Database)YesNoNoNoNoNoNoNoNoNo
Mimer SQLYesYesYesNoYesNoNoYesNoYes
MonetDBYesYesYesYesYesNoNoNoNoNo
MySQLYesYesYesYesYesYesYesNo?Yes
Omnis StudioYesYesYesNoNoNoNoNoNoNo
OpenEdgeYesNoYesNoYesNoNoNoNoNo
OpenLink VirtuosoYesYesYesYesYesNoNoNoNoNo
OracleYesYesYesNoYesNoYesYesNoNo
Oracle RdbNoNoNoNoNoNoNoYesNoNo
Actian Zen (PSQL)YesYes (OEM only)YesNoNoNoNoNoYesYes
PolyhedraYesNoYesNoYesNoNoNoNoNo
PostgreSQLYesYesYesYesYesYes (MorphOS)Under Linux on IBM ZNoNoYes
R:BaseYesNoNoNoNoNoNoNoNoNo
SAP HANAYesNoYesNoNoNoNoNoNoNo
solidDBYesNoYesNoYesNoUnder Linux on IBM ZNoNoNo
SQL AnywhereYesYesYesNoYesNoNoNoNoYes
SQLBaseYesNoYesNoNoNoNoNoNoNo
SQLiteYesYesYesYesYesYesMaybeNoYesYes
SQream DBNoNoYesNoNoNoNoNoNoNo
SuperbaseYesNoNoNoNoYesNoNoNoNo
Superbase NGYesNoYesNoNoNoNoNoNoNo
TeradataYesNoYesNoYesNoNoNoNoNo
TiDBYesYesYesPartialNoNoNoNoNoNo
UniDataYesNoYesNoYesNoNoNoNoNo
UniVerseYesNoYesNoYesNoNoNoNoNo
YugabyteDBYesYesYesNoNoNoNoNoNoNo
WindowsmacOSLinuxBSDUNIXAmigaOSz/OSOpenVMSiOSAndroid

Fundamental features

Information about what fundamental RDBMS features are implemented natively.

Database NameACIDReferential integrityTransactionsFine-grained lockingMultiversion concurrency controlUnicodeInterfaceType inference
4th DimensionYesYesYes??YesGUI & SQLYes
ADABASYesNoYes??Yesproprietary direct call & SQL (via 3rd party)Yes
Adaptive Server EnterpriseYesYesYesYes (Row-level locking)YesYesAPI & GUI & SQLYes
Advantage Database ServerYesYesYesYes (Row-level locking)?Yes4API & SQLYes
AltibaseYesYesYesYes (Row-level locking)?YesAPI & GUI & SQLYes
Apache DerbyYesYesYesYes (Row-level locking)?YesSQLYes
ClustrixDBYesYesYesYesYesYesSQLYes
CockroachDBYesYesYesYes (Row-level locking)YesYesSQLNo
CUBRIDYesYesYesYes (Row-level locking)YesYesGUI & SQLYes
IBM Db2YesYesYesYes (Row-level locking)?YesGUI & SQLYes
Empress Embedded DatabaseYesYesYes??YesAPI & SQLYes
EXASolutionYesYesYes??YesAPI & GUI & SQLYes
FirebirdYesYesYes?YesYesAPI & SQLYes
HSQLDBYesYesYes?YesYesSQLYes
H2YesYesYes?YesYesSQLYes
Informix Dynamic ServerYesYesYesYes (Row-level locking)YesYesSQL, REST, MQ, and JSONYes
IngresYesYesYesYes (Row-level locking)YesYesSQL & QUELYes
InterBaseYesYesYes??YesSQLYes
Linter SQL RDBMSYesYesYes (Except for DDL)Yes (Row-level locking)?YesAPI & GUI & SQLYes
LucidDBYesNoNo??YesSQLYes
MariaDBYes2YesYes2 except for DDLYes (Row-level locking)YesYesSQLYes
MaxDBYesYesYes??YesSQLYes
Microsoft Access (JET)YesYesYes??YesGUI & SQLYes
Microsoft Visual FoxProYesYesYesYes (Row-level locking SMB2)YesNoGUI & SQLYes
Microsoft SQL ServerYesYesYesYes (Row-level locking)YesYesGUI & SQLYes
Microsoft SQL Server Compact (Embedded Database)YesYesYes??YesGUI & SQLYes
Mimer SQLYesYesYesYes (Optimistic locking)YesYesAPI & GUI & SQLYes
MonetDBYesYesYes??YesAPI & SQL & MALYes
MySQLYes2Yes3Yes2 except for DDLYes (Row-level locking)YesYesGUI 5 & SQLYes
OpenEdgeYesYes6YesYes (Row-level locking)?YesGUI & SQLYes
OpenLink VirtuosoYesYesYes??YesAPI & GUI & SQLYes
OracleYesYesYes except for DDLYes (Row-level locking)YesYesAPI & GUI & SQLYes
Oracle RdbYesYesYes??YesSQLYes
Actian Zen (PSQL)YesYesYes??YesAPI & GUI & SQLYes
Polyhedra DBMSYesYesYesYes (optimistic and pessimistic cell-level locking)?YesAPI & SQLYes
PostgreSQLYesYesYesYes (Row-level locking)YesYesAPI & GUI & SQLNo
SAP HANAYesYesYesYes (Row-level locking)YesYesAPI & GUI & SQLYes
solidDBYesYesYesYes (Row-level locking)?YesAPI & SQLYes
SQL AnywhereYesYesYesYes (Row-level locking)YesYesAPI & GUI & HTTP(S) (REST & SOAP) & SQLYes
SQLBaseYesYesYes??YesAPI & GUI & SQLYes
SQLiteYesYesYesNo (Database-level locking)NoOptionalAPI & SQLYes
Superbase NG???Yes (Record-level locking)?YesGUI & Proprietary & ODBCYes
TeradataYesYesYesYes (Hash and Partition)?YesSQLYes
TiDBYesYesYes except for DDLYes (Row-level locking)YesYesGUI 5 & SQLYes
UniDataYesNoYes??YesMultipleYes
UniVerseYesNoYes??YesMultipleYes
Database NameACIDReferential integrityTransactionsFine-grained lockingMultiversion concurrency controlUnicodeInterfaceType inference
  • Note (1): Currently only supports read uncommitted transaction isolation. Version 1.9 adds serializable isolation and version 2.0 will be fully ACID compliant.
  • Note (2): MariaDB and MySQL provide ACID compliance through the default InnoDB storage engine.
  • Note (3): "For other than InnoDB storage engines, MySQL Server parses and ignores the FOREIGN KEY and REFERENCES syntax in CREATE TABLE statements." "The CHECK clause (as of 8.0.16) supports most core features for all storage engines."
  • Note (4): Support for Unicode is new in version 10.0.
  • Note (5): MySQL provides GUI interface through MySQL Workbench.
  • Note (6): OpenEdge SQL database engine uses Referential Integrity, OpenEdge ABL Database engine does not and is handled via database triggers.

Limits

Information about data size limits.

Max DB sizeMax table sizeMax row sizeMax columns per rowMax Blob/Clob sizeMax CHAR sizeMax NUMBER sizeMin DATE valueMax DATE valueMax column name size
4th DimensionLimited??65,135200 GB (2 GiB Unicode)200 GB (2 GiB Unicode)64 bits???
Advantage Database ServerUnlimited16 EiB65,530 B65,135 / (10+ AvgFieldNameLength)4 GiB?64 bits??128
Apache DerbyUnlimitedUnlimitedUnlimited1,012 (5,000 in views)2,147,483,647 chars254 (VARCHAR: 32,672)64 bits0001-01-019999-12-31128
ClustrixDBUnlimitedUnlimited64 MB on Appliance, 4 MB on AWS?64 MB64 MB64 MB0001-01-019999-12-31254
CUBRID2 EB2 EBUnlimitedUnlimitedUnlimited1 GB64 bits0001-01-019999-12-31254
IBM DB2Unlimited2 ZB1,048,319 B1,0122 GB32 KiB64 bits0001-01-019999-12-31128
Empress Embedded DatabaseUnlimited263−1 bytes2 GB32,7672 GB2 GB64 bits0000-01-019999-12-3132
EXASolutionUnlimitedUnlimitedUnlimited10,000—N/a2 MB128 bits0001-01-019999-12-31256
FileMaker8 TB8 TB8 TB256,000,0004 GB10,000,0001 billion characters, 10−400 to 10400, ±0001-01-014000-12-31100
FirebirdUnlimited1≈32 TB65,536 BDepends on data types used32 GB32,767 B128 bits1003276863
HSQLDB64 TBUnlimited8Unlimited8Unlimited864 TB7Unlimited8Unlimited80001-01-019999-12-31128
H264 TBUnlimited8Unlimited8Unlimited864 TB7Unlimited864 bits-9999999999999999Unlimited8
Max DB sizeMax table sizeMax row sizeMax columns per rowMax Blob/Clob sizeMax CHAR sizeMax NUMBER sizeMin DATE valueMax DATE valueMax column name size
Informix Dynamic Server≈0.5 YB12≈0,5YB1232,765 bytes (exclusive of large objects)32,7654 TB32,7651410125 1301/01/00011012/31/9999128 bytes
IngresUnlimitedUnlimited256 KB1,0242 GB32 000 B64 bits00019999256
InterBaseUnlimited1≈32 TB65,536 BDepends on data types used2 GB32,767 B64 bits1003276831
Linter SQL RDBMSUnlimited230 rows64 KB (w/o BLOBs), 2GB (each BLOB value)2502 GB4000 B64 bits0001-01-019999-12-3166
MariaDBUnlimitedMyISAM storage limits: 256 TB; Innodb storage limits: 64 TB; Aria storage limits: ???64 KB34,09644 GB (longtext, longblob)64 KB (text)64 bits1000999964
Microsoft Access (JET)2 GB2 GB16 MB25564 KB (memo field), 1 GB ("OLE Object" field)255 B (text field)32 bits0100999964
Microsoft Visual FoxproUnlimited2 GB65,500 B2552 GB16 MB32 bits0001999910
Microsoft SQL Server524,272 TB (32 767 files × 16 TB max file size) 16ZB per instance524,272 TB8,060 bytes / 2 TB61,024 / 30,000(with sparse columns)2 GB / Unlimited (using RBS/FILESTREAM object)2 GB6126 bits200019999128
Microsoft SQL Server Compact (Embedded Database)4 GB4 GB8,060 bytes10242 GB4000154 bits00019999128
Mimer SQLUnlimitedUnlimited16000 (+lob data)252Unlimited1500045 digits0001-01-019999-12-31128
MonetDBUnlimitedUnlimitedUnlimitedUnlimited2 GB2 GB128 bits-4712-01-019999-12-311024
MySQLUnlimitedMyISAM storage limits: 256 TB; Innodb storage limits: 64 TB64 KB34,09644 GB (longtext, longblob)64 KB (text)64 bits1000999964
OpenLink Virtuoso32 TB per instance (Unlimited via elastic cluster)DB size (or 32 TB)4 KB2002 GB2 GB23109999100
Oracle2 PB (with standard 8k block) 8 PB (with max 32k block) 8 EB (with max 32k block and BIGFILE option)4 GB × block size (with BIGFILE tablespace)8 KB1,000128 TB32,767 B11126 bits−47129999128
Max DB sizeMax table sizeMax row sizeMax columns per rowMax Blob/Clob sizeMax CHAR sizeMax NUMBER sizeMin DATE valueMax DATE valueMax column name size
Actian Zen (PSQL)4 billion objects256 GB2 GB1,5362 GB8,000 bytes64 bits01-01-000112-31-9999128 bytes
PolyhedraLimited by available RAM, address space232 rowsUnlimited65,5364 GB (subject to RAM)4 GB (subject to RAM)64 bits0001-01-018000-12-31255
PostgreSQLUnlimited32 TB1.6 TB250–1600 depending on type1 GB (text, bytea) stored inline or 4 TB using pg_largeobject1 GBUnlimited−4,7135,874,89763
SAP HANA??????????
solidDB256 TB256 TB32 KB + BLOB dataLimited by row size4 GB4 GB64 bits-32768-01-0132767-12-31254
SQL Anywhere104 TB (13 files, each file up to 8 TB (32 KB pages))Limited by file sizeLimited by file size45,0002 GB2 GB64 bits0001-01-019999-12-31128 bytes
SQLite128 TB (231 pages × 64 KB max page size)Limited by file sizeLimited by file size32,7672 GB2 GB64 bitsNo DATE type9No DATE type9Unlimited
TeradataUnlimitedUnlimited64000 wo/lobs (64 GB w/lobs)2,0482 GB64,00038 digits0001-01-019999-12-31128
UniVerseUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedUnlimited
Max DB sizeMax table sizeMax row sizeMax columns per rowMax Blob/Clob sizeMax CHAR sizeMax NUMBER sizeMin DATE valueMax DATE valueMax column name size
  • Note (1): Firebird 2.x maximum database size is effectively unlimited with the largest known database size >980 GB. Firebird 1.5.x maximum database size: 32 TB.
  • Note (2): Limit is 1038 using DECIMAL datatype.
  • Note (3): InnoDB is limited to 8,000 bytes (excluding VARBINARY, VARCHAR, BLOB, or TEXT columns).
  • Note (4): InnoDB is limited to 1,017 columns.
  • Note (6): Using VARCHAR (MAX) in SQL 2005 and later.
  • Note (7): When using a page size of 32 KB, and when BLOB/CLOB data is stored in the database file.
  • Note (8): Java array size limit of 2,147,483,648 (231) objects per array applies. This limit applies to number of characters in names, rows per table, columns per table, and characters per CHAR/VARCHAR.
  • Note (9): Despite the lack of a date datatype, SQLite does include date and time functions, which work for timestamps between 24 November 4714 B.C. and 1 November 5352.
  • Note (10): Informix DATETIME type has adjustable range from YEAR only through 1/10000th second. DATETIME date range is 0001-01-01 00:00:00.00000 through 9999-12-31 23:59:59.99999.
  • Note (11): Since version 12c. Earlier versions support up to 4000 B.
  • Note (12): The 0.5 YB limit refers to the storage limit of a single Informix server instance beginning with v15.0. Informix v12.10 and later versions support using sharding techniques to distribute a table across multiple server instances. A distributed Informix database has no upper limit on table or database size.
  • Note (13): Informix DECIMAL type supports up to 32 decimal digits of precision with a range of 10−130 to 10125. Fixed and variable precision are supported.
  • Note (14): The LONGLVARCHAR type supports strings up to 4TB.

Tables and views

Information about what tables and views (other than basic ones) are supported natively.

Temporary tableMaterialized view
4th DimensionYesNo
ADABAS??
Adaptive Server EnterpriseYes1Yes – see precomputed result sets
Advantage Database ServerYesNo (only common views)
AltibaseYesNo (only common views)
Apache DerbyYesNo
ClustrixDBYesNo
CUBRIDYes (only CTE)No (only common views)
IBM Db2YesYes
Empress Embedded DatabaseYesYes
EXASolutionYesNo
FirebirdYesNo (only common views)
HSQLDBYesNo
H2YesNo (only common views)
Informix Dynamic ServerYesNo2
IngresYesNo
InterBaseYesNo
Linter SQL RDBMSYesYes
LucidDBNoNo
MariaDBYesNo4
MaxDBYesNo
Microsoft Access (JET)NoNo
Microsoft Visual FoxproYesYes
Microsoft SQL ServerYesYes
Microsoft SQL Server Compact (Embedded Database)YesNo
Mimer SQLNoNo
MonetDBYesNo (only common views)
MySQLYesNo4
OracleYesYes
Oracle RdbYesYes
OpenLink VirtuosoYesYes
Actian Zen (PSQL)YesNo
Polyhedra DBMSNoNo (only common views)
PostgreSQLYesYes
SAP HANAYes?
solidDBYesNo (only common views)
SQL AnywhereYesYes
SQLiteYesNo
SuperbaseYesYes
TeradataYesYes
UniDataYesNo
UniVerseYesNo
Temporary tableMaterialized view
  • Note (1): Server provides tempdb, which can be used for public and private (for the session) temp tables.
  • Note (2): Materialized views are not supported in Informix; the term is used in IBM's documentation to refer to a temporary table created to run the view's query when it is too complex, but one cannot for example define the way it is refreshed or build an index on it. The term is defined in the Informix Performance Guide.
  • Note (4): Materialized views can be emulated using stored procedures and triggers.

Indexes

Information about what indexes (other than basic B-/B+ tree indexes) are supported natively.

R-/R+ treeHashExpressionPartialReverseBitmapGiSTGINFull-textSpatialForest of Trees IndexDuplicate index prevention
4th Dimension?Cluster??????Yes??No
ADABAS???????????No
Adaptive Server EnterpriseNoNoYesNoYesNoNoNoYes??No
Advantage Database ServerNoNoYesNoYesYesNoNoYes??No
Apache DerbyNoNoNoNoNoNoNoNoNo??No
ClustrixDBNoYesNoNoNoNoNoNoNoNo?No
CUBRIDNoNoYesYesYesNoNoNoNoNoNoNo
IBM Db2YesYesYesNoYesYesNoNoYes??No
Empress Embedded DatabaseYesNoNoYesNoYesNoNoNo??No
EXASolutionNoYesNoNoNoNoNoNoNo??No
FirebirdNoNoYesYesYesNoNoNoNo??No
HSQLDBNoNoNoNoNoNoNoNoNo??No
H2NoYesNoNoNoNoNoNoYesYes?No
Informix Dynamic ServerYesYesYesYesYesYesYesYesYesYesYesYes
IngresYesYesIngres v10NoNoIngres v10NoNoNo??No
InterBaseNoNoNoNoNoNoNoNoNo??No
Linter SQL RDBMS10NoYes temporary indexes for equality joinsYes for some scalar functions like LOWER and UPPERNoNoNoNoNoYesNoNoYes
LucidDBNoNoNoNoNoYesNoNoNo??No
MariaDBAria and MyISAM tables and, since v10.2.2, InnoDB tables onlyMEMORY, InnoDB,5 tables onlyPERSISTENT virtual columns onlyNoNoNoNoNoYesAria and MyISAM tables and, since v10.2.2, InnoDB tables only?No
MaxDBNoNoNoNoNoNoNoNoNo??No
Microsoft Access (JET)NoNoNoNoNoNoNoNoNo??No
Microsoft Visual FoxproNoNoYesYesYes2YesNoNoNo??No
Microsoft SQL ServerSpatial IndexesYes4Yes3Yeson Computed columns3Bitmap filter index for Star Join QueryNoNoYesYes?No
Microsoft SQL Server Compact (Embedded Database)NoNoNoNoNoNoNoNoNo??No
Mimer SQLNoNoNoNoYesNoNoNoYesYesNoNo
MonetDBNoYesNoNoNoNoNoNoNoNoNoNo
MySQLSpatial IndexesMEMORY, Cluster (NDB), InnoDB,5 tables onlyNoNoNoNoNoNoMyISAM tables and, since v5.6.4, InnoDB tablesMyISAM tables and, since v5.7.5, InnoDB tables?No
OpenLink VirtuosoYesClusterYesYesNoYesNoNoYesYes (Commercial only)NoNo
OracleYes 11Cluster TablesYesYes 6YesYesNoNoYesYes?Yes
Oracle RdbNoYes?NoNo?NoNo???No
Actian Zen (PSQL)NoNoNoNoNoNoNoNoNoNoNoNo
Polyhedra DBMSNoYesNoNoNoNoNoNoNoNo?No
PostgreSQLYesYesYesYesYes7YesYesYesYesPostGISNoNo
SAP HANA???????????No
solidDBNoNoNoNoYesNoNoNoNoNoNoNo
SQL AnywhereNoNoYesNoNoNoNoNoYesYes?Yes
SQLiteYesNoYesYesNoNoNoNoYesSpatiaLite?No
SQream DB????Yes??????No
TeradataNoYesYesYesNoYesNoNo???No
UniVerseYesYesYes3Yes3Yes3NoNoNo?Yes?No
R-/R+ treeHashExpressionPartialReverseBitmapGiSTGINFull-textSpatialForest of Trees IndexDuplicate index prevention
  • Note (1): The users need to use a function from freeAdhocUDF library or similar.
  • Note (2): Can be implemented for most data types using expression-based indexes.
  • Note (3): Can be emulated by indexing a computed column (doesn't easily update) or by using an "Indexed View" (proper name not just any view works).
  • Note (4): Used for InMemory ColumnStore index, temporary hash index for hash join, Non/Cluster & fill factor.
  • Note (5): InnoDB automatically generates adaptive hash index entries as needed.
  • Note (6): Can be implemented using Function-based Indexes in Oracle 8i and higher, but the function needs to be used in the sql for the index to be used.
  • Note (7): A PostgreSQL functional index can be used to reverse the order of a field.
  • Note (10): B+ tree and full-text only for now.
  • Note (11): R-Tree indexing available in base edition with Locator but some functionality requires Personal Edition or Enterprise Edition with Spatial option.
  • Note (12): FOT or Forest of Trees indexes is a type of B-tree index consisting of multiple B-trees which reduces contention in multi-user environments.

Database capabilities

UnionIntersectExceptInner joinsOuter joinsInner selectsMerge joinsBlobs and clobsCommon table expressionsWindowing functionsParallel querySystem-versioned tables
4th DimensionYesYesYesYesYesNoNoYes????
ADABASYes???????????
Adaptive Server EnterpriseYes??YesYesYesYesYes??Yes?
Advantage Database ServerYesNoNoYesYesYesYesYes?No??
AltibaseYesYesYes, via MINUSYesYesYesYesYesNoNoNo?
Apache DerbyYesYesYesYesYesYes?YesNoNo??
ClustrixDBYesNoNoYesYesYesNoYesYesYesYes?
CUBRIDYesYesYesYesYesYesYesYesYesYes??
IBM Db2YesYesYesYesYesYesYesYesYesYesYesYes
Empress Embedded DatabaseYesYesYesYesYesYesYesYes????
EXASolutionYesYesYesYesYesYesYesNoYesYesYes?
FirebirdYesNoNoYesYesYesYesYesYesYes??
HSQLDBYesYesYesYesYesYesYesYesYesNoYes?
H2YesYesYesYesYesYesNoYesexperimentalYes??
Informix Dynamic ServerYesYesYes, via MINUSYesYesYesYesYesYesYesYes?
IngresYesNoNoYesYesYesYesYesYesYesYes?
InterBaseYes??YesYes??Yes????
Linter SQL RDBMSYesYesYesYesYesYesYesYesYesYesNoNo
LucidDBYesYesYesYesYesYesYesNo????
MariaDBYes10.3+10.3+YesYesYesNoYesYesYesNoYes
MaxDBYes??YesYesYesNoYes????
Microsoft Access (JET)YesNoNoYesYesYesNoYesNoNo??
Microsoft Visual FoxproYes??YesYesYes?Yes????
Microsoft SQL ServerYesYesYesYesYesYesYesYesYesYesYesYes
Microsoft SQL Server Compact (Embedded Database)YesNoNoYesYes?NoYesNoNo??
Mimer SQLYesYesYesYesYesYes?YesYesNoNo?
MonetDBYesYesYesYesYesYesYesYesYesYesYesNo
MySQLYes8+8+YesYesYesNoYes8+8+NoNo
OpenLink VirtuosoYesYesYesYesYesYes?Yes??Yes?
OracleYesYesYes, via MINUSYesYesYesYesYesYes 1YesYesYes
Oracle RdbYesYesYesYesYesYesYesYes????
Actian Zen (PSQL)YesNoNoYesYes??YesNoNoNo?
Polyhedra DBMSYesYesYesYesYesNoNoYesNoNoNo?
PostgreSQLYesYesYesYesYesYesYesYesYesYesYesNo
SAP HANA????????????
solidDBYesYesYesYesYesYesYesYesYesNoNo?
SQL AnywhereYesYesYesYesYesYesYesYesYesYesYes?
SQLiteYesYesYesYes3.43.0+YesNoYes3.8.3+3.25+NoNo
SQream DBALL onlyNoNoYesYesYesYesNoYesYesNo?
TeradataYesYesYesYesYesYesYesYesYesYesYes?
UniVerseYesYesYesYesYesYesYesNoNoNo??
UnionIntersectExceptInner joinsOuter joinsInner selectsMerge joinsBlobs and clobsCommon table expressionsWindowing functionsParallel querySystem-versioned tables
  • Note (1): Recursive CTEs introduced in 11gR2 supersedes similar construct called CONNECT BY.

Data types

Type systemIntegerFloating pointDecimalStringBinaryDate/TimeBooleanOther
4th DimensionStaticUUID (16-bit), SMALLINT (16-bit), INT (32-bit), BIGINT (64-bit), NUMERIC (64-bit)REAL, FLOATREAL, FLOATCLOB, TEXT, VARCHARBIT, BIT VARYING, BLOBDURATION, INTERVAL, TIMESTAMPBOOLEANPICTURE
AltibaseStaticSMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)REAL (32-bit), DOUBLE (64-bit)DECIMAL, NUMERIC, NUMBER, FLOATCHAR, VARCHAR, NCHAR, NVARCHAR, CLOBBLOB, BYTE, NIBBLE, BIT, VARBITDATEGEOMETRY
ClustrixDBStaticTINYINT (8-bit), SMALLINT (16-bit), MEDIUMINT (24-bit), INT (32-bit), BIGINT (64-bit)FLOAT (32-bit), DOUBLEDECIMALCHAR, BINARY, VARCHAR, VARBINARY, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXTTINYBLOB, BLOB, MEDIUMBLOB, LONGBLOBDATETIME, DATE, TIMESTAMP, YEARBIT(1), BOOLEANENUM, SET,
CUBRIDStaticSMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)FLOAT, REAL(32-bit), DOUBLE(64-bit)DECIMAL, NUMERICCHAR, VARCHAR, NCHAR, NVARCHAR, CLOBBLOBDATE, DATETIME, TIME, TIMESTAMPBITMONETARY, BIT VARYING, SET, MULTISET, SEQUENCE, ENUM
IBM Db2?SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)DECFLOAT, REAL, DOUBLEDECIMALCLOB, CHAR, VARCHARBINARY, VARBINARY, BLOBDATE, TIME, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITHOUT TIME ZONEBOOLEANXML, GRAPHIC, VARGRAPHIC, DBCLOB, ROWID
Empress Embedded DatabaseStaticTINYINT, SQL_TINYINT, or INTEGER8; SMALLINT, SQL_SMALLINT, or INTEGER16; INTEGER, INT, SQL_INTEGER, or INTEGER32; BIGINT, SQL_BIGINT, or INTEGER64REAL, SQL_REAL, or FLOAT32; DOUBLE PRECISION, SQL_DOUBLE, or FLOAT64; FLOAT, or SQL_FLOAT; EFLOATDECIMAL, DEC, NUMERIC, SQL_DECIMAL, or SQL_NUMERIC; DOLLARCHARACTER, ECHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING, NLSCHARACTER, CHARACTER LARGE OBJECT, TEXT, NATIONAL CHARACTER LARGE OBJECT, NLSTEXTBINARY LARGE OBJECT or BLOB; BULKDATE, EDATE, TIME, ETIME, EPOCH_TIME, TIMESTAMP, MICROTIMESTAMPBOOLEANSEQUENCE 32, SEQUENCE
EXASolutionStaticTINYINT, SMALLINT, INTEGER, BIGINT,REAL, FLOAT, DOUBLEDECIMAL, DEC, NUMERIC, NUMBERCHAR, NCHAR, VARCHAR, VARCHAR2, NVARCHAR, NVARCHAR2, CLOB, NCLOBN/ADATE, TIMESTAMP, INTERVALBOOLEAN, BOOLGEOMETRY
FileMakerStaticNot SupportedNot SupportedNUMBERTEXTCONTAINERTIMESTAMPNot Supported
Firebird?INT128, INT64, INTEGER, SMALLINTDOUBLE, FLOATDECIMAL, NUMERIC, DECIMAL(38, 4), DECIMAL(10, 4)BLOB, CHAR, CHAR(x) CHARACTER SET UNICODE_FSS, VARCHAR(x) CHARACTER SET UNICODE_FSS, VARCHARBLOB SUB_TYPE TEXT, BLOBDATE, TIME, TIMESTAMP (without time zone and with time zone)BOOLEANTIMESTAMP, TIMESTAMP WITH TIME ZONE, CHAR(38), User defined types (Domains)
Type systemIntegerFloating pointDecimalStringBinaryDate/TimeBooleanOther
HSQLDBStaticTINYINT (8-bit), SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)DOUBLE (64-bit)DECIMAL, NUMERICCHAR, VARCHAR, LONGVARCHAR, CLOBBINARY, VARBINARY, LONGVARBINARY, BLOBDATE, TIME, TIMESTAMP, INTERVALBOOLEANOTHER (object), BIT, BIT VARYING, ARRAY
Informix Dynamic ServerStatic + UDTSMALLINT (16-bit), INT (32-bit), INT8 (64-bit proprietary), BIGINT (64-bit)SMALLFLOAT (32-bit), FLOAT (64-bit)DECIMAL (32 decimal digits float/fixed, range 10130 to +10125), MONEYCHAR, VARCHAR, NCHAR, NVARCHAR, LVARCHAR, CLOB, TEXT, LONGLVARCHARTEXT, BYTE, BLOB, CLOBDATE, DATETIME, INTERVALBOOLEANSET, LIST, MULTISET, ROW, TIMESERIES, SPATIAL, GEODETIC, NODE, JSON, BSON, USER DEFINED TYPES
IngresStaticTINYINT (8-bit), SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)FLOAT4 (32-bit), FLOAT (64-bit)DECIMALC, CHAR, VARCHAR, LONG VARCHAR, NCHAR, NVARCHAR, LONG NVARCHAR, TEXTBYTE, VARBYTE, LONG VARBYTE (BLOB)DATE, ANSIDATE, INGRESDATE, TIME, TIMESTAMP, INTERVALN/AMONEY, OBJECT_KEY, TABLE_KEY, USER-DEFINED DATA TYPES (via OME)
Linter SQL RDBMSStatic + Dynamic (in stored procedures)SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)REAL(32-bit), DOUBLE(64-bit)DECIMAL, NUMERICCHAR, VARCHAR, NCHAR, NVARCHAR, BLOBBYTE, VARBYTE, BLOBDATEBOOLEANGEOMETRY, EXTFILE
MariaDBStaticTINYINT (8-bit), SMALLINT (16-bit), MEDIUMINT (24-bit), INT (32-bit), BIGINT (64-bit)FLOAT (32-bit), DOUBLE (aka REAL) (64-bit)DECIMALCHAR, BINARY, VARCHAR, VARBINARY, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXTTINYBLOB, BLOB, MEDIUMBLOB, LONGBLOBDATETIME, DATE, TIMESTAMP, YEARBIT(1), BOOLEAN (aka BOOL) = synonym for TINYINTENUM, SET, GIS data types (Geometry, Point, Curve, LineString, Surface, Polygon, GeometryCollection, MultiPoint, MultiCurve, MultiLineString, MultiSurface, MultiPolygon)
Microsoft SQL ServerStaticTINYINT, SMALLINT, INT, BIGINTFLOAT, REALNUMERIC, DECIMAL, SMALLMONEY, MONEYCHAR, VARCHAR, TEXT, NCHAR, NVARCHAR, NTEXTBINARY, VARBINARY, IMAGE, FILESTREAM, FILETABLEDATE, DATETIMEOFFSET, DATETIME2, SMALLDATETIME, DATETIME, TIMEBITCURSOR, TIMESTAMP, HIERARCHYID, UNIQUEIDENTIFIER, SQL_VARIANT, XML, TABLE, Geometry, Geography, Custom .NET datatypes
Microsoft SQL Server Compact (Embedded Database)StaticTINYINT, SMALLINT, INT, BIGINTFLOAT, REALNUMERIC, DECIMAL, MONEYNCHAR, NVARCHAR, NTEXTBINARY, VARBINARY, IMAGEDATETIMEBITTIMESTAMP, ROWVERSION, UNIQUEIDENTIFIER, IDENTITY, ROWGUIDCOL
Mimer SQLStaticSMALLINT, INT, BIGINT, INTEGER(n)FLOAT, REAL, DOUBLE, FLOAT(n)NUMERIC, DECIMALCHAR, VARCHAR, NCHAR, NVARCHAR, CLOB, NCLOBBINARY, VARBINARY, BLOBDATE, TIME, TIMESTAMP, INTERVALBOOLEANDOMAINS, USER-DEFINED TYPES (including the pre-defined spatial data types location, latitude, longitude and coordinate, and UUID)
MonetDBStatic, extensibleTINYINT, SMALLINT, INT, INTEGER, BIGINT, HUGEINT, SERIAL, BIGSERIALFLOAT, FLOAT(n), REAL, DOUBLE, DOUBLE PRECISIONDECIMAL, NUMERICCHAR, CHAR(n), VARCHAR, VARCHAR(n), CLOB, CLOB(n), TEXT, STRINGBLOB, BLOB(n)DATE, TIME, TIME WITH TIME ZONE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, INTERVAL YEAR, INTERVAL MONTH, INTERVAL DAY, INTERVAL HOUR, INTERVAL MINUTE, INTERVAL SECONDBOOLEANJSON, JSON(n), URL, URL(n), INET, UUID, GIS data types (Geometry, Point, Curve, LineString, Surface, Polygon, GeometryCollection, MultiPoint, MultiCurve, MultiLineString, MultiSurface, MultiPolygon), User Defined Types
MySQLStaticTINYINT (8-bit), SMALLINT (16-bit), MEDIUMINT (24-bit), INT (32-bit), BIGINT (64-bit)FLOAT (32-bit), DOUBLE (aka REAL) (64-bit)DECIMALCHAR, BINARY, VARCHAR, VARBINARY, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXTTINYBLOB, BLOB, MEDIUMBLOB, LONGBLOBDATETIME, DATE, TIMESTAMP, YEARBIT(1), BOOLEAN (aka BOOL) = synonym for TINYINTENUM, SET, GIS data types (Geometry, Point, Curve, LineString, Surface, Polygon, GeometryCollection, MultiPoint, MultiCurve, MultiLineString, MultiSurface, MultiPolygon)
OpenLink VirtuosoStatic + DynamicINT, INTEGER, SMALLINTREAL, DOUBLE PRECISION, FLOAT, FLOAT(n)DECIMAL, DECIMAL(n), DECIMAL(m, n), NUMERIC, NUMERIC(n), NUMERIC(m, n)CHARACTER, CHAR(n), VARCHAR, VARCHAR(n), NVARCHAR, NVARCHAR(n)BLOBTIMESTAMP, DATETIME, TIME, DATEN/AANY, REFERENCE (IRI, URI), UDT (User Defined Type), GEOMETRY (BOX, BOX2D, BOX3D, BOXM, BOXZ, BOXZM, CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, EMPTY, GEOMETRYCOLLECTION, GEOMETRYCOLLECTIONM, GEOMETRYCOLLECTIONZ, GEOMETRYCOLLECTIONZM, LINESTRING, LINESTRINGM, LINESTRINGZ, LINESTRINGZM, MULTICURVE, MULTILINESTRING, MULTILINESTRINGM, MULTILINESTRINGZ, MULTILINESTRINGZM, MULTIPOINT, MULTIPOINTM, MULTIPOINTZ, MULTIPOINTZM, MULTIPOLYGON, MULTIPOLYGONM, MULTIPOLYGONZ, MULTIPOLYGONZM, POINT, POINTM, POINTZ, POINTZM, POLYGON, POLYGONM, POLYGONZ, POLYGONZM, POLYLINE, POLYLINEZ, RING, RINGM, RINGZ, RINGZM)
Type systemIntegerFloating pointDecimalStringBinaryDate/TimeBooleanOther
OracleStatic + Dynamic (through ANYDATA)NUMBERBINARY_FLOAT, BINARY_DOUBLENUMBERCHAR, VARCHAR2, CLOB, NCLOB, NVARCHAR2, NCHAR, LONG (deprecated)BLOB, RAW, LONG RAW (deprecated), BFILEDATE, TIMESTAMP (with/without TIME ZONE), INTERVALN/ASPATIAL, IMAGE, AUDIO, VIDEO, DICOM, XMLType, UDT, JSON
Actian Zen (PSQL)StaticBIGINT, INTEGER, SMALLINT, TINYINT, UBIGINT, UINTEGER, USMALLINT, UTINYINTBFLOAT4, BFLOAT8, DOUBLE, FLOATDECIMAL, NUMERIC, NUMERICSA, NUMERICSLB, NUMERICSLS, NUMERICSTB, NUMERICSTSCHAR, LONGVARCHAR, VARCHARBINARY, LONGVARBINARY, VARBINARYDATE, DATETIME, TIMEBITCURRENCY, IDENTITY, SMALLIDENTITY, TIMESTAMP, UNIQUEIDENTIFIER
PolyhedraStaticINTEGER8 (8-bit), INTEGER(16-bit), INTEGER (32-bit), INTEGER64 (64-bit)FLOAT32 (32-bit), FLOAT (aka REAL; 64-bit)N/AVARCHAR, LARGE VARCHAR (aka CHARACTER LARGE OBJECT)LARGE BINARY (aka BINARY LARGE OBJECT)DATETIMEBOOLEANN/A
PostgreSQLStaticSMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)REAL (32-bit), DOUBLE PRECISION (64-bit)DECIMAL, NUMERICCHAR, VARCHAR, TEXTBYTEADATE, TIME (with/without TIME ZONE), TIMESTAMP (with/without TIME ZONE), INTERVALBOOLEANENUM, POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE, CIDR, INET, MACADDR, BIT, UUID, XML, JSON, JSONB, arrays, composites, ranges, custom
SAP HANAStaticTINYINT, SMALLINT, INTEGER, BIGINTSMALLDECIMAL, REAL, DOUBLE, FLOAT, FLOAT(n)DECIMALVARCHAR, NVARCHAR, ALPHANUM, SHORTTEXTVARBINARY, BINTEXT, BLOBDATE, TIME, SECONDDATE, TIMESTAMPBOOLEANCLOB, NCLOB, TEXT, ARRAY, ST_GEOMETRY, ST_POINT, ST_MULTIPOINT, ST_LINESTRING, ST_MULTILINESTRING, ST_POLYGON, ST_MULTIPOLYGON, ST_GEOMETRYCOLLECTION, ST_CIRCULARSTRING
solidDBStaticTINYINT (8-bit), SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)REAL (32-bit), DOUBLE (64-bit), FLOAT (64-bit)DECIMAL, NUMERIC (51 digits)CHAR, VARCHAR, LONG VARCHAR, WCHAR, WVARCHAR, LONG WVARCHARBINARY, VARBINARY, LONG VARBINARYDATE, TIME, TIMESTAMP
SQLiteDynamicINTEGER (64-bit)REAL (aka FLOAT, DOUBLE) (64-bit)N/ATEXT (aka CHAR, CLOB)BLOBN/AN/AN/A
SQream DBStaticTINYINT (8-bit), SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)REAL (32-bit), DOUBLE (aka FLOAT) (64-bit)N/ACHAR, VARCHAR, NVARCHARN/ADATE, DATETIME (aka TIMESTAMP)BOOLN/A
Type systemIntegerFloating pointDecimalStringBinaryDate/TimeBooleanOther
TeradataStaticBYTEINT (8-bit), SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)FLOAT (64-bit)DECIMAL, NUMERIC (38 digits)CHAR, VARCHAR, CLOBBYTE, VARBYTE, BLOBDATE, TIME, TIMESTAMP (w/wo TIME ZONE)PERIOD, INTERVAL, GEOMETRY, XML, JSON, UDT (User Defined Type)
UniDataDynamicN/AN/AN/AN/AN/AN/AN/AN/A
UniVerseDynamicN/AN/AN/AN/AN/AN/AN/AN/A
Type systemIntegerFloating pointDecimalStringBinaryDate/TimeBooleanOther

Other objects

Information about what other objects are supported natively.

Data domainCursorTriggerFunction1Procedure1External routine1
4th DimensionYesNoYesYesYesYes
ADABAS?Yes?Yes?Yes?Yes
Adaptive Server EnterpriseYesYesYesYesYesYes
Advantage Database ServerYesYesYesYesYesYes
AltibaseYesYesYesYesYesYes
Apache DerbyNoYesYesYes2Yes2Yes2
ClustrixDBNoYesNoYesYesYes
CUBRIDYesYesYesYesYes2Yes
Empress Embedded DatabaseYes via RANGE CHECKYesYesYesYesYes
EXASolutionYesNoNoYesYesYes
IBM Db2Yes via CHECK CONSTRAINTYesYesYesYesYes
FirebirdYesYesYesYesYesYes
HSQLDBYesNoYesYesYesYes
H2YesNoYes2Yes2Yes2Yes
Informix Dynamic ServerYes via CHECKYesYesYesYesYes 5
IngresYesYesYesYesYesYes
InterBaseYesYesYesYesYesYes
Linter SQL RDBMSNoYesYesYesYesNo
LucidDBNoYesNoYes2Yes2Yes2
MariaDBYesYesYesYesYesYes
MaxDBYesYesYesYesYes?
Microsoft Access (JET)YesNoNoNoYes, But single DML/DDL OperationYes
Microsoft Visual FoxproNoYesYesYesYesYes
Microsoft SQL ServerYesYesYesYesYesYes
Microsoft SQL Server Compact (Embedded Database)NoYesNoNoNoNo
Mimer SQLYesYesYesYesYesNo
MonetDBNoNoYesYesYesYes
MySQLNo 3YesYesYesYesYes
OracleYesYesYesYesYesYes
Oracle RdbYesYesYesYesYesYes
OpenLink VirtuosoYesYesYesYesYesYes
Actian Zen (PSQL)YesYesYesYesYesNo
Polyhedra DBMSNoNoYesYesYesYes
PostgreSQLYesYesYesYesYesYes
SAP HANA??????
solidDBYesYesYesYesYesYes
SQL AnywhereYesYesYesYesYesYes
SQLiteNoNoYesNoNoYes
TeradataNoYesYesYesYesYes
UniDataNoNoYesYesYesYes
UniVerseNoNoYesYesYesYes
Data domainCursorTriggerFunction1Procedure1External routine1
  • Note (1): Both function and procedure refer to internal routines written in SQL and/or procedural language like PL/SQL. External routine refers to the one written in the host languages, such as C, Java, Cobol, etc. "Stored procedure" is a commonly used term for these routine types. However, its definition varies between different database vendors.
  • Note (2): In Derby, H2, LucidDB, and CUBRID, users code functions and procedures in Java.
  • Note (3): ENUM datatype exists. CHECK clause enforced as of 8.0.16.
  • Note (5): Informix supports external functions written in Java, C, & C++.

Partitioning

Information about what partitioning methods are supported natively.

RangeHashComposite (Range+Hash)ListExpressionRound Robin
4th Dimension??????
ADABAS??????
Adaptive Server EnterpriseYesYesNoYes??
Advantage Database ServerNoNoNoNo??
AltibaseYesYesNoYes??
Apache DerbyNoNoNoNo??
ClustrixDBYesNoNoNoNo?
CUBRIDYesYesNoYes??
IBM Db2YesYesYesYesYes?
Empress Embedded DatabaseNoNoNoNo??
EXASolutionNoYesNoNoNo?
FirebirdNoNoNoNo??
HSQLDBNoNoNoNo??
H2NoNoNoNo??
Informix Dynamic ServerYesYesYesYesYesYes
IngresYesYesYesYes??
InterBaseNoNoNoNo??
Linter SQL RDBMSNoNoNoNoNo?
MariaDBYesYesYesYes??
MaxDBNoNoNoNo??
Microsoft Access (JET)NoNoNoNo??
Microsoft Visual FoxproNoNoNoNo??
Microsoft SQL ServerYesvia computed columnvia computed columnYesvia computed column?
Microsoft SQL Server Compact (Embedded Database)NoNoNoNo??
Mimer SQLNoNoNoNoNo?
MonetDBYesNoNoNoYes?
MySQLYesYesYesYes??
OracleYesYesYesYesvia Virtual Columns?
Oracle RdbYesYes????
OpenLink VirtuosoYesYesYesYesYes?
Actian Zen (PSQL)NoNoNoNoNo?
Polyhedra DBMSNoNoNoNoNo?
PostgreSQLYesYesYesYesYes?
SAP HANAYesYesYesYesYes?
solidDBYesNoNoNo??
SQL AnywhereNoNoNoNo??
SQLiteNoNoNoNo??
TeradataYesYesYesYes??
UniVerseYesYesYesYes??
RangeHashComposite (Range+Hash)ListExpressionRound Robin

Access control

Information about access control functionalities.

Native network encryption1Brute-force protectionEnterprise directory compatibilityPassword complexity rules2Patch access3Run unprivileged4AuditResource limitSeparation of duties (RBAC)5Security CertificationAttribute-based access control (ABAC)
4DYes (with SSL)?Yes?YesYes?????
Adaptive Server EnterpriseYes (optional; to pay)YesYes (optional ?)YesPartial (need to register; depend on which product)YesYesYesYesYes (EAL4+ 1)?
Advantage Database ServerYesNoNoNoYesYesNoNoYes??
CUBRIDYes (with SSL)?NoNoYesYesYesYesYes??
IBM Db2Yes?Yes (LDAP, Kerberos...)Yes?YesYesYesYesYes (EAL4+6)?
Empress Embedded Database??NoNoYesYesYesNoYesNo?
EXASolutionNoYesYes (LDAP)YesYesYesYesYesYesNo?
FirebirdYesYesYes (Windows trusted authenification)Yes (by custom plugin)Yes (no security page)YesYesYesNo7??
HSQLDBYesNoYesYesYesYesNoNoYesNo?
H2YesYes?No?Yes?YesYesNo?
Informix Dynamic ServerYes?Yes10?10YesYesYesYesYes?Yes
Linter SQL RDBMSYes (with SSL)YesYesYes (length only)YesYesYesYesYesYesYes
MariaDBYes (SSL)NoYes (with 5.2, but not on Windows servers)YesYesYes???8No?
Microsoft SQL ServerYes?Yes (Microsoft Active Directory)YesYesYesYes (From 2008)YesYesYes (EAL4+11)?
Microsoft SQL Server Compact (Embedded Database)No (not relevant, only file permissions)No (not relevant)No (not relevant)No (not relevant)YesYes (file access)YesYesNo??
Mimer SQLYes???YesYes (depending on OS)Yes?Yes?Yes
MySQLYes (SSL with 4.0)NoYes (with 5.5, but only in commercial edition)NoPartial (no security page)Yes???8Yes?
OpenLink VirtuosoYesYesYesYes (optional)Yes (optional)YesYes (optional)Yes (optional)YesNoYes (optional)
OracleYesYesYesYes?YesYesYesYesYes (EAL21)?
Actian Zen (PSQL)Yes?NoNoYesYesYes 12NoNoNo?
Polyhedra DBMSYes (with SSL. Optional)NoNoNoNoYesYes 13YesYes 13No?
PostgreSQLYesYesYes (LDAP, Kerberos...9)Yes (with passwordcheck module)YesYesYes (with pgaudit extension)YesYesYes (EAL2+1)?
SAP HANA???????????
solidDBNoNoYesNoNoYesYesNoNoNoNo
SQL AnywhereYes?Yes (Kerberos)Yes?YesYesNoYesYes (EAL2+1 as Adaptive Server Anywhere)?
SQLiteNo (not relevant, only file permissions)No (not relevant)No (not relevant)No (not relevant)Partial (no security page)Yes (file access)YesYesNoNo?
TeradataYesNoYes (LDAP, Kerberos...)Yes?YesYesYesYesYesYes
Native network encryption1Brute-force protectionEnterprise directory compatibilityPassword complexity rules2Patch access3Run unprivileged4AuditResource limitSeparation of duties (RBAC)5Security CertificationAttribute-based access control (ABAC)
  • Note (1): Network traffic could be transmitted in a secure way (not clear-text, in general SSL encryption). Precise if option is default, included option or an extra modules to buy.
  • Note (2): Options are present to set a minimum size for password, respect complexity like presence of numbers or special characters.
  • Note (3): How do you get security updates? Is it free access, do you need a login or to pay? Is there easy access through a Web/FTP portal or RSS feed or only through offline access (mail CD-ROM, phone).
  • Note (4): Does database process run as root/administrator or unprivileged user? What is default configuration?
  • Note (5): Is there a separate user to manage special operation like backup (only dump/restore permissions), security officer (audit), administrator (add user/create database), etc.? Is it default or optional?
  • Note (6): Common Criteria certified product list.
  • Note (7): FirebirdSQL seems to only have SYSDBA user and DB owner. There are no separate roles for backup operator and security administrator.
  • Note (8): User can define a dedicated backup user but nothing particular in default install.
  • Note (9): Authentication methods.
  • Note (10): Informix Dynamic Server supports PAM and other configurable authentication. By default uses OS authentication.
  • Note (11): Authentication methods.
  • Note (12): With the use of Pervasive AuditMaster.
  • Note (13): User-based security is optional in Polyhedra, but when enabled can be enhanced to a role-based model with auditing.

Databases vs schemas (terminology)

The SQL specification defines what an "SQL schema" is; however, databases implement it differently. To compound this confusion the functionality can overlap with that of a parent database. An SQL schema is simply a namespace within a database; things within this namespace are addressed using the member operator dot ".". This seems to be a universal among all of the implementations.

A true fully (database, schema, and table) qualified query is exemplified as such: SELECT * FROM database.schema.table

Both a schema and a database can be used to isolate one table, "foo", from another like-named table "foo". The following is pseudo code:

  • SELECT * FROM database1.foo vs. SELECT * FROM database2.foo (no explicit schema between database and table)
  • SELECT * FROM [database1.]default.foo vs. SELECT * FROM [database1.]alternate.foo (no explicit database prefix)

The problem that arises is that former MySQL users will create multiple databases for one project. In this context, MySQL databases are analogous in function to PostgreSQL-schemas, insomuch as PostgreSQL deliberately lacks off-the-shelf cross-database functionality (preferring multi-tenancy) that MySQL has. Conversely, PostgreSQL has applied more of the specification implementing cross-table, cross-schema, and then left room for future cross-database functionality.

MySQL aliases schema with database behind the scenes, such that CREATE SCHEMA and CREATE DATABASE are analogs. It can therefore be said that MySQL has implemented cross-database functionality, skipped schema functionality entirely, and provided similar functionality into their implementation of a database. In summary, PostgreSQL fully supports schemas and multi-tenancy by strictly separating databases from each other and thus lacks some functionality MySQL has with databases, while MySQL does not even attempt to support standard schemas.

Oracle has its own spin where creating a user is synonymous with creating a schema. Thus a database administrator can create a user called PROJECT and then create a table PROJECT.TABLE. Users can exist without schema objects, but an object is always associated with an owner (though that owner may not have privileges to connect to the database). With the 'shared-everything' Oracle RAC architecture, the same database can be opened by multiple servers concurrently. This is independent of replication, which can also be used, whereby the data is copied for use by different servers. In the Oracle implementation, a 'database' is a set of files which contains the data while the 'instance' is a set of processes (and memory) through which a database is accessed.

Informix supports multiple databases in a server instance like MySQL. It supports the CREATE SCHEMA syntax as a way to group DDL statements into a single unit creating all objects created as a part of the schema as a single owner. Informix supports a database mode called ANSI mode which supports creating objects with the same name but owned by different users.

PostgreSQL and some other databases have support for foreign schemas, which is the ability to import schemas from other servers as defined in ISO/IEC 9075-9 (published as part of SQL:2008). This appears like any other schema in the database according to the SQL specification while accessing data stored either in a different database or a different server instance. The import can be made either as an entire foreign schema or merely certain tables belonging to that foreign schema. While support for ISO/IEC 9075-9 bridges the gap between the two competing philosophies surrounding schemas, MySQL and Informix maintain an implicit association between databases while ISO/IEC 9075-9 requires that any such linkages be explicit in nature.

See also

External links

  • . Includes Oracle, Db2, Microsoft SQL Server, MySQL and PostgreSQL. (8 June 2007)