Data Definition Language
Die Data Definition Language (DDL; deutsch Datendefinitionssprache[1] ) ist ein Teil einer Datenbanksprache, der verwendet wird, um Datenstrukturen und verwandte Elemente zu beschreiben, zu ändern oder zu entfernen. Ursprünglich bezog sich DDL auf Datenbanksysteme, der Begriff wird aber heute auch in anderen Zusammenhängen verwendet. Als Datenbanksprache ist DDL die Datenbeschreibungssprache einer Datenbank.
Es existieren sehr unterschiedliche Ausprägungen der DDL (abhängig vom Verwendungszweck), Beispiele:
- In den historischen IMS-Datenbanken werden die Datenstrukturen und deren logische Sichten in Form einer höheren Assemblersprache definiert.
- Beispiel: ...
SEGM NAME=PROJECT,PARENT=FIRM,BYTES=45 FIELD NAME=(PROJNO,SEQ,U),BYTES=6,START=1
...
- Beispiel: ...
- In SQL liegt sie (neben DML und DCL) in Form englischer Befehlsklauseln vor.
- Beispiel:
CREATETABLEPROJECT(PROJNODECIMAL(6,0)NOTNULLPRIMARYKEY,
...
- Beispiel:
- XML Schema ist eine DDL zur Beschreibung der Struktur von XML-Dokumenten.
Einige Software-Hersteller weisen auch Berechtigungselemente (z. B. GRANT
) dem DDL-Begriff zu, diese gehören allerdings in der Theorie zur Data Control Language.
Zu unterscheiden ist eine DDL vom Begriff „Deklaration": Während eine DDL im Allgemeinen zur Festlegung der Struktur von Daten in einem DBMS dient, wird das Festlegen der Format- und Strukturangaben für hauptspeicher-intern zu verarbeitende Daten – im Quelltext eines Computerprogramms, gemäß der Syntax einer Programmiersprache – als „Deklaration" (zum Teil auch als Definition oder Spezifikation) bezeichnet.
SQL
[Bearbeiten | Quelltext bearbeiten ]In der praktisch wichtigen Structured Query Language lautet die Syntax wie folgt:
CREATETABLERelation((Attribut-Definition[PRIMARYKEY])+ [,FOREIGNKEY(Attribut+)REFERENCESRelation(Attribut+)]) DROPTABLERelation ALTERTABLERelationAlter-Definition CREATEINDEXIndex-NameONRelation(Attribut+) DROPINDEXIndex-Name CREATEVIEWSicht[(Attribut+)]ASSFW-Block[WITHCHECKOPTION] DROPVIEWSicht
PRIMARY KEY
undFOREIGN KEY
sind Teil der SQL-89 IDL bzw. SQL-92 und werden von manchen Datenbanksystemen nicht unterstützt.- Die Attribut-Definition enthält den Namen des Attributes, den Datentyp, sowie optionale Angaben wie
NOT NULL
. In SQL-92 können benutzerdefinierte Wertebereiche sowie Defaultwerte angegeben werden. - Bei
CREATE TABLE
können ab SQL-92 außerdem mittels derCHECK
-Klausel noch Integritätsbedingungen bei den Attributen oder für die Tabelle angegeben werden. - Die Alter-Definition ist
ADD Attribut-Definition
. In SQL-92 gibt es nochALTER Attribut Default-Wert
oderDROP Attribut
. Da SQL-92 sehr restriktiv bezüglich derALTER
-Anweisung ist, ist dies eine der Anweisungen, die von den Herstellern universell erweitert wurde, so dass beliebige Änderungen möglich sind wie durch eine Folge vonDROP
undADD
-Anweisungen. - Bei der Definition einer Sicht können neue Attributnamen vergeben werden. SFW-Block ist eine beliebige SQL-Abfrage,
WITH CHECK OPTION
gibt an, ob gewisse Änderungsoperationen erlaubt sein sollen (vgl. Sichten). EineORDER BY
Klausel ist in Sichtdefinitionen nicht zulässig, da Sichten wieder Relationen sind, und Relationen sind (Multi-)Mengen, also per Definition nicht sortiert. - Die
CREATE
-Anweisung wird in modernen DBMS dazu benutzt, außer Relationen, Indizes und Sichten alle möglichen anderen Objekte zu kreieren. - Der SQL-Standard definiert Indizes überhaupt nicht, so dass die entsprechenden
CREATE INDEX
undDROP INDEX
Anweisungen immer produktspezifische Erweiterungen sind. Allerdings verwenden die meisten DBMS die gleiche oder eine sehr ähnliche Syntax. - Mit
WITH CHECK OPTION
kann eine View (virtuelle Tabelle) definiert werden, um somit eine Kontrolle über die Veränderung der Daten zu ermöglichen, welche in einer View dargestellt werden und auch bearbeitet werden können. Durch diese Angabe wird festgelegt, dass Änderungen der View, die den in ihr nicht sichtbaren Teil einer Relation beeinflussen, in einem Test anhand der durchWHERE
angegebenen Parameter erkannt und abgewiesen werden.
Beispiele:
CREATETABLEStudent( MatrNrINTNOTNULLPRIMARYKEY, Namevarchar(50)NOTNULL)
- Erzeugt die Tabelle namens Student mit den Spalten MatrNr und Name, wobei MatrNr der Primärschlüssel ist und in keiner der Spalten leere Felder erlaubt sind.
ALTERTABLEStudentADDVornamevarchar(35)
- Definiert eine neue Spalte namens Vorname in der Tabelle Student.
DROPTABLEStudent
- Löscht die gesamte Tabelle Student.
CREATEINDEXidx_NameONStudent(Name)
- Legt einen Index auf die Spalte Name der Tabelle Student. Der Index bekommt die Bezeichnung idx_Name und beschleunigt die Suche nach Datensätzen in der Tabelle Student, wenn der Name als Suchkriterium angegeben wird.
DROPindexidx_Name
- Löscht den Index idx_Name.
CREATEVIEWalte_Freunde ASSELECTName,Vorname,Wohnort,Geburtstag FROMFreunde WHEREGeburtstag<='1-JAN-1970' WITHCHECKOPTION;
- Zeigt nur Freunde an, die vor dem 1. Januar 1970 geboren wurden und verhindert die Änderung auf Werte größer als der 1. Januar 1970 sowie das Neuanlegen eines Datensatzes mit einem ungültigen Wert.
Siehe auch
[Bearbeiten | Quelltext bearbeiten ]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten ]- ↑ Datendefinitionssprache, Geoinformatik Lexikon, Agrar- und Umweltwissenschaftliche Fakultät – Universität Rostock