Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Grundkurs 1: Die Sprache erlernen

Spalten zu einer Tabelle ergänzen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine Spalte vergessen - kein Problem. Lassen Sie sich in diesem Video zeigen, wie Sie nachträglich neue Spalten ergänzen können.

Transkript

Wie Sie zu einer bestehenden Tabelle eine neue Spalte im Nachhinein ergänzen, sehen Sie in diesem Video. Zur Demonstration erzeuge ich diese kleine Tabelle "Kategorien" mit den zwei Spalten "Kat" und "Bezeichnung". Noch ist diese Tabelle leer. Solange eine Tabelle leer ist, kann ich jegliche Modifikation der Struktur relativ einfach vornehmen, z.B. eine neue Spalte. Das geschieht über die Anweisung "ALTER TABLE" gefolgt vom Namen der Tabelle, in unserem Fall "WAWI-Kategorien", "ADD" für hinzufügen, und jetzt müssen wir für die neue Spalte in der selben Syntax angeben, als würden wir es in der "CREATE TABLE"-Anweisung tun. Also ich nenne es hier z.B. "neue Spalte 1" mit dem Datentyp "Wahr-character 20". Ich führe die Anweisung aus, um diese Spalte hinzuzufügen. Kontrollieren wir die Struktur, und wir sehen, dass die neue Spalte hier nun als dritte Spalte dabei ist. Solange eine Tabelle leer ist, kann eine neue Spalte jederzeit als "NOT NULL"-Spalte auch ergänzt werden. Ich kopiere mir diese Anweisungen und modifiziere sie leicht, ich nehme hier "neue Spalte 2" und verwende z.B. einen Integer-Datentyp und zusätzlich definiere ich, dass diese Spalte als "NOT NULL" zu gelten hat. Weil die Tabelle noch leer ist, ist das kein Problem auch diese Änderung durchzuführen, und diese Spalte ist in dieser Form nun ergänzt. Was ändert sich wenn die Tabelle zu diesem Zeitpunkt nicht mehr leer ist? Ich wiederhole den Vorgang indem ich die Tabelle noch einmal lösche, neu erzeuge und dieses Mal, bevor ich die neuen Spalten ergänze, mit drei Datensätzen befülle. Das heißt, wir haben nun drei Datensätze bereits in der Tabelle enthalten. Wie vorhin kann ich eine Spalte, die nicht als "NOT NULL" definiert ist, auch bei einer befüllten Tabelle jederzeit hinzufügen. Sie sehen hier die neue Spalte mit "NULL"-Werten ist enthalten. Was geschieht wenn ich eine Spalte nun als "NOT NULL"-Spalte hinzufügen möchte. Ich bekomme jetzt eine Fehlermeldung, weil das nur dann möglich ist, wenn die Tabelle entweder leer ist oder, und das wäre die Ersatzvariante, dieser Spalte ein "Default"-Wert mit auf den Weg gegeben wird sozusagen. Das mache ich nun, indem ich hier zusätzlich ergänze: "DEFAULT NULL" z.B. und die Anweisung noch einmal ausführe. Dieses Mal ist diese Anweisung erfolgreich. Was ist jetzt passiert? Die Spalte ist ergänzt worden, aber sofort mit dem "Default"-Wert auch befüllt. Das sehen wir, wenn wir diese "SELECT"-Anweisung ausführen. Neue "NOT NULL"-Spalten können nur hinzugefügt werden, wenn die Tabelle entweder leer ist oder diese neue Spalte einen "Default"-Wert mit auf den Weg bekommt. Neue Spalten werden mit der Anweisung "ALTER TABLE AT" hinzugefügt. Falls Ihnen hier die Syntax abgeht, wie Sie eine Spalte in einer anderen Position als hinten anfügen können, muss ich sie leider enttäuschen. Das kann kein Datenbank-Managementsystem, neue Spalten anderswo hinzuzufügen als hinten. Wenn, können Sie das nur über grafische Tools realisieren. Grafische Tools betreiben aber einen enorm aufwändigen Workaround. Wenn Sie bei einem grafischen Tool nachträglich eine Spalte in einer vorderen Position einfügen, wird im Hintergrund eine neue Tabelle erstellt, alle Daten in diese neue übertragen und die alte dann gelöscht. Auch Beziehungen zu anderen Tabellen müssen temporär umgelinkt werden. Es ist nämlich nicht möglich, neue Spalten an einer anderen Position als hinten anzufügen. Wie zeigt sich dieser Vorgang nun bei den beiden anderen Datenbankmanagement-Systemen. Bei Oracle ist der ganze Vorgang prinzipiell gleich. Einen kleinen Unterschied gibt es allerdings in der Syntax. Wenn wir uns die letzte Anweisung, die wir durchgeführt haben, hier ansehen, haben wir hier eine neue Spalte hinzugefügt, haben sie zuerst als "NOT NULL" und dann mit einem "Default"-Wert versehen. Das hängt damit zusammen, dass "NOT NULL" beim Microsoft SQL-Server eine Spalteneigenschaft ist und der "Default"-Wert technisch als "Constraint" implementiert ist. Und Spalteneigenschaften müssen weiter vorne stehen. Bei Oracle ist dies genau umgekehrt. Deshalb sind die Anweisungen prinzipiell dieselben, nur das hier der "Default"-Wert zuerst definiert werden muss und im Anschluss erst das "NOT NULL". "Default" ist nämlich eine Spalteneigenschaft und "NOT NULL" als "Constraint" implementiert, also genau in umgekehrter Reihenfolge, und sonst sind alle anderen Anweisungen ident. Kleine Unterschiede gibt es auch, wenn wir zu MySQL wechseln. Auch hier erzeuge ich die Tabelle, ich habe vergessen sie vorhin zu löschen, das hole ich jetzt noch nach damit ich sie nun neu erzeugen kann, die ist noch von dem vorherigen Beispiel vorhanden gewesen, erzeuge sie neu und füge diese drei Datensätze hier ein. Warum habe ich die jetzt sogleich eingefügt? Der kleine Unterschied gegenüber dem bisherigen ist, dass MySQL auch dann "NOT NULL"-Spalten hinzufügt, wenn die Tabelle bereits Daten enthält. Schauen wir uns das an, wir haben hier diese drei Datensätze nun hier eingefügt. Die sind bereits enthalten. Nun ändere ich die Struktur, wieder mit der Anweisung "ALTER TABLE" gefolgt vom Namen der Tabelle "ADD neue Spalte 1 als Wahr-character 20". Ich führe diese Anweisung aus, die neue Spalte ist ergänzt worden, und kontrolliere den Inhalt der Tabelle, und wir sehen die neue Spalte gibt es, natürlich mit "NULL"-Werten. Was passiert nun wenn ich hier eine neue Spalte als "NOT NULL" definiere, zum Beispiel Spalte 2 ebenso wie vorhin als Integer, aber als "NOT NULL". Wenn Sie erinnern, hatte diese Anweisung bei den anderen Systemen zu einem Fehler geführt, wenn bereits Daten in der Tabelle enthalten gewesen sind. MySQL führt diese Anweisung durch, wir sehen, sie ist erfolgreich gewesen, und wir erkennen auch warum, wenn wir den Inhalt der Tabelle betrachten. Wir sehen, dass die neue Spalte automatisch mit einem Wert befüllt worden ist, der dem Datentyp entspricht. Weil es ein numerischer Datentyp ist, ist hier standardmäßig eine Null eingetragen worden. Was geschieht, wenn wir hier einen z.B. character-Datentyp verwenden, ich füge noch eine dritte neue Spalte hinzu, diesmal wieder mit einem "Wahr-character" Datentyp, aber mit dem Zusatz "NOT NULL". Auch diese Spalte kann hinzugefügt werden. Auch hier haben wir keinen Fehler, sondern eine Erfolgsmeldung von dieser "ALTER TABLE"-Anweisung. Betrachten wir uns den Inhalt der Tabelle und wir sehen, dass auch diese neue Spalte hinzugefügt worden ist. Aber wie wir erkennen, enthält diese jetzt keine "NULL"-Werte sondern Leer-Strings. Weil wir einen character-Datentyp verwendet haben, sind die mit einem Leer-String befüllt worden. Der entscheidende Unterschied zwischen den Systemen ist also, wie Sie mit dem nachträglichen Hinzufügen von "NULL"-Werten umgehen. Sie haben in diesem Video nun gesehen, wie Sie nachträglich, bei einer Tabelle, neue Spalten hinzufügen. Das realisieren Sie mit der Anweisung "ALTER TABLE ADD" gefolgt von der Definition der neuen Spalte. Über SQL-Anweisungen können Sie neue Spalten immer nur am Ende der Tabelle anfügen. Wenn Sie eine Spalte weiter vorne einfügen müssen, dann sollten Sie auf grafische Tools zurückgreifen. Diese realisieren ein Workaround, bei dem im Hintergrund die Tabelle neu erstellt wird.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!