MYSQL – ÄNDERN, LÖSCHEN, UMBENENNEN, ÄNDERN

⚡ Intelligente Zusammenfassung

ALTER, DROP, RENAME und MODIFY sind die MySQL Befehle, die eine Datenbank umstrukturieren, während sie bereits in Gebrauch ist. Sie fügen Objekte wie Tabellen und Spalten hinzu, entfernen sie, benennen sie um und definieren sie neu, ohne die bereits gespeicherten Zeilen zu verwerfen.

  • ️ ALTER-Befehl: ALTER TABLE definiert ein bereits existierendes Objekt neu, sodass ein Live-Schema neue Anforderungen ohne Neuaufbau aufnimmt.
  • ➕ SPALTE HINZUFÜGEN: ALTER TABLE ADD COLUMN fügt ein Feld hinzu, und die vorhandenen Zeilen behalten alle Werte, die sie bereits enthielten.
  • 🗑️ DROP-Befehl: Mit dem Befehl `DROP` werden Datenbanken, Tabellen oder einzelne Spalten dauerhaft gelöscht (mittels `ALTER TABLE DROP COLUMN`).
  • 🔁 Befehl zum Umbenennen: Mit RENAME TABLE wird nur der Name der Tabelle geändert, die darin enthaltenen Daten gehen nicht verloren.
  • ️ Schlüsselwort ändern: Mit CHANGE wird eine Spalte umbenannt und ihr Typ sowie ihre Einschränkungen in einer einzigen Anweisung neu definiert, daher sind beide Spaltennamen erforderlich.
  • 🧩 Schlüsselwort ändern: MODIFY ändert den Typ und die Einschränkungen, während keeping Der Name ist die sicherere Wahl für eine reine Textbearbeitung.
  • 📍 NACH dem Schlüsselwort: AFTER platziert eine neu hinzugefügte Spalte an einer ausgewählten Position anstatt am Ende der Tabelle.

MySQL ÄNDERN, LÖSCHEN, UMBENENNEN und MODIFIZIEREN

Was ist der ALTER-Befehl in MySQL?

Das ALTER Der Befehl modifiziert eine bestehende Datenbank, Tabelle, Ansicht oder ein anderes Datenbankobjekt, das im Laufe des Lebenszyklus einer Datenbank geändert werden muss. Er ermöglicht die Weiterentwicklung eines Schemas, nachdem es bereits erstellt und mit Daten gefüllt wurde.

Geschäftsanforderungen sind selten statisch, und ein Datenbankdesign muss sich entsprechend anpassen. Angenommen, das Design für die Myflix-Datenbank ist implementiert und die Benutzer arbeiten damit, und erst dann bemerkt das Team, dass wichtige Informationen fehlen. Niemand möchte die bestehenden Datensätze verlieren; die neuen Informationen sollen einfach daneben gespeichert werden.

ALTER deckt genau diese Situation ab. Es kann den Datentyp eines Feldes von Zeichenkette in Zahl ändern, ein Feld umbenennen oder einer Tabelle eine völlig neue Spalte hinzufügen, während die bereits in der Tabelle gespeicherten Daten unverändert bleiben.

Nachdem der Zweck des Befehls festgelegt wurde, besteht der nächste Schritt in der Syntax, die ihn ausführt.

MySQL ALTER-Syntax

Die grundlegende Syntax zum Hinzufügen einer Spalte zu einer bereits existierenden Tabelle wird im Folgenden dargestellt.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

HIER KLICKEN

  • „ALTER TABLE `table_name`“ ist der Befehl, der es sagt MySQL Server, um die Tabelle mit dem Namen „table_name“ zu ändern.
  • „Spalte „Spaltenname“ „Datentyp“ hinzufügen“ ist der Befehl, der es sagt MySQL Der Server soll eine neue Spalte mit dem Namen `column_name` und dem Datentyp `data_type` hinzufügen.

