Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Comparison of Relational Database Management Systems

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 47

Comparison of relational database

management systems
From Wikipedia, the free encyclopedia
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.

Contents
[hide]

 1 General information
 2 Operating system support
 3 Fundamental features
 4 Limits
 5 Tables and views
 6 Indices
 7 Database capabilities
 8 Data types
 9 Other objects
 10 Partitioning
 11 Access control
 12 Databases vs schemas (terminology)
 13 See also
 14 References
 15 External links

General information[edit]

First
Latest Latest
public
Maintainer stable release License
release
version date
date

2014-07-
4D (4th Dimension) 4D S.A.S.[1] 1984 v14.2 Proprietary
10

ADABAS Software AG 1970 8.1 2013-06 Proprietary

Adaptive Server Enterprise Sybase 1987 16.0 Proprietary

Advantage Database Server


Sybase 1992 11.1 2012 Proprietary
(ADS)
First
Latest Latest
public
Maintainer stable release License
release
version date
date

2014-04-
Altibase Altibase Corp. 2000 6.1.3 Proprietary
18

2014-04-
Apache Derby Apache 2004 10.10.2.0[2] Apache License
15

2013-10-
Clustrix Clustrix 2010 v5.2 Proprietary
16

NHN 2013-10-
CUBRID 2008-11 9.2.0 GPL v2 or later
Corporation[3] 24

Early
Datacom CA, Inc. 14[5] 2012[6] Proprietary
70s[4]

2013-04-
DB2 IBM 1983 10.5 Proprietary
23

2012-05- GPL v2 and v3, with


Drizzle Brian Aker 2008 7.1.36
23 some BSDcomponents

Empress
Empress Embedded Database 1979 10.20 2010-03 Proprietary
Software Inc[7]

2014-04-
EXASolution EXASOL AG 2004[8] 4.2.8 Proprietary
22

Firebird 2000-07- 2013-03-


Firebird 2.5.2 IPL[10] and IDPL[11]
project[9] 25 24

HSQL
2013-10-
HSQLDB Development 2001 2.3.1[12] BSD
08
Group
First
Latest Latest
public
Maintainer stable release License
release
version date
date

2013-03- EPL and


H2 H2 Software 2005 1.3.171
17 modified MPL

2014-03-
Informix Dynamic Server IBM 1980 12.10.xC3 Proprietary
14

Ingres
2010-10-
Ingres Ingres Corp. 1974 Database GPL and Proprietary
12
10

InterBase 2010-09-
InterBase Embarcadero 1984 Proprietary
XE 21

2013-08-
Linter SQL RDBMS RELEX Group 1990 6.x Proprietary
26

The Eigenbase
LucidDB 2007-01 0.9.3 GPL v2
Project[13]

MariaDB 2010-02- 2014-09- GPL v2 and LGPL for


MariaDB 10.0.14[14]
Community 01 26 client-libraries

MaxDB SAP AG 2003-05 7.9.0.8 2014 Proprietary

2012-10-
Microsoft Access (JET) Microsoft 1992 15 (2013) Proprietary
02

2007-10-
Microsoft Visual Foxpro Microsoft 1984[15] 9 (2005) Proprietary
11[15]

2014-03-
Microsoft SQL Server Microsoft 1989 2014 (12) Proprietary
18
First
Latest Latest
public
Maintainer stable release License
release
version date
date

Microsoft SQL Server Compact 2011


Microsoft 2000 Proprietary
(Embedded Database) (v4.0)

The MonetDB MonetDB License


MonetDB Developer 2004 11.17.13 2014-03 v1.1 (based on
Team the MPL1.1)[16]

Hughes
mSQL 1994 3.9[17] 2011-02 Proprietary
Technologies

Oracle 2014-09-
MySQL 1995-11 5.6.21 GPL v2 or Proprietary
Corporation 23

MemSQL MemSQL 2012-06 1.8 (2012) 2012-12 Proprietary

Nexus
Database 2010-05-
Nexusdb 2003-09 3.04 Proprietary
Systems Pty 08
Ltd[18]

Hewlett- SQL/MX
HP NonStop SQL 1987 Proprietary
Packard 2.3

4.3.1
TigerLogic
Omnis Studio 1982-07 Release 2008-05 Proprietary
Inc[19]
1no

OpenBase
OpenBase SQL 1991 11.0.0 Proprietary
International[20]

Progress
OpenEdge Software 1984 11.0 Proprietary
Corporation
First
Latest Latest
public
Maintainer stable release License
release
version date
date

OpenLink 2013-08-
OpenLink Virtuoso 1998 7.x GPL v2 or Proprietary
Software[21] 05

Oracle 12c 2013-06-


Oracle 1979-11 Proprietary
Corporation Release 1 25

Oracle 2014-02-
Oracle Rdb 1984 7.3.1.1.1 Proprietary
Corporation 24[22]

Corel
Paradox 1985 11 2003 Proprietary
Corporation[23]

Pervasive
Pervasive PSQL 1982 v11 SP3 2013 Proprietary
Software

Polyhedra DBMS ENEA AB 1993 8.9 2014-09 Proprietary

PostgreSQL
PostgreSQL Licence
Global 2014-03-
PostgreSQL 1989-06 9.3.4[25] (a liberal Open Source
Development 20
license)[26]
Group[24]

R:BASE
R:Base 1982 9.5 Proprietary
Technologies[27]

2012-06-
RDM Raima Inc.[28] 1984 11.0 Proprietary
29

2012-10-
RDM Server Raima Inc.[29] 1993 8.4 Proprietary
31

SAP HANA SAP AG [30] 2010 1.0 Proprietary


First
Latest Latest
public
Maintainer stable release License
release
version date
date

2008-03-
ScimoreDB Scimore[31] 2005 3.0 Proprietary
03

2005-04-
SmallSQL SmallSQL 0.20 2008-12 LGPL
16

UNICOM 2014-04-
solidDB 1992 7.0.0.10 Proprietary
Global 29

2010-07-
SQL Anywhere Sybase 1992 12.0 Proprietary
09

SQLBase Unify Corp.[32] 1982 11.5 2008-11 Proprietary

D. Richard 2000-08- 2013-09-


