In diesem Abschnitt werden wir uns die SQL Befehle ansehen, mit denen ein sogenanntes Datenbankschema angelegt , gepflegt und auch wieder gelöscht werden kann. Es geht also um die sogenannte SQL- Data Definition Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen aus dem Bereich SQLDDL beschäftigen. Der wesentliche Fokus liegt hierbei auf • Dem Anlegen von Tabellen Create Table • Dem Löschen von Tabellen Drop Table • Dem Ändern von Tabellen Alter Table 2 Um mit SQL arbeiten zu können benötigen wir als erstes einmal eine Tabelle. Tabellen legen wir mit dem Befehl „CREATE TABLE“ an. Die einfachste Form, um eine Tabelle anzulegen, hat folgende Syntax : CREATE TABLE tabellenName ( , spaltenName2 datenTyp,…….) spaltenName1 datenTyp Den Aufbau der Anweisung schauen wir uns als nächstes genauer an. 3 Hier sehen Sie zunächst die Syntax des CREATE TABLE Befehls. Mit dem Befehl legen wir im einzelnen folgende Eigenschaften fest: • den Tabellennamen • Je Spalte wird der Spaltenname sowie der zugehörige Datentyp definiert • Sofern für die Tabelle ein Primärschlüssel definiert werden soll, werden nach dem Schlüsselwort PRIMARY KEY die Spaltennamen aufgeführt, die zu dem Primärschlüssel gehören. Tabellennamen • Tabellennamen müssen eindeutig sein innerhalb des Datenbankschemas • Tabellennamen sind Substantive ( alle Singular oder alle Plural) • Über den Tabellennamen können wir auf die Inhalte (Zeilen) einer Tabelle zugreifen Spalten • Spaltennamen müssen innerhalb einer Tabellendefinition eindeutig sein. In unterschiedlichen Tabellen, dürfen also die gleichen Spaltennamen vorkommen • Für jede Spalte muss ein Datentyp festgelegt werden. Welchen Datentypen wir 4 verwenden, hängt von den Anforderungen bzw. den Daten ab, die wir ablegen wollen. Hierbei ist zu berücksichtigen, dass die meisten Hersteller auch eigene herstellerspezifische Datentypen unterstützen. Verwendet man solche Datentypen, dann ist das Datenbankschema nicht mehr ohne Anpassungen auf einem DBMS eines anderen Herstellers lauffähig (Portierungsaufwand). 4 In dieser Abbildungen sehen Sie, dass man den SQL Befehl für das Anlegen einer Tabelle direkt mit einem Entity-Typ aus dem physikalischen Datenmodell korrespondiert. Zur Auffrischung: Das physikalische Datenmodell ist herstellerspezifisch und enthält alle Informationen, um hieraus direkt SQL Befehle für das Anlegen eines Datenbankschemas erstellen zu können. Wie Sie in der Abbildung auf der rechten Seite erkennen können, ist dort der CREATE TABLE Befehl aufgelistet, um die entsprechende Tabelle ADRESSE anlegen zu können. TIPP: Bevor Sie weitergehen, führen Sie die Übungen zum Anlegen von Tabellen aus dem Übungsbuch durch. 5 In dieser Abbildung sehen Sie beispielhaft, wie in einem physikalischen Modell das zugehörige SQL Statement erzeugt werden kann. Links oben sehen Sie die Darstellung aus dem phy. Datenmodell. Rechts daneben sehen Sie den Tabellen-Editor des DBDesigner4 , in dem wir die Tabellendefinition angeben können. Im unteren Teile der Abbildung sehen Sie die die SQL Anweisung zum Erstellen der dazugehörigen Tabelle. Das „CREATE TABLE Statement entspricht hier der Syntax von MySQL Server. Bei Oracle und SQL Server sieht das Create Table etwas anders aus. Dies wollen wir aber hier nicht vertiefen, um den Fokus nicht zu verlieren. Zum Nachschlagen: Create Table Syntax • H2 http://www.h2database.com/html/grammar.html?highlight=tableName&search =Table#create_table • Oracle https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm 6 • SQL Server https://msdn.microsoft.com/en-us/library/ms365315.aspx 6 Nachdem wir eine Tabelle angelegt haben, können wir diese auch wieder löschen. Um eine Tabelle zu Löschen, verwenden wir den DROP TABLE Befehl und geben hierbei noch den Namen der Tabelle an, die wir löschen wollen. Die Syntax ist in der Abbildung dargestellt. DROP TABLE tablename Hinweis Beachten Sie , dass beim Löschen einer Tabelle auch alle Datensätze der Tabelle gelöscht werden. Bevor Sie weitergehen, führen Sie die Übungen zum Löschen von Tabellen aus dem Übungsbuch durch. 7 Nachdem wir nun Tabellen anlegen und löschen können, benötigen wir noch den Befehl ALTER TABLE, der es uns erlaubt eine existierende Tabelle ändern zu können. Dies ist sinnvoll, wenn wir nachträglich noch eine Spalte hinzufügen möchten. Würden wir die Tabelle löschen und neu anlegen, würden wir ja alle Daten verlieren und müssten die Daten erneut in die Datenbank einbringen. In der Abbildung sehen Sie zwei Varianten, um Tabellen zu ändern. Variante 1: Durch eine ALTER TABLE Anweisung in der Variante 1 kann man Spalten zu einer Tabelle hinzufügen bzw. auch Spalten einer Tabelle löschen. Wird eine Spalte gelöscht, gehen dabei auch die entsprechenden Attributwerte verloren. Variante 2: 8 Durch eine ALTER TABLE Anweisung in der Variante 2 ist es möglich nachträglich den Namen einer Tabelle zu ändern. Hierbei ist aber Vorsicht geboten, sofern Applikationen den alten Namen bereits verwenden, sind diese nicht mehr ablauffähig. Hinweis: In dem Abschnitt View werden wir eine Methode kennenlernen, wie man vermeiden kann, dass Applikationen den Namen einer Tabelle kennen müssen. Dies gibt uns dann die Möglichkeit auch nachträglich noch Tabellenamen zu ändern. 8 9