Appendix J: SQL99 Major Features Compliance Across Different RDBMS

Appendix J: SQL99 Major Features Compliance Across Different RDBMS

Overview

Table J-1 shows which of 350 major features defining SQL99 standard compliance have been implemented in IBM UDB2 (version 7.2), Oracle 9i, and Microsoft SQL Server 2000. Whenever an alternative implementation is available the vendor's feature is marked as compliant. For example, the ANSI/ISO standard mandates a CHARACTER_LENGTH function, which Oracle and UDB2 implement"with their function LENGTH and Microsoft with its function LEN — for our purposes they are considered to be compliant, though strictly speaking they are not. For practicality's sake, we follow the spirit, not the letter, of the standard.

Table J-1: SQL99-Defined Features across RDBMS

Identifier

Description

IBM

Oracle

Microsoft

E011

Numeric data types

?

?

?

E011-01

INTEGER and SMALLINT data types

?

?

?

E011-02

REAL, DOUBLE PRECISON, and FLOAT data types

?

?

?

E011-03

DECIMAL and NUMERIC data types

?

?

?

E011-04

Arithmetic operators

?

?

?

E011-05

Numeric comparison

?

?

?

E011-06

Implicit casting among the numeric data types

?

?

?

E021

Character data types

?

?

?

E021-01

CHARACTER data type

?

?

?

E021-02

CHARACTER VARYING data type

?

Partial

Partial

E021-03

Character literals

?

Partial

?

E021-04

CHARACTER_LENGTH function

?

?

?

E021-05

OCTET_LENGTH function

?

?

?

E021-06

SUBSTRING function

?

?

?

E021-07

Character concatenation

?

?

?

E021-08

UPPER and LOWER functions

?

?

?

E021-09

TRIM function

?

?

?

E021-10

Implicit casting among the character data types

?

?

?

E021-11

POSITION function

?

?

?

E011-12

Character comparison

?

?

?

E031

Identifiers

?

?

?

E031-01

Delimited identifiers

?

?

?

E031-02

Lower case identifiers

?

?

?

E031-03

Trailing underscore

???

E051

Basic query specification

?

?

?

E051-01

SELECT DISTINCT

?

?

?

Identifier

Description

IBM

Oracle

Microsoft

E051-02

GROUP BY clause

?

?

?

E051-04

GROUP BY can contain columns not in select list

?

?

?

E051-05

Select list items can be renamed

?

?

?

E051-06

HAVING clause

?

?

?

E051-07

Qualified * in select list

?

?

?

E051-08

Correlation names in the FROM clause

?

?

?

E061

Basic predicates and search conditions

?

?

?

E061-01

Comparison predicate

?

?

?

E061-02

BETWEEN predicate

?

?

?

E061-03

IN predicate with list of values

?

?

?

E061-04

LIKE predicate

?

?

?

E061-05

LIKE predicate ESCAPE clause

?

?

?

E061-06

NULL predicate

?

?

?

E061-07

Quantified comparison predicate

?

?

?

E061-08

EXISTS predicate

?

Partial

?

E061-09

Subqueries in comparison predicate

?

?

?

E061-11

Subqueries in IN predicate

?

?

?

E061-12

Subqueries in quantified comparison predicate

?

?

?

E061-13

Correlated subqueries

?

?

?

E061-14

Search condition

?

?

?

E071

Basic query expressions

?

?

?

E071-01

UNION DISTINCT table operator

?

?

?

E071-02

UNION ALL table operator

?

?

?

E071-03

EXCEPT DISTINCT table operator

?

Partial

?

E071-05

Columns combined via table operators need not have exactly the same data type

?

?

?

Identifier

Description

IBM

Oracle

Microsoft

E071-06

Table operators in subqueries

?

?

?

E081

Basic Privileges

?

?

?

E081-01

SELECT privilege

?

?

?

E081-02

DELETE privilege

?

?

?

E081-03

INSERT privilege at the table level

?

?

?

E081-04

UPDATE privilege at the table level

?

?

?

E081-06

REFERENCES privilege at the table level

?

?

?

E081-08

WITH GRANT OPTION

?

?

?

E081-05

UPDATE privilege at the column level

?

?

?

E081-07

REFERENCES privilege at the column level

?

?

?

E091

Set functions

?

?

?

E091-01

AVG

?

?

?

E091-02

COUNT

?

?

?

E091-03

MAX

?

?

?

E091-04

MIN

?

?

?

E091-05

SUM

?

?

?

E091-06

ALL quantifier

?

?

?

E091-07

DISTINCT quantifier

?

?

?

E101

Basic data manipulation

?

?

?

E101-01

INSERT statement

?

?

?

E101-03

Searched UPDATE statement

?

?

?

E101-04

Searched DELETE statement

?

?

?

E111

Single row SELECT statement

?

?

?

E121

Basic cursor support

?

?

?

E121-01

DECLARE CURSOR

?

?

?

E121-02

ORDER BY columns need not be in select list

?

?

?

E121-03

Value expressions in ORDER BY clause

?

?

?3

E121-04

OPEN statement

?

?

?

E121-06

Positioned UPDATE statement

?

?

?

E121-07

Positioned DELETE statement

?

?

?

E121-08

CLOSE statement

?

?

?

E121-10

FETCH statement implicit NEXT

?

?

?

Identifier

Description

IBM

Oracle

Microsoft

E121-17

WITH HOLD cursors

?

?

?

E131

Null value support (nulls in lieu of values)

?

?

?

E141

Basic integrity constraints

?

?

?

E141-01

NOT NULL constraints

?

?

?

E141-02

UNIQUE constraints of NOT NULL columns

?

?

?

E141-03

PRIMARY KEY constraints

?

?

?

E141-04

Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action

?

?

?

E141-06

CHECK constraints

?

?

?

E141-07

Column defaults

?

?

?

E141-08

NOT NULL inferred on PRIMARY KEY

?

?

?

E141-10

Names in a foreign key can be specified in any order

???

E151

Transaction support

?

?

?

E151-01

COMMIT statement

?

?

?

E151-02

ROLLBACK statement

?

?

?

E152

Basic SET TRANSACTION statement

?

?

?

E152-01

SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause

?

?

?

E152-02

SET TRANSACTION statement: READ ONLY and READ WRITE clauses

?

?

?

E153

Updateable queries with subqueries

?

?

?

E161

SQL comments using leading double minus

?

?

?

Identifier

Description

IBM

Oracle

Microsoft

E171

SQLSTATE support

?

?

?

E182

Module language

?

Partial

?

F021

Basic information schema

?

?

?

F021-01

COLUMNS view

?

?

?

F021-02

TABLES view