SQLite 3.8.0.2 Public domain
Hipp 17 03 [33]

Scientific
Superbase Superbase 1984 Proprietary
(2004)

Teradata Teradata 1984 14.10 Proprietary

Rocket
UniData 1988 7.2.12 2011-10 Proprietary
Software

Operating system support[edit]


The operating systems that the RDBMSes can run on.

OS
Windows Linux BSD UNIX AmigaOS
X

4th Dimension Yes Yes No No No No


OS
Windows Linux BSD UNIX AmigaOS
X

ADABAS Yes No Yes No Yes No

Adaptive Server Enterprise Yes No Yes Yes Yes No

Advantage Database Server Yes No Yes No No No

Altibase Yes No Yes No Yes No

Apache Derby Yes Yes Yes Yes Yes No

Clustrix No No Yes No Yes No

CUBRID Yes Partial Yes No No No

Drizzle No Yes Yes Yes Yes No

Yes
DB2 Yes (Express Yes No Yes No
C)

Empress Embedded Database Yes Yes Yes Yes Yes No

EXASolution No No Yes No No No

Firebird Yes Yes Yes Yes Yes No

HSQLDB Yes Yes Yes Yes Yes No

H2 Yes Yes Yes Yes Yes No


OS
Windows Linux BSD UNIX AmigaOS
X

FileMaker Yes Yes No No No No

Informix Dynamic Server Yes Yes Yes Yes Yes No

Ingres Yes Yes Yes Yes Yes No

Yes
InterBase Yes Yes Yes No No
(Solaris)

Linter SQL RDBMS Yes Yes Yes Yes Yes No

LucidDB Yes Yes Yes No No No

MariaDB Yes Yes[34] Yes Yes Yes No

MaxDB Yes No Yes No Yes No

Microsoft Access (JET) Yes No No No No No

Microsoft Visual Foxpro Yes No No No No No

Microsoft SQL Server Yes No No No No No

Microsoft SQL Server Compact (Embedded


Yes No No No No No
Database)

MonetDB Yes Yes Yes Yes Yes No

MySQL Yes Yes Yes Yes Yes Yes


OS
Windows Linux BSD UNIX AmigaOS
X

Omnis Studio Yes Yes Yes No No No

OpenBase SQL Yes Yes Yes Yes Yes No

OpenEdge Yes No Yes No Yes No

OpenLink Virtuoso Yes Yes Yes Yes Yes No

Oracle Yes Yes Yes No Yes No

Oracle Rdb No No No No No No

Yes
Pervasive PSQL Yes (OEM Yes No No No
only)

Polyhedra Yes No Yes No Yes No

PostgreSQL Yes Yes Yes Yes Yes No

R:Base Yes No No No No No

RDM Yes Yes Yes Yes Yes No

RDM Server Yes Yes Yes Yes Yes No

ScimoreDB Yes No No No No No

SmallSQL Yes Yes Yes Yes Yes No


OS
Windows Linux BSD UNIX AmigaOS
X

solidDB Yes No Yes No Yes No

SQL Anywhere Yes Yes Yes No Yes No

SQLBase Yes No Yes No No No

SQLite Yes Yes Yes Yes Yes Yes

Superbase Yes No No No No Yes

Teradata Yes No Yes No Yes No

UniData Yes No Yes No Yes No

UniVerse Yes No Yes No Yes No

Fundamental features[edit]
Information about what fundamental RDBMS features are implemented natively.

Referential
ACID Transactions Fine-grai
integrity

4th Dimension Yes Yes Yes

ADABAS Yes No Yes

Adaptive Server Enterprise Yes Yes Yes

Advantage Database Server Yes Yes Yes


Referential
ACID Transactions Fine-grai
integrity

