Innsbruck Information System University of Innsbruck School of Management Universitätsstraße 15 6020 Innsbruck Einführung SQL Data Definition Language (DDL) Universität Innsbruck Institut für Wirtschaftsinformatik, Produktionswirtschaft und Logistik Bereich Wirtschaftsinformatik
Einführung in die SQL-DDL, das CREATE TABLE - Statement Mithilfe der Data Definition Language (DDL) können Entitätstypen aus Datenmodellen in physische Tabellen einer Datenbank überführt werden. Für jeden Entitätstyp wird eine Tabelle erstellt Der Name des Entitätstyps wird der Name der Tabelle Für jedes Attribut wird eine Spalte in der Tabelle erstellt DDL 1. Das CREATE TABLE Statement erzeugt eine physische Tabelle: Syntax: CREATE TABLE Tabellenname ( Runde Klammern sind syntaktisch notwendig! Attribut_1 Datentyp_1 [(Größe)] [NOT NULL], Eckige Klammern kennzeichnen optionale Elemente und sind nicht(!) anzuführen! Attribut_2 Datentyp_2 [(Größe)] [NOT NULL], Attribut_n Datentyp_n [(Größe)] [NOT NULL], PRIMARY KEY (Primärschlüsselattribut(e)) [, FOREIGN KEY (Fremdschlüsselattribut(e)) REFERENCES Primärschlüsseltabelle (Primärschlüsselattribut(e))] ); Tabellen auf der 1-Seite von Relationen müssen VOR jenen auf der N-Seite von Relationen erzeugt werden, weil auf deren Primärschlüsselattribut(e) referenziert wird! Die Datentypen definieren die Art der in einer Spalte zu speichernden Daten, sie unterscheiden sich in verschiedenen Datenbanksystemen. Die in MS-Access verwendbaren Datentypen finden Sie unter https://msdn.microsoft.com/de-de/library/office/ff193793.aspx. Der Datentyp einer Primärschlüsselspalte muss (wegen der Referenziellen Integrität) mit dem Datentyp der zugehörigen Fremdschlüsselspalte identisch sein (COUNTER entspricht LONG)! Die Klausel NOT NULL erzwingt die Eingabe von Werten in die betreffende Spalte. Ist die Konditionalität der N-Seite einer Beziehung 1, so muss/müssen die Fremdschlüsselspalte(n) mit NOT NULL definiert werden! Seite 2
Einführung in die SQL DDL, die ALTER und DROP TABLE - Statements Beispiele für CREATE TABLE - Statements: CREATE TABLE Autoren ( CREATE TABLE Buecher ( ID COUNTER, ISBN CHAR(12), Nachname CHAR NOT NULL, Autor LONG NOT NULL, Vorname CHAR, Titel CHAR NOT NULL, PRIMARY KEY (ID) Untertitel TEXT, DDL ); Verlag CHAR, Ort CHAR, PRIMARY KEY (ISBN), FOREIGN KEY (Autor) REFERENCES Autoren (ID) ); 2. Das ALTER TABLE Statement ändert eine bereits bestehende Tabelle: Syntax: ALTER TABLE Tabelle bedeutet: oder ADD {COLUMN Attribut Datentyp[(Größe)] [NOT NULL] Fügt einer bestehenden Tabelle eine Spalte hinzu ALTER COLUMN Attribut Datentyp[(Größe)] Ändern den Datentyp einer bestehenden Spalte DROP {COLUMN Attribut Löscht eine Spalte einer bestehenden Tabelle Beispiele für ALTER TABLE: ALTER TABLE Autoren ADD COLUMN GebDat Date; ALTER TABLE Buecher ALTER COLUMN Untertitel CHAR; ALTER TABLE Autoren DROP COLUMN GebDat; ALTER TABLE Autoren ADD COLUMN Nation CHAR NOT NULL, Fügt der bestehenden Tabelle Autoren die Fremdschlüsselspalte Nation FOREIGN KEY (Nation) REFERENCES Nationen (Nation); 3. Das DROP TABLE Statement löscht eine Tabelle: Syntax: DROP TABLE Tabellenname und eine Relation zur bestehenden Tabelle Nationen hinzu. Seite 3
SQL DDL, Übungsbeispiele: Die Folgenden ER-Modelle in Crow s Food Notation sind in physische MS-Access-Datenbanken zu überführen. Die Modelle enthalten teilweise nicht aufgelöste N:M Relationen und zeigen teilweise auch keine Fremdschlüsselattribute, teilweise sind sowohl N:M Relationen und auch deren Auflösungen modelliert und Fremdschlüsselattribute angegeben. Erzeugen Sie syntaktisch korrekte CREATE TABLE und (falls nötig) ALTER TABLE Statements, achten Sie auf sinnvolle Datentypen und Größen. Beachten Sie Primär- und Fremdschlüsselattribute und NOT NULL Deklarationen. Führen Sie Ihre Statements in MS Access (in einer korrekten Reihenfolge) aus. 1. Shop Seite 4
Übungsbeispiele: 2. Fluglinie Seite 5
Übungsbeispiele: 3. Notenliste a. Erzeugen Sie die nötigen CREATE TABLE Statements und führen Sie diese in Access aus, b. Fügen Sie Beispieldaten aus der ursprünglichen Notenliste ein, c. Versuchen Sie mit Hilfe eines SELECT Statements die Notenliste aus ihren Beispieldaten wieder zu rekonstruieren Seite 6