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