SQL::Geschichte/Normen (Übersicht) SEQUEL (Structured English Query Language) 74 [IBM] SEQUEL2 76 SQL 86 [ANSI] SQL 89 [ISO] SQL2 92 [ISO/ANSI] SQL3 (SQL::99) 99 SQLx (SQL::2003) 03 < 100 Seiten > 600 Seiten > 1100 Seiten ? SQL::Normen SQL 86 • • nur Grundoperationen; nicht z.B. ALTER TABLE keine Primärschlüssel-Eigenschaft; Work-Around: CREATE TABLE Kunde (Nr DECIMAL (5,0) NOT NULL, … garantiert, dass alle Werte ); des Attributs Nr ungleich Null sind. CREATE UNIQUE INDEX KundIdx ON Kunde (Nr); garantiert, dass alle Werte des Attributs Nr verschieden sind. SQL::Normen SQL 89 Zusätzlich (zu SQL-86): • Integritätskontrollen • CHECK-Option (=Wertebereich für Attribute) kein Typkonzept, da Attribute einzeln zu definieren sind! • DEFAULT-Option CREATE TABLE Kunde (Nr SMALLINT DEFAULT 0, • Entity-Integrität CREATE TABLE Kunde (… PRIMARY KEY (Nr)); Keine Pflicht zur Vergabe eines Primärschlüssels! SQL::Normen SQL 89 (Forts.) • • Referentielle Integrität CREATE TABLE Auftrag (… Kunde SMALLINT, … FOREIGN KEY (Kunde) REFERENCES Kunde); Embedded SQL (Einbettung von SQL in 3GL: Ada, C, COBOL, FORTRAN, Pascal, PL/I) • Datentypenabbildung • Cursor SQL::Normen SQL2 Ziel: Alle herstellerspezifischen Erweiterungen wieder „einzufangen“ -> „Conformance Levels“ (-> Hersteller kann schrittweise SQL-konform werden) 1. Entry SQL (ähnlicher Umfang wie SQL-86) 2. Intermediate SQL (100 funktionale Erweiterungen) 3. Full SQL (weitere 76 funktionale Erweiterungen) • Zusätzliche Datentypen (BIT, DATETIME,…) • Domänen (benannte Wertebereiche) • Temporäre Tabellen • SQL-Cursor • Dynamisches SQL • … SQL::Normen SQL3 (SQL::99) • • Objektrelationale Erweiterungen • Neue Datentypen: BLOB, CLOB • Typkonstruktoren: ROW, ARRAY, REF • Benutzerdefinierte Ordnungen für benutzerdefinierte Typen • Typisierte Tabellen mit Subtabellenbildung • Typisierte Sichten mit Subsichtenbildung Sonstige Erweiterungen • Benutzerdefinierte Routinen (auch als Trigger) • Rekursive Anfragen • OLAP-Anfragekonstrukte • Rollenkonzept zur Zugriffskontrolle • Scrollable/updatable Cursors • Multimedia-Erweiterungen SQL::Normen SQLx (SQL::2003) • Erweiterungen des Datenmodells • Generierte Spalten (von anderen Spaltenwerten abgeleitet) • Sequenzgeneratoren zum inkrementellen Erzeugen von Werten • Identitätsspalten zur automatischen Generierung künstlicher Schlüsselwerte • Tabellenwertige Funktionen • XML-Anbindung Quelle: Can Türker: SQL:1999 & SQL:2003. dpunkt.verlag2003