Altibase Yes Yes Yes Yes (Row

Apache Derby Yes Yes Yes

Clustrix Yes Yes Yes

CUBRID Yes Yes Yes

Drizzle Yes Yes Yes

DB2 Yes Yes Yes Yes (Row

Empress Embedded Database Yes Yes Yes

EXASolution Yes Yes Yes

Firebird Yes Yes Yes

HSQLDB Yes Yes Yes

H2 Yes Yes Yes

Informix Dynamic Server Yes Yes Yes Yes (Row

Ingres Yes Yes Yes

InterBase Yes Yes Yes

Linter SQL RDBMS Yes Yes Yes


Referential
ACID Transactions Fine-grai
integrity

LucidDB Yes No No

Yes2 except
MariaDB Yes2 Partial3 Yes (Row
forDDL[38]

MaxDB Yes Yes Yes

Microsoft Access (JET) Yes Yes Yes

Microsoft Visual FoxPro No Yes Yes

Microsoft SQL Server Yes Yes Yes Yes (Row

Microsoft SQL Server Compact (Embedded Database) Yes Yes Yes

MonetDB Yes Yes Yes

Yes2 except
MySQL Yes2 Partial3 Yes (Row
forDDL[38]

OpenBase SQL Yes Yes Yes

Yes except
Oracle Yes Yes Yes (Row
forDDL[38]

Oracle Rdb Yes Yes Yes

OpenLink Virtuoso Yes Yes Yes

Pervasive PSQL Yes Yes Yes


Referential
ACID Transactions Fine-grai
integrity

Yes (optimis
Polyhedra DBMS Yes Yes Yes
cell-lev

PostgreSQL Yes Yes Yes Yes (Row

RDM Yes Yes Yes

RDM Server Yes Yes Yes

ScimoreDB Yes Yes Yes

solidDB Yes Yes Yes Yes (Row

SQL Anywhere Yes Yes Yes

SQLBase Yes Yes Yes

SQLite Yes Yes Yes No (Databas

Teradata Yes Yes Yes

UniData Yes No Yes

UniVerse Yes No Yes

Referential
ACID Transactions Fine-gr
integrity

Note (1): Currently only supports read uncommited transaction isolation. Version 1.9 adds
serializable isolation and version 2.0 will be fully ACID compliant.
Note (2): MySQL provides ACID compliance through the default InnoDB storage engine.[46][47]
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
is parsed but ignored by all storage engines."[48]
Note (4): Support for Unicode is new in version 10.0.
Note (5): MySQL provides GUI interface through MySQL Workbench.

Limits[edit]
Information about data size limits.

Max Max
Max Max Max columns per Max
table Blob/Clob
DB size row size row si
size size

200 GB 20
4th Dimension Limited ? ? 65,135
(2 GiBUnicode) (2 GiB

65,135 / (10+
Advantage Database Server Unlimited 16 EiB 65,530 B 4 GiB
AvgFieldNameLength)

2,147,483,647
Apache Derby Unlimited Unlimited Unlimited 1,012 (5,000 in views) ( VA
chars
32

64 MB on
Appliance,
Clustrix Unlimited Unlimited ? 64 MB 6
4 MB on
AWS

CUBRID 2 EB 2 EB Unlimited 6400 Unlimited 1

4 GB (longtext,
Drizzle Unlimited 64 TB 8 KB 1,000 64 K
longblob)

DB2 Unlimited 2 ZB 32,677 B 1,012 2 GB 32

Empress Embedded Database Unlimited 263-1 bytes 2 GB 32,767 2 GB 2


Max Max
Max Max Max columns per Max
table Blob/Clob
DB size row size row si
size size

EXASolution Unlimited Unlimited Unlimited 10,000 N/A 2

FileMaker 8 TB 8 TB 8 TB 256,000,000 4 GB 10^9

Depends on data types


Firebird Unlimited1 ~32 TB 65,536 B 2 GB 32
used

HSQLDB 64 TB Unlimited8 Unlimited8 Unlimited8 64 TB7 Un

H2 64 TB Unlimited8 Unlimited8 Unlimited8 64 TB7 Un

Max DB Max table Max row Max columns per Max Blob/Clob Max
size size size row size

32,765 bytes
(exclusive
Informix Dynamic Server ~128 PB ~128 PB 32,765 4 TB 3
of large
objects)

Ingres Unlimited Unlimited 256 KB 1,024 2 GB 32

Depends on data types


InterBase Unlimited1 ~32 TB 65,536 B 2 GB 32
used

64 KB (w/o
BLOBs),
Linter SQL RDBMS Unlimited 230 rows 250 4 GB 4
4 GB
(BLOB)
Max Max
Max Max Max columns per Max
table Blob/Clob
DB size row size row si
size size

MyISAM
storage
limits:
256 TB;
Innodb
4 GB (longtext,
MariaDB 10 Unlimited storage 64 KB3 4,0964 64 K
longblob)
limits:
64 TB;
Aria
storage
limits: ???

64 KB (memo
field), 1 GB 255
Microsoft Access(JET) 2 GB 2 GB 16 MB 255
("OLE Object" f
field)

Microsoft Visual Foxpro Unlimited 2 GB 65,500 B 255 2 GB 1

524,272 TB
(32 767
8,060 bytes
Microsoft SQL Server files * 524,272 TB 30,000 2 GB 2
(Unlimited)6
16 TB max
file size)

Microsoft SQL Server Compact


4 GB 4 GB 8,060 bytes 1024 2 GB
(Embedded Database)

MonetDB Unlimited Unlimited Unlimited Unlimited Unlimited Un

MyISAM
storage
limits:
256 TB; 4 GB (longtext,
MySQL 5 Unlimited 64 KB3 4,0964 64 K
Innodb longblob)
storage
limits:
64 TB
Max Max
Max Max Max columns per Max
table Blob/Clob
DB size row size row si
size size

32 TB per
instance
DB size (or
OpenLink Virtuoso (Unlimited 4 KB 200 2 GB 2
32 TB)
via elastic
cluster)

Unlimited 4 GB *
(4 GB * block size
Oracle block size (with 8 KB 1,000 128 TB 32,
per BIGFILE
tablespace) tablespace)

Max DB Max table Max row Max columns per Max Blob/Clob Max
size size size row size

4 billion
Pervasive PSQL 256 GB 2 GB 1,536 2 GB 8,00
objects

Limited by
available
4 GB (subject to 4 GB
Polyhedra RAM, 232 rows Unlimited 65,536
RAM) to
address
space

1 GB (text,
bytea)[50] - stored
250–1600 depending
PostgreSQL Unlimited 32 TB 1.6 TB inline or 4 TB 1
on type
(stored in
pg_largeobject)[51]

cha
RDM Embedded Unlimited 248-1 rows 32 KB 1,000 4 GB
varch

RDM Server Unlimited 264-1 rows 32 KB 32,768 Unlimited 3


Max Max
Max Max Max columns per Max
table Blob/Clob
DB size row size row si
size size

ScimoreDB Unlimited 16 EB 8,050 B 255 16 TB 8,

32 KB +
solidDB 256 TB 256 TB Limited by row size 4 GB 4
BLOB data

104 TB (13
files, each
Limited by Limited by
SQL Anywhere file up to 45,000 2 GB 2
file size file size
8 TB (32
KB pages))

128 TB
(231pages * Limited by Limited by
SQLite 32,767 2 GB 2
64 KB max file size file size
page size)

64 KB
wo/lobs
Teradata Unlimited Unlimited 2,048 2 GB 1
(64 GB
w/lobs)

UniVerse Unlimited Unlimited Unlimited Unlimited Unlimited Un

Max DB Max table Max row Max columns per Max Blob/Clob Max
size size size row size

Note (1): Firebird 2.x maximum database size is effectively unlimited with the largest known
database size >980 GB.[52] Firebird 1.5.x maximum database size: 32 TB.
Note (2): Limit is 1038 using DECIMAL datatype.[53]
Note (3): InnoDB is limited to 8,000 bytes (excluding VARBINARY , VARCHAR , BLOB ,
or TEXT columns).[54]
Note (4): InnoDB is limited to 1,000 columns.[54]
Note (6): Using VARCHAR (MAX) in SQL 2005 and later.[55]
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,[56] which work for timestamps between 0000-01-01 00:00:00 and 5352-11-01 10:52:47.
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.

Tables and views[edit]


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

Temporary table

4th Dimension Yes

ADABAS ?

Adaptive Server Enterprise Yes1

Advantage Database Server Yes

Altibase Yes

Apache Derby Yes

Clustrix Yes

CUBRID No

Drizzle Yes

DB2 Yes

Empress Embedded Database Yes


Temporary table

EXASolution Yes

Firebird Yes

HSQLDB Yes

H2 Yes

Informix Dynamic Server Yes

Ingres Yes

InterBase Yes

Linter SQL RDBMS Yes

LucidDB No

MariaDB Yes

MaxDB Yes

Microsoft Access (JET) No

Microsoft Visual Foxpro Yes

Microsoft SQL Server Yes

Microsoft SQL Server Compact (Embedded Database) Yes


Temporary table

MonetDB Yes

MySQL Yes

OpenBase SQL Yes

Oracle Yes

Oracle Rdb Yes

OpenLink Virtuoso Yes

Pervasive PSQL Yes

Polyhedra DBMS No

PostgreSQL Yes

RDM Embedded Yes

RDM Server Yes

solidDB Yes

SQL Anywhere Yes

ScimoreDB No

SQLite Yes
Temporary table

Teradata Yes

UniData Yes

UniVerse Yes

Note (1): Server provides tempdb, which can be used for public and private (for the session)
temp tables.[57]
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.[58]
Note (4): Materialized views can be emulated using stored procedures and triggers.[59]
Note (5): Materialized views are now standard but can be emulated in versions prior to 9.3 with
stored procedures and triggers using PL/pgSQL, PL/Perl, PL/Python, or other procedural
languages.[60]

Indices[edit]
Information about what indices (other than basic B-/B+ tree indices) are supported natively.

R-
/R+ Hash Expression Partial Reverse Bit
tree

4th Dimension ? Cluster ? ? ?

ADABAS ? ? ? ? ?

Adaptive Server Enterprise No No Yes No Yes

Advantage Database Server No No Yes No Yes

Apache Derby No No No No No

Clustrix No Yes No No No
R-
/R+ Hash Expression Partial Reverse Bit
tree

CUBRID No No Yes[62] Yes[62] Yes

Drizzle No No No No No

DB2 No ? Yes No Yes

Empress Embedded Database Yes No No Yes No

EXASolution No Yes No No No

Firebird No No Yes No Yes 1

HSQLDB No No No No No

H2 No Yes No No No

Informix Dynamic Server Yes Yes Yes Yes Yes

Ingres Yes Yes Ingres v10 No No Ing

InterBase No No No No No

Linter SQL RDBMS10 No No No No No

LucidDB No No No No No

MEMORY, PERSISTENT
MyISAM
Cluster (NDB), virtual
MariaDB tables No No
InnoDB,5 tables columns
only
only only [69]
R-
/R+ Hash Expression Partial Reverse Bit
tree

MaxDB No No No No No

Microsoft Access (JET) No No No No No

Microsoft Visual Foxpro No No Yes Yes Yes2

Non/Cluster &
Microsoft SQL Server ? Yes3 Yes4 No3
fill factor

Microsoft SQL Server Compact (Embedded


No No No No No
Database)

MonetDB No Yes No No No

MEMORY,
MyISAM
Cluster (NDB),
MySQL tables No[77] No No
InnoDB,5 tables
only
only

Oracle Yes 11 Cluster Tables Yes Yes 6 Yes

Oracle Rdb No Yes ? No No

OpenLink Virtuoso Yes Cluster Yes Yes No

Pervasive PSQL No No No No No
R-
/R+ Hash Expression Partial Reverse Bit
tree

Polyhedra DBMS No Yes No No No

PostgreSQL Yes Yes Yes Yes Yes7

RDM Embedded No Yes No Yes Yes

RDM Server No No No Yes Yes

ScimoreDB No No No No No

solidDB No No No No Yes

SQL Anywhere No No No No No

SQLite Yes[84] No No Yes[85] Yes

Teradata No Yes Yes Yes No

UniVerse Yes Yes Yes3 Yes3 Yes3

R-/R+
Hash Expression Partial Reverse B
tree

Note (1): The users need to use a function from freeAdhocUDF library or similar.[90]
Note (2): Can be implemented for most data types using expression-based indexes.
Note (3): Can be emulated by indexing a computed column[91] (doesn't easily update) or by using
an "Indexed View"[92] (proper name not just any view works[93]).
Note (4): Can be implemented by using an indexed view.[94]
Note (5): InnoDB automatically generates adaptive hash index[95] 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 (8): PostgreSQL will likely support on-disk bitmap indexes in a future version. Version 8.2
supports a related technique known as "in-memory bitmap scans".
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.

Database capabilities[edit]

Inner Outer Inner Merge


Union Intersect Except B
joins joins selects joins

4th Dimension Yes Yes Yes Yes Yes No No

ADABAS Yes ? ? ? ? ? ?

Adaptive Server Enterprise Yes ? ? Yes Yes Yes Yes

Advantage Database Server Yes No No Yes Yes Yes Yes

Yes, via
Altibase Yes Yes Yes Yes Yes Yes
MINUS

Apache Derby Yes Yes Yes Yes Yes ? ?

Clustrix Yes No No Yes Yes Yes No

CUBRID Yes Yes Yes Yes Yes Yes Yes

Drizzle Yes No No Yes Yes Yes No

DB2 Yes Yes Yes Yes Yes Yes Yes

Empress Embedded Database Yes Yes Yes Yes Yes Yes Yes

EXASolution Yes Yes Yes Yes Yes Yes Yes


Inner Outer Inner Merge
Union Intersect Except B
joins joins selects joins

Firebird Yes ? ? Yes Yes Yes Yes

HSQLDB Yes Yes Yes Yes Yes Yes Yes[98]

H2 Yes Yes Yes Yes Yes Yes No

Yes, via
Informix Dynamic Server Yes Yes Yes Yes Yes Yes
MINUS

Ingres Yes No No Yes Yes Yes Yes

InterBase Yes ? ? Yes Yes ? ?

Linter SQL RDBMS Yes Yes Yes Yes Yes Yes Yes

LucidDB Yes Yes Yes Yes Yes Yes Yes

MaxDB Yes ? ? Yes Yes Yes No

Microsoft Access (JET) Yes No No Yes Yes Yes No

Microsoft Visual Foxpro Yes ? ? Yes Yes Yes ?

Yes (2005
Yes (2005
Microsoft SQL Server Yes and Yes Yes Yes Yes
and beyond)
beyond)

Microsoft SQL Server Compact


Yes No No Yes Yes ? No
(Embedded Database)

MonetDB Yes Yes Yes Yes Yes Yes Yes


Inner Outer Inner Merge
Union Intersect Except B
joins joins selects joins

MySQL Yes No No Yes Yes Yes No

OpenBase SQL No No No Yes Yes Yes Yes

OpenLink Virtuoso Yes ? ? Yes Yes Yes ?

Yes, via
Oracle Yes Yes Yes Yes Yes Yes
MINUS

Oracle Rdb Yes Yes Yes Yes Yes Yes Yes

Pervasive PSQL Yes No No Yes Yes ? ?

Polyhedra DBMS Yes Yes Yes Yes Yes No No

PostgreSQL Yes Yes Yes Yes Yes Yes Yes

RDM Embedded No No No Yes Yes No No

RDM Server Yes No No Yes Yes Yes No

LEFT
ScimoreDB Yes ? ? Yes Yes Yes
only

SmallSQL ? ? ? ? ? ? ?

solidDB Yes Yes Yes Yes Yes Yes Yes

SQL Anywhere Yes Yes Yes Yes Yes Yes Yes


Inner Outer Inner Merge
Union Intersect Except B
joins joins selects joins

LEFT
SQLite Yes Yes Yes Yes Yes No
only

Teradata Yes Yes Yes Yes Yes Yes Yes

UniVerse Yes Yes Yes Yes Yes Yes Yes

Inner Outer Inner Merge


Union Intersect Except
joins joins selects joins

Note (1): Recursive CTEs introduced in 11gR2 supersedes similar construct called CONNECT
BY.

Data types[edit]

Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

UUID
(16-bit),
SMALL
DURATI
INT (16-
ON,
4th bit), INT CLOB, BIT, BIT BOO
REAL, REAL, INTERV
Dimen Static (32-bit), TEXT, VARYIN LEA PICTURE
FLOAT FLOAT AL,
sion BIGINT VARCHAR G, BLOB N
TIMEST
(64-bit),
AMP
NUME
RIC (64-
bit)

SMALL
CHAR, BLOB,
INT (16- REAL(3 DECIMAL,
VARCHAR, BYTE,
Altibas bit), 2-bit), NUMERIC, GEOMET
Static NCHAR, NIBBLE, DATE
e[109] INTEG DOUBL NUMBER, RY
NVARCHA BIT,
ER (32- E(64-bit) FLOAT
R, CLOB VARBIT
bit),
BIGINT
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

(64-bit)

TINYIN
T (8-
bit), CHAR,
SMALL BINARY, TINYBL
DATETI
INT (16- VARCHAR, OB, BIT(1
FLOAT ME,
bit), VARBINAR BLOB, ),
Clustri (32-bit), DATE, ENUM,
Static MEDIU DECIMAL Y, TEXT, MEDIU BOO
x[110] DOUBL TIMEST SET,
MINT TINYTEXT, MBLOB, LEA
E AMP,
(24-bit), MEDIUMTE LONGBL N
YEAR
INT (32- XT, OB
bit), LONGTEXT
BIGINT
(64-bit)

MONET
SMALL
ARY, BIT
INT (16- DATE,
FLOAT, CHAR, VARYIN
bit), DATETI
REAL(3 VARCHAR, G, SET,
CUBR INTEG DECIMAL, ME,
Static 2-bit), NCHAR, BLOB BIT MULTIS
ID[111] ER (32- NUMERIC TIME,
DOUBL NVARCHA ET,
bit), TIMEST
E(64-bit) R, CLOB SEQUEN
BIGINT AMP
CE,
(64-bit)
ENUM

DATETI
INT (32- DOUBL BINARY,
ME,
Drizzle Static bit), E (aka VARCHAR, ENUM,
[112] DECIMAL BLOB DATE,
BIGINT REAL) VARBINAR SERIAL
TIMEST
(64-bit) (64-bit) Y, TEXT,
AMP

TINYIN REAL, CHARACTE DATE,


T, SQL_RE R, EDATE,
SQL_TI AL, or DECIMAL, ECHARACT TIME,
Empre
NYINT, FLOAT3 DEC, ER, BINARY ETIME,
ss SEQUEN
or 2; NUMERIC, CHARACTE LARGE EPOCH_ BOO
Embed CE 32,
Static INTEG DOUBL SQL_DECIM R OBJECT TIME, LEA
ded SEQUEN
ER8; E AL, or VARYING, or BLOB; TIMEST N
Databa CE
SMALL PRECISI SQL_NUMER NATIONAL BULK AMP,
se
INT, ON, IC; DOLLAR CHARACTE MICROT
SQL_S SQL_DO R, IMESTA
MALLI UBLE, NATIONAL MP
NT, or or CHARACTE
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

INTEG FLOAT6 R
ER16; 4; VARYING,
INTEG FLOAT, NLSCHARA
ER, or CTER,
INT, SQL_FL CHARACTE
SQL_IN OAT; R LARGE
TEGER, EFLOAT OBJECT,
or TEXT,
INTEG NATIONAL
ER32; CHARACTE
BIGINT R LARGE
, OBJECT,
SQL_BI NLSTEXT
GINT,
or
INTEG
ER64

CHAR,
TINYIN NCHAR,
T, VARCHAR,
DATE, BOO
SMALL REAL, DECIMAL, VARCHAR2
TIMEST LEA
EXAS INT, FLOAT, DEC, , GEOMET
Static N/A AMP, N,
olution INTEG DOUBL NUMERIC, NVARCHA RY
INTERV BOO
ER, E NUMBER R,
AL L
BIGINT NVARCHA
, R2, CLOB,
NCLOB

TINYIN
T (8-
BINARY
bit),
, DATE, OTHER
SMALL
CHAR, VARBIN TIME, (object),
INT (16- BOO
HSQL DOUBL DECIMAL, VARCHAR, ARY, TIMEST BIT, BIT
Static bit), LEA
DB[113] E (64-bit) NUMERIC LONGVARC LONGV AMP, VARYIN
INTEG N
HAR, CLOB ARBINA INTERV G,
ER (32-
RY, AL ARRAY
bit),
BLOB
BIGINT
(64-bit)

Inform SMALL SMALL CHAR, DATE, BOO SET,


DECIMAL (32 TEXT,
ix Static INT (16- FLOAT VARCHAR, DATETI LEA LIST,
digits BYTE,
Dynam bit), INT (32-bit), NCHAR, ME, N MULTIS
float/fixed), BLOB,
ic (32-bit), FLOAT NVARCHA INTERV ET,
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

Server[ INT8 (64-bit) MONEY R, CLOB AL ROW,


114]
(64-bit LVARCHAR TIMESE
propriet , CLOB, RIES,
ary), TEXT SPATIAL
BIGINT , JSON,
(64-bit) BSON,
USER
DEFINE
D TYPES

TINYIN MONEY,
DATE,
T (8- C, CHAR, OBJECT_
ANSIDA
bit), VARCHAR, BYTE, KEY,
TE,
SMALL LONG VARBY TABLE_
FLOAT4 INGRES
INT (16- VARCHAR, TE, KEY,
Ingres [ (32-bit), DATE,
115] Static bit), DECIMAL NCHAR, LONG N/A USER-
FLOAT TIME,
INTEG NVARCHA VARBY DEFINE
(64-bit) TIMEST
ER (32- R, LONG TE D DATA
AMP,
bit), NVARCHA (BLOB) TYPES
INTERV
BIGINT R, TEXT (via
AL
(64-bit) OME)

SMALL
INT (16-
CHAR,
Linter bit), REAL(3 BYTE,
VARCHAR, BOO GEOMET
SQL INTEG 2-bit), DECIMAL, VARBY
Static NCHAR, DATE LEA RY,
RDBM ER (32- DOUBL NUMERIC TE,
NVARCHA N EXTFILE
S bit), E(64-bit) BLOB
R, BLOB
BIGINT
(64-bit)

CURSOR,
DATE,
TIMEST
DATETI
AMP,
MEOFFS
BINARY HIERAR
TINYIN CHAR, ET,
Micros , CHYID,
T, NUMERIC, VARCHAR, DATETI
oft VARBIN UNIQUEI
SMALL FLOAT, DECIMAL, TEXT, ME2,
SQL Static ARY, BIT DENTIFI
INT, REAL SMALLMON NCHAR, SMALL
Server[ IMAGE, ER,
116] INT, EY, MONEY NVARCHA DATETI
FILESTR SQL_VA
BIGINT R, NTEXT ME,
EAM RIANT,
DATETI
XML,
ME,
TABLE,
TIME
Geometry,
Geograph
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

TIMEST
Micros
AMP,
oft
ROWVE
SQL TINYIN
BINARY RSION,
Server T,
NUMERIC, NCHAR, , UNIQUEI
Compa SMALL FLOAT, DATETI
Static DECIMAL, NVARCHA VARBIN BIT DENTIFI
ct INT, REAL ME
MONEY R, NTEXT ARY, ER,
(Embe INT,
IMAGE IDENTIT
dded BIGINT
Y,
Databa
ROWGUI
se)[117]
DCOL

TIME
WITH
TIME
ZONE
TINYIN DATE, TIMEST
T, FLOAT, TIME, AMP
VARCHAR(
Monet SMALL REAL, NUMERIC, DATETI WITH
Static n),CHAR(n), BLOB BIT
DB INT, DOUBL DECIMAL ME, TIME
CLOB
INT, E TIMEST ZONE,
BIGINT AMP DAY,
MONTH,
YEAR,
INTERV
AL

ENUM,
TINYIN BIT(1 SET, GIS
T (8- ), data types
bit), CHAR, BOO (Geometr
SMALL BINARY, TINYBL LEA y, Point,
FLOAT DATETI
INT (16- VARCHAR, OB, N Curve,
(32-bit), ME,
bit), VARBINAR BLOB, (aka LineStrin
MySQ DOUBL DATE,
Static MEDIU DECIMAL Y, TEXT, MEDIU BOO g,
L[110] E (aka TIMEST
MINT TINYTEXT, MBLOB, L) = Surface,
REAL) AMP,
(24-bit), MEDIUMTE LONGBL synon Polygon,
(64-bit) YEAR
INT (32- XT, OB ym Geometry
bit), LONGTEXT for Collection
BIGINT TINY ,
(64-bit) INT MultiPoin
t,
MultiCurv
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

e,
MultiLine
String,
MultiSurf
ace,
MultiPoly
gon)

DECIMAL, CHARACTE
DECIMAL'('I R,
REAL, GEOMET
NTNUM')', CHAR'('INT
DOUBL RY,
DECIMAL'('I NUM')', TIMEST
INT, E REFERE
OpenL Static NTNUM','INT VARCHAR, AMP,
INTEG PRECISI NCE
ink + NUM')', VARCHAR'( DATETI
ER, ON, BLOB n/a (URI),
Virtuo Dyna NUMERIC, 'INTNUM')', ME,
SMALL FLOAT, UDT
so[118] mic NUMERIC'('I NVARCHA TIME,
INT FLOAT'(' (User
NTNUM')', R, DATE
INTNU Defined
NUMERIC'('I NVARCHA
M')' Type)
NTNUM','INT R'('INTNUM'
NUM')' )'

Static DATE,
CHAR,
+ BLOB, TIMEST SPATIAL
BINARY VARCHAR2
Dyna RAW, AMP , IMAGE,
_FLOAT , CLOB,
mic LONG (with/wit AUDIO,
Oracle[ (throu NUMB ,
NUMBER
NCLOB,
RAW hout N/A VIDEO,
119]
ER BINARY NVARCHA
gh (deprecat TIMEZO DICOM,
_DOUB R2, NCHAR,
ANY ed), NE), XMLTyp
LE LONG
DAT BFILE INTERV e
(deprecated)
A) AL

BIGINT
CURREN
, DECIMAL,
CY,
INTEG NUMERIC,
IDENTIT
ER, BFLOAT NUMERICSA, BINARY
Y,
SMALL 4, NUMERICSL ,
Pervas CHAR, DATE, SMALLI
INT, BFLOAT B, LONGV
ive LONGVARC DATETI DENTIT
Static TINYIN 8, NUMERICSL ARBINA BIT
PSQL[1 HAR, ME, Y,
20] T, DOUBL S, RY,
VARCHAR TIME TIMEST
UBIGIN E, NUMERICST VARBIN
AMP,
T, FLOAT B, ARY
UNIQUEI
UINTE NUMERICST
DENTIFI
GER, S
ER
USMAL
LINT,
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

UTINYI
NT

INTEG
ER8 (8-
bit),
FLOAT3 VARCHAR,
INTEG LARGE
2 (32- LARGE
ER(16- BINARY
bit), VARCHAR BOO
Polyhe bit), (aka DATETI
Static FLOAT N/A (aka LEA N/A
dra[121] INTEG BINARY ME
(aka CHARACTE N
ER (32- LARGE
REAL; R LARGE
bit), OBJECT)
64-bit) OBJECT)
INTEG
ER64
(64-bit)

ENUM,
POINT,
LINE,
DATE, LSEG,
TIME BOX,
(with/wit PATH,
SMALL hout POLYGO
REAL
INT (16- TIMEZO N,
(32-bit),
bit), NE), CIRCLE,
Postgr DOUBL CHAR, BOO
INTEG DECIMAL, TIMEST CIDR,
eSQL[1 Static ER (32- E
NUMERIC
VARCHAR, BYTEA
AMP
LEA
INET,
22]
PRECISI TEXT N
bit), (with/wit MACAD
ON (64-
BIGINT hout DR, BIT,
bit)
(64-bit) TIMEZO UUID,
NE), XML,
INTERV JSON,
AL arrays,
composite
s, ranges,
custom

char, varchar,
tinyint, wchar, binary, date,
RDM real,
smallint, varwchar, varbinary time,
Embed Static float, N/A bit N/A
integer, long varchar, , long timestam
ded[123] double
bigint long varbinary p
varwchar
Ty
pe Floati Bo
Integ Binar Date/
sys ng Decimal String ole Other
er y Time
te point an
m

char, varchar,
tinyint, wchar, binary, date,
RDM real,
smallint, decimal, varwchar, varbinary time,
Server[ Static integer, float,
numeric long varchar, , long timestam
bit rowid
124]
double
bigint long varbinary p
varwchar

TINYIN
T (8- CHAR,
bit), REAL VARCHAR, BINARY
SMALL (32-bit), LONG ,
DATE,
INT (16- DOUBL DECIMAL, VARCHAR, VARBIN
solidD TIME,
Static bit), E (64- NUMERIC WCHAR, ARY,
B TIMEST
INTEG bit), (51 digits) WVARCHA LONG
AMP
ER (32- FLOAT R, LONG VARBIN
bit), (64-bit) WVARCHA ARY
BIGINT R
(64-bit)

REAL
(aka
INTEG TEXT (aka
SQLite Dyna FLOAT,
[125] ER (64- N/A CHAR, BLOB N/A N/A N/A
mic DOUBL
bit) CLOB)
E) (64-
bit)

UniDat Dyna
N/A N/A N/A N/A N/A N/A N/A N/A
a mic

UniVe Dyna
N/A N/A N/A N/A N/A N/A N/A N/A
rse mic

Type
Floating Date/Tim Boole
syste Integer Decimal String Binary Other
point e an
m

Other objects[edit]
Information about what other objects are supported natively.
Data Domain Cursor Trigger Function

4th Dimension Yes No Yes Yes

ADABAS ? Yes ? Yes

Adaptive Server Enterprise Yes Yes Yes Yes

Advantage Database Server Yes Yes Yes Yes

Altibase Yes Yes Yes Yes

Apache Derby No Yes Yes Yes

Clustrix No Yes No Yes

CUBRID Yes Yes Yes Yes

Drizzle Yes Yes Yes 4 Yes

Empress Embedded Database Yes via RANGE CHECK Yes Yes Yes

EXASolution Yes No No Yes

Yes via CHECK


DB2 Yes Yes Yes
CONSTRAINT

Firebird Yes Yes Yes Yes

HSQLDB Yes No Yes Yes

H2 Yes No Yes 2 Yes


Data Domain Cursor Trigger Function

Informix Dynamic Server Yes via CHECK Yes Yes Yes

Ingres Yes Yes Yes Yes

InterBase Yes Yes Yes Yes

Linter SQL RDBMS No Yes Yes Yes

LucidDB No Yes No Yes

MaxDB Yes Yes Yes Yes

Microsoft Access (JET) Yes No No No

Microsoft Visual Foxpro No Yes Yes Yes

Microsoft SQL Server Yes (2000 and beyond) Yes Yes Yes

Microsoft SQL Server Compact (Embedded Database) No Yes No No

MonetDB No No Yes Yes

MySQL No 3
Yes Yes Yes

OpenBase SQL Yes Yes Yes Yes

Oracle Yes Yes Yes Yes

Oracle Rdb Yes Yes Yes Yes


Data Domain Cursor Trigger Function

OpenLink Virtuoso Yes Yes Yes Yes

Pervasive PSQL Yes Yes Yes Yes

Polyhedra DBMS No No Yes Yes

PostgreSQL Yes Yes Yes Yes

RDM Embedded No Yes No No

RDM Server No Yes Yes No

ScimoreDB No No No No

solidDB Yes Yes Yes Yes

SQL Anywhere Yes Yes Yes Yes

SQLite No No Yes No

Teradata No Yes Yes Yes

UniData No No Yes Yes

UniVerse No No Yes Yes

Data Domain Cursor Trigger Functi

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 exist. CHECK clause is parsed, but not enforced in runtime.
Note (4): In Drizzle the user codes functions and procedures in C++.
Note (5): Informix supports external functions written in Java, C, & C++.

Partitioning[edit]
Information about what partitioning methods are supported natively.

Range Hash Composite (Range

4th Dimension ? ? ?

ADABAS ? ? ?

Adaptive Server Enterprise Yes Yes No

Advantage Database Server No No No

Altibase Yes Yes No

Apache Derby No No No

Clustrix Yes No No

CUBRID Yes Yes No

IBM DB2 Yes Yes Yes

Empress Embedded Database No No No

EXASolution No Yes No

Firebird No No No
Range Hash Composite (Range

HSQLDB No No No

H2 No No No

Informix Dynamic Server Yes Yes Yes

Ingres Yes Yes Yes

InterBase No No No

Linter SQL RDBMS No No No

MaxDB No No No

Microsoft Access (JET) No No No

Microsoft Visual Foxpro No No No

Microsoft SQL Server Yes No No

Microsoft SQL Server Compact (Embedded Database) No No No

MonetDB No No No

MySQL Yes Yes Yes

OpenBase SQL ? ? ?

Oracle Yes Yes Yes


Range Hash Composite (Range

Oracle Rdb Yes Yes ?

OpenLink Virtuoso Yes Yes Yes

Pervasive PSQL No No No

Polyhedra DBMS No No No

PostgreSQL Yes1 Yes1 Yes1

RDM Embedded Yes2 Yes2 Yes2

RDM Server No No No

ScimoreDB No Yes No

solidDB Yes No No

SQL Anywhere No No No

SQLite No No No

Teradata Yes Yes Yes

UniVerse Yes Yes Yes

Range Hash Composite (Ran

Note (1): PostgreSQL 8.1 provides partitioning support through check constraints. Range, List
and Hash methods can be emulated with PL/pgSQL or other procedural languages.[126]
Note (2): RDM Embedded 10.1 requires the application programs to select the correct partition
(using range, hash or composite techniques) when adding data, but the database
union functionality allows all partitions to be read as a single database.[127]
Access control[edit]
Information about access control functionalities (work in progress).

Native Brute- Enterprise Password


Patch Run
network force directory complexity
access3 unprivilege
encryption1 protection compatibility rules2

Yes (with
4D ? Yes ? Yes Yes
SSL)

Partial
(need to
Yes (optional; register;
Adaptive Server Enterprise Yes Yes (optional ?) Yes Yes
to pay) depend on
which
product)[128]

Advantage Database Server Yes No No No Yes Yes

Yes (LDAP,
DB2 Yes ? Yes ? Yes
Kerberos…)

Empress Embedded Database ? ? No No Yes Yes

EXASolution No No Yes (LDAP) No Yes Yes

Yes (Windows Partial (no


Firebird No Yes[129] trusted No security Yes
authenification) page)[130]

HSQLDB Yes No Yes Yes Yes Yes

H2 Yes Yes ? No ? Yes

Informix Dynamic Server Yes ? Yes10 ?10 Yes Yes


Native Brute- Enterprise Password
Patch Run
network force directory complexity
access3 unprivilege
encryption1 protection compatibility rules2

Yes (with Yes (length


Linter SQL RDBMS Yes Yes No Yes
SSL) only)

Yes (with 5.2,


Partial (no
but not on
MariaDB Yes (SSL) No No security Yes
Windows
page)
servers)

Yes (Microsoft
Microsoft SQL Server Yes ? Active Yes Yes Yes
Directory)

No (not
Microsoft SQL Server
relevant, only No (not No (not
Compact (Embedded No (not relevant) Yes Yes (file ac
file relevant) relevant)
Database)
permissions)

Yes (with 5.5,


Partial (no
Yes (SSL with but only in
MySQL No No security Yes
4.0) commercial
page)[131]
edition)

Yes (Open
OpenBase SQL Yes ? Directory, No ? ?
LDAP)

Yes
OpenLink Virtuoso Yes Yes Yes Yes (optional) Yes
(optional)

Oracle Yes Yes Yes Yes ? Yes

Pervasive PSQL Yes ? No No Yes Yes

Polyhedra DBMS No No No No Yes


Yes (with SSL.
Native Brute- Enterprise Password
Patch Run
network force directory complexity
access3 unprivilege
encryption1 protection compatibility rules2

Optional)

Yes (as of 9.0


Yes (LDAP, with
PostgreSQL Yes Yes (for 9.1) Yes[132] Yes
Kerberos…9) passwordcheck
module)

RDM Embedded No No No No No Yes

RDM Server Yes No No No No Yes

solidDB No No Yes No No Yes

SQL Anywhere Yes ? Yes (Kerberos) Yes ? Yes

No (not
Partial (no
relevant, only No (not No (not
SQLite No (not relevant) security Yes (file ac
file relevant) relevant)
page)[133]
permissions)

Native Enterprise Password


Brute-force Patch Run
network directory complexity
protection access3 unprivile
encryption1 compatibility rules2

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.[134]
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.[135]
Note (9): Authentication methods.[136]
Note (10): Informix Dynamic Server supports PAM and other configurable authentication. By
default uses OS authentication.
Note (11): Authentication methods.[137]
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.[138]

Databases vs schemas (terminology)[edit]


This section possibly contains original research. Please improve
it by verifying the claims made and adding inline citations. Statements
consisting only of original research should be removed. (June 2010)

The SQL specification makes clear what an "SQL schema" is; however, different databases
implement it incorrectly. To compound this confusion the functionality can, when incorrectly
implemented, overlap with that of the 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 amongst all of the implementations.
A true fully (database, schema, and table) qualified query is exemplified as such: SELECT *
FROM database.schema.table

Now, the issue, 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 db1.foo vs. SELECT * FROM db2.foo (no explicit schema between db
and table)
 SELECT * FROM [db1.]default.foo vs. SELECT * FROM [db1.]alternate.foo (no
explicit db 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 Postgres-schemas,
insomuch as Postgres lacks off-the-shelf cross-database functionality 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, Postgres fully supports
schemas but lacks some functionality MySQL has with databases, while MySQL does not even
attempt to support true 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
Oracle 'shared-everything' 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 server. In the Oracle view, the '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.
The end result is confusion between the database factions. The Postgres and Oracle
communities maintain that one database is all that is needed for one project, per the definition of
database. MySQL and Informix proponents maintain that schemas have no legitimate purpose
when the functionality can be achieved with databases. Postgres adheres to the SQL
specification, in a more intuitive fashion (bottom-up), while MySQL's pragmatic counterargument
allows their users to get the job done while creating conceptual confusion.

You might also like