SQL Grundkurs 1: Die Sprache erlernen

Datentyp einer Spalte ändern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Doch Zahl und nicht Text? Auch nachträglich können Sie Datentypen von Tabellenspalten noch ändern, allerdings müssen Sie dabei die in diesem Video vorgestellten Regeln beachten.

Transkript

Datentypen von bestehenden Spalten können auch wieder verändert werden. Ich erzeuge hier die Tabelle "Patienten" mit den Spalten: ID, Nachname, Vorname, Geschlecht, Sozialversicherungsnummer und Geburtsdatum. Solange eine Tabelle leer ist, kann ich jeden Datentyp ändern. Um einen Datentyp zu ändern, benötige ich die Anweisung "AlterTable" gefolgt vom Namen der Tabelle, mit dem Zusatz "AlterColumn" beim Microsoft SQL Server. Dann gebe ich den Namen der betroffenen Spalte an, z.B. Geschlecht, und ich ändere das z.B. auf Tinyint, also einen numerischen Datentyp. Ich führe die Anweisung aus, und es hat funtioniert. Wenn ich jetzt nachträglich diese Spalte als "NotNull" Spalte definieren möchte, dann mache ich beim SQL Server folgendes: Ich ändere den Datentyp in denselben, der er ohnehin schon ist, aber ergänze zusätzlich die Spalteneigenschaft "NotNull". Wenn ich diese Anweisung ausführe, wird diese Spalte als "NotNull" definiert. Das funktioniert natürlich nur, wenn die Tabelle entweder leer ist, oder in allen Zeilen einen Wert enthält. Sonst kann diese Änderung nicht vollzogen werden. Genau das Gegenteil realisiert man, um den Zusatz "NotNull" wieder zu entfernen, also um aus einer "NotNull"-Spalte wieder eine nullable Spalte zu machen. Man weist ihr denselben Datentyp zu, den sie ohnehin schon hat, aber lässt diesmal das "NotNull" weg. Damit wird diese Spalteneigenschaft beim SQL Server entfernt. Nun ändere ich den Datentyp wieder in seinen Ausgangswert zurück, um Datensätze einzufügen: "Character 1" war der ursprüngliche Datentyp. Was ich hier vergessen habe, ist, den Namen der Spalte einzutragen. Das hole ich jetzt nach, bzw., es wird das Falsche ausgebessert. Das korrigiere ich nun, und schon habe ich den Datentyp wieder geändert. Ich füge diese zwei Datensätze in die Tabelle ein, und wir kontrollieren den Inhalt. Diese zwei Datensätze sind nun enthalten. Was passiert, wenn ich jetzt noch einmal versuche, den Datentyp dieser Spalte auf Tinyinteger zu ändern? Diesmal schlägt diese Änderung fehl, weil der Zieldatentyp mit den vorhandenen Inhalten nicht kompatibel ist. Generell gilt folgendes, wenn Tabellen schon Datensätze enthalten: Ich kann einen Datentyp immer ändern, indem ich einen größeren, weiteren Wert definiere. Ich kann z.B. einen Character mit der Länge 5 jederzeit auf Länge 10 vergrößern. Ich kann auch einen Datentyp gänzlich ändern, z.B. einen Character in einen Datumsdatentyp, wenn die enthaltenen Werte problemlos in einen Datumswert konvertiert werden können. Wenn also die Konvertierung zulässig ist, dann wird die Änderung auch durchgeführt. Widrigenfalls schlägt sie fehl. In einer leeren Tabelle kann jede Änderung vorgenommen werden. Systemisch wird sichergestellt, dass es bei der Änderung eines Datentyps zu keinem Datenverlust kommt. Würde es zu einem Datenverlust kommen, wird die Änderung nicht durchgeführt. Ich kann also jederzeit z.B. diesen "Character 1" in einen größeren Datentyp ändern. Das mache ich jetzt, indem ich hier als "var character" "100" definiere. Wie ändert sich die Syntax bei MySQL bzw. Oracle? Geringfügig. An die Stelle von "AlterColumn" tritt hier das Schlüsselwort "Modify". Ich habe hier denselben Code ergänzt und Sie sehen, hier wird "Modify" verwendet, ansonsten ist alles gleich. Ein Hinweis noch zur Oracle Variante: Bei Oracle ist "NotNull" keine Spalteneigenschaft, sondern ein Constraint. D.h., wenn Sie erstmalig eine Spalte als "NotNull" definieren, dann wird dieses Constraint im Hintergrund erzeugt. Daher können Sie "NotNull" aber nicht auf demselben Weg wieder entfernen, sondern Sie müssen es löschen wie ein Constraint. Informationen dazu finden Sie im Video für Constraints. In diesem Video haben Sie gesehen, wie Sie den Datentyp einer bestehenden Spalte ändern können. Bei MySQL und bei Oracle verwenden Sie dazu die Anweisung "AlterTable", "Modify". Beim Microsoft SQL Server verwenden Sie "AlterTable", "AlterColumn". Die Systeme lassen jegliche Änderung zu, die bei vorhandenen Daten berücksichtigt werden kann. Durch Änderung eines Datentyps kann es nicht zum Datenverlust kommen, denn in diesem Fall würde die Änderung nicht durchgeführt werden.

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!