Angenommen, Myflix hat Online-Abrechnung und -Zahlung eingeführt. Um dies zu ermöglichen, muss der Mitgliedertabelle ein Feld für die Kreditkartennummer hinzugefügt werden. Bevor Sie Änderungen vornehmen, sollten Sie sich die aktuelle Tabellenstruktur ansehen. Das untenstehende Skript erledigt dies.

SHOW COLUMNS FROM `members`;
Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
ganze Namen varchar(350) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

💡 Hinweis zu int(11): Die Zahl in Klammern gibt lediglich die Anzeigebreite an. MySQL Version 8.0.17 hat die Verwendung für Integer-Typen als veraltet markiert, daher meldet ein moderner Server diese Spalte einfach als intDie Speichergröße bleibt unverändert.

Das unten gezeigte Skript fügt das neue Feld zur Mitgliedertabelle hinzu.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Die Ausführung dieses Skripts für die Datenbank myflixdb fügt der Tabelle „members“ eine Spalte namens „credit_card_number“ mit dem Datentyp VARCHAR hinzu. Die erneute Ausführung des Skripts „SHOW COLUMNS“ liefert folgendes Ergebnis.

Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
ganze Namen varchar(350) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL
Kreditkartennummer varchar(25) JA NULL

Die hervorgehobene Zeile bestätigt, dass credit_card_number zur Tabelle members hinzugefügt wurde, und die bereits in den anderen Spalten vorhandenen Daten durch die Hinzufügung nicht verändert wurden.

Das Hinzufügen einer Spalte ist nur die halbe Miete. Ein Schema muss auch nicht mehr benötigte Objekte entfernen; dafür verwendet man den Befehl DROP.

Was ist der DROP-Befehl in MySQL?

Der Befehl DROP löscht ein Objekt endgültig. Er wird verwendet, um

  1. Eine Datenbank löschen MySQL Server.
  2. Ein Objekt wie eine Tabelle oder eine Spalte aus einer Datenbank löschen.

⚠️ Warnung: DROP ist nicht rückgängig zu machen. Weder das Objekt noch die darin enthaltenen Zeilen können ohne Backup wiederhergestellt werden. Führen Sie daher zuerst eine SELECT-Abfrage für das Ziel durch und überprüfen Sie das Backup.

Dropping eine Säule

Im obigen ALTER-Beispiel wurde der Tabelle „members“ eine Spalte namens „credit_card_number“ hinzugefügt. Angenommen, die Online-Abrechnungsfunktion wird verschoben und diese Spalte soll wieder entfernt werden. Das folgende Skript erledigt dies.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Durch Ausführen des Skripts wird die Spalte credit_card_number aus der Tabelle members entfernt. Die erneute Auflistung der Spalten bestätigt das Ergebnis.

SHOW COLUMNS FROM `members`;
Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
ganze Namen varchar(350) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

Die Kreditkartennummer ist nicht mehr in der Feldliste enthalten.

TROPFENTABELLE

Die Syntax zum Löschen einer gesamten Tabelle aus einer Datenbank lautet wie folgt.

DROP TABLE `sample_table`;

Angewendet auf ein reales Objekt, sieht die Aussage folgendermaßen aus.

DROP TABLE `categories_archive`;

Durch die Ausführung dieses Befehls werden die Tabelle mit dem Namen `categories_archive` und alle darin enthaltenen Zeilen aus der Datenbank gelöscht.

DATENBANK VERLIEREN

Dasselbe Schlüsselwort entfernt ein gesamtes Schema. Durch Hinzufügen von IF EXISTS wird der Fehler unterdrückt, dass MySQL wird ausgelöst, wenn das Ziel bereits nicht mehr existiert, was in Skripten nützlich ist, die mehr als einmal ausgeführt werden.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Das Entfernen eines Objekts ist endgültig. Wenn das Objekt selbst erhalten bleiben soll und nur sein Name falsch ist, ist der Befehl RENAME das richtige Werkzeug.

Was ist der Befehl RENAME in MySQL?

Mit dem Befehl RENAME wird der Name eines vorhandenen Datenbankobjekts, z. B. einer Tabelle oder einer Spalte, in einen neuen Namen geändert. Durch das Umbenennen einer Tabelle gehen keine der darin enthaltenen Daten verloren.

Der Befehl hat folgende grundlegende Syntax.

RENAME TABLE `current_table_name` TO `new_table_name`;

Um die Tabelle movierentals in movie_rentals umzubenennen, wird das unten stehende Skript verwendet.

RENAME TABLE `movierentals` TO `movie_rentals`;

Durch die Ausführung wird die Tabelle `movierentals` in `movie_rentals` umbenannt. Da es sich bei der Umbenennung lediglich um eine Änderung der Bezeichnung handelt, stellt die umgekehrte Anweisung den ursprünglichen Namen wieder her.

RENAME TABLE `movie_rentals` TO `movierentals`;

Der Befehl RENAME TABLE dient zum Ändern des Namens einer Tabelle. ÜberblickUnd die Veränderung dessen, was es enthält, ist die Aufgabe des Schlüsselworts CHANGE.

Schlüsselwort ändern

Das Schlüsselwort CHANGE ermöglicht Ihnen Folgendes:

  1. Ändern Sie den Namen einer Spalte
  2. Ändern Sie den Datentyp der Spalte
  3. Ändern Sie die Spaltenbeschränkungen

Betrachten wir ein Beispiel. Das Feld full_names in der Tabelle members ist vom Datentyp varchar mit einer Breite von 350, wie das folgende Skript bestätigt.

SHOW COLUMNS FROM `members`;
Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
ganze Namen varchar(350) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

Angenommen, die Anforderung lautet:

  1. Ändern Sie den Feldnamen von „full_names“ in „fullname“.
  2. Ändern Sie es in den Datentyp char mit einer Breite von 250.
  3. Fügen Sie eine NOT NULL-Einschränkung hinzu

Alle drei Änderungen werden durch eine einzige CHANGE-Anweisung durchgeführt.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Die Ausführung gegen myflixdb und das anschließende Ausführen des Skripts SHOW COLUMNS liefert folgendes Ergebnis.

Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
vollständiger name Zeichen (250) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

Die Spalte heißt nun fullname, enthält Zeichen vom Typ char(250) und weist NULL-Werte zurück.

Schlüsselwort ändern

Das Schlüsselwort MODIFY ermöglicht Ihnen Folgendes:

  1. Ändern Sie den Datentyp der Spalte.
  2. Ändern Sie die Spaltenbeschränkungen

Im obigen CHANGE-Beispiel musste der Feldname zweimal angegeben werden, obwohl die Umbenennung nur ein Teil des Ziels war. Das Weglassen des Feldnamens in einer CHANGE-Anweisung führt zu einem Fehler. Wenn nur der Datentyp und die Einschränkungen angepasst werden müssen und der Name unverändert bleiben soll, erledigt MODIFY dies mit nur einer Erwähnung der Spalte.

Das unten stehende Skript ändert die Breite des Feldes „fullname“ von 250 auf 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Die Ausführung gegen myflixdb und das anschließende Ausführen des Skripts SHOW COLUMNS liefert das unten gezeigte Ergebnis.

Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
vollständiger name Zeichen (50) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

⚠️ Warnung: Das Verengen einer Spalte kürzt Daten, die nicht mehr hineinpassen. Jeder Name, der länger als 50 Zeichen ist, wird durch diese Anweisung abgeschnitten. Überprüfen Sie daher den längsten vorhandenen Wert mit einem SELECT Abfrage vor dem Verkleinern eines Feldes.

SPALTE ÄNDERN vs. MODIFIZIEREN vs. UMBENENNEN

Die drei Schlüsselwörter überschneiden sich, und die Wahl des falschen Schlüssels ist die häufigste Fehlerquelle in diesem Bereich. Die folgende Tabelle stellt sie einander gegenüber.

Stichwort (Keyword) Benennt die Spalte um Ändert Typ und Einschränkungen Alter Name erforderlich Typische Verwendung
ÄNDERN Ja Ja Ja, und der neue Name Umbenennen und in einer Anweisung neu definieren
ÄNDERN Nein Ja Name einmal vergeben Eine Spalte verbreitern, verengen oder neu formatieren
SPALTE UMBENENNEN Ja Nein Ja, und der neue Name Nur umbenennen, von MySQL 8.0 weiter

MySQL Version 8.0 fügte eine vierte Option für den einfachsten Fall hinzu: eine Umbenennung ohne jegliche Neudefinition.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Typ und Name sind festgelegt. Die verbleibende Frage ist, wo eine neue Spalte in der Tabelle platziert wird; dies wird durch das Schlüsselwort AFTER gesteuert.

NACH dem Schlüsselwort

Standardmäßig wird eine mit ALTER TABLE hinzugefügte Spalte am Ende der Tabelle eingefügt. Um sie stattdessen an einer bestimmten Position zu platzieren, wird der ALTER-Befehl mit dem Schlüsselwort AFTER kombiniert.

Das unten stehende Skript fügt „date_of_registration“ direkt nach date_of_birth in die Tabelle „members“ ein.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Die Ausführung gegen myflixdb und das anschließende Ausführen des Skripts SHOW COLUMNS liefert das unten gezeigte Ergebnis.

Feld Typ Null Wesentliche Standard Extra
Mitgliedsnummer int (11) NEIN PRI NULL auto_inkrement
vollständiger name Zeichen (50) NEIN NULL
Geschlecht varchar(6) JA NULL
Geburtsdatum Datum JA NULL
Datum der Registrierung Datum JA NULL
physikalische Adresse varchar(255) JA NULL
Postanschrift varchar(255) JA NULL
Kontaktnummer varchar(75) JA NULL
E-Mail varchar(255) JA NULL

Die hervorgehobene Zeile ist die Spalte, die nach date_of_birth hinzugefügt wurde. Das Schlüsselwort FIRST funktioniert analog und verschiebt die neue Spalte an den Anfang der Tabelle.

Häufig gestellte Fragen

Nein. DDL-Anweisungen wie ALTER, DROP und RENAME führen implizit zu einem Commit. MySQLDaher können offene Transaktionen diese nicht rückgängig machen. Die Wiederherstellung aus einer Sicherung ist der einzige Weg zurück.

Das hängt von der jeweiligen Änderung ab. Viele InnoDB-Änderungen werden online ausgeführt und erlauben gleichzeitige Lese- und Schreibvorgänge, während andere die gesamte Tabelle kopieren und Schreibvorgänge blockieren. Fügen Sie ALGORITHM- und LOCK-Klauseln hinzu, um festzulegen, welche Aktionen zulässig sind.

DROP entfernt das Objekt selbst. TRUNCATE leert eine Tabelle, behält aber deren Struktur bei. LÖSCHEN Entfernt ausgewählte Zeilen und kann mit einer WHERE-Klausel gefiltert werden.

In der Regel ja. KI-Assistenten, die in Clients wie beispielsweise integriert sind MySQL Werkbank Eine Anfrage wie „Füge nach date_of_birth eine Spalte mit optionalen Datumswerten hinzu“ soll in eine gültige Syntax umgewandelt werden. RevÜberprüfen Sie die generierte Anweisung anhand des Live-Schemas, bevor Sie sie ausführen.

Nur teilweise. KI-gestützte Prüfwerkzeuge erkennen zwar offensichtliche Risiken, wie beispielsweise eine gelöschte Spalte, die in einer Abfrage noch aufgeführt ist, oder einen eingeschränkten Datentyp, der Daten abschneidet. Da sie aber nicht jeden Aufrufer überprüfen können, ist ein Testlauf weiterhin notwendig.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: