Kopieren Sie Tabellenstrukturen, ohne Daten in MySQL zu kopieren
- Kopieren Sie Tabellenstrukturen, ohne Daten in MySQL zu kopieren
-
Verwenden Sie
CREATE TABLE ... LIKE
, um die Tabellenstruktur in MySQL zu kopieren
Heute werden wir sehen, wie man Tabellenstrukturen kopiert, ohne Daten in MySQL zu kopieren. Wir werden die Anweisung CREATE TABLE ... LIKE
verwenden, um nur die Tabellenstruktur zu kopieren.
Kopieren Sie Tabellenstrukturen, ohne Daten in MySQL zu kopieren
Um es im Detail zu lernen, erstellen wir eine Tabelle mit dem Namen users
, die sich in der test
-Datenbank befindet und eine ID
, USERNAME
und EMAIL
als Attribute hat.
Erstellen Sie eine Tabelle (Benutzer
-Tabelle):
#create a table named 'users' in the 'test' database
CREATE TABLE `test`.`users` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
Als nächstes fügen wir einen Datensatz ein, um zu unterscheiden, dass nur die Struktur der Tabelle in neue Tabellen kopiert wird, nicht die Daten.
INSERT INTO `test`.`users` (USERNAME, EMAIL) VALUES ('mehvish', 'delfstack@example.com');
Verwenden Sie CREATE TABLE ... LIKE
, um die Tabellenstruktur in MySQL zu kopieren
Wir können die Tabellenstruktur, auch Tabellendefinition genannt, kopieren, indem wir die unten angegebene Anweisung CREATE TABLE ... LIKE
ausführen.
# Syntax: CREATE TABLE new_table LIKE original_table;
CREATE TABLE new_user_one LIKE test.users;
Die oben angegebene Abfrage macht die Struktur der Tabelle new_user_one
genau wie die Tabelle users
.
Es kopiert alle Spaltennamen, Datentypen, Standardwerte und alles außer dem Inhalt der Tabelle. Die Tabellendaten werden nicht kopiert.
Wir können die Spaltennamen der neuen Tabelle, ihren Datentyp usw. erneut überprüfen, indem wir die folgende Abfrage verwenden.
SHOW CREATE TABLE test.new_user_one;
Wenn Sie eine Situation haben, in der Sie die Daten haben, können Sie dies auf zwei Arten tun. Kopieren Sie die Daten entweder beim Kopieren der Tabellenstruktur oder fügen Sie sie nach dem Kopieren ein; beide sind unten angegeben.
Daten nach dem Kopieren der Tabellenstruktur kopieren:
# Syntax: INSERT INTO new_table SELECT * FROM original_table;
INSERT INTO new_user_one SELECT * FROM test.users;
Daten kopieren beim Kopieren der Tabellenstruktur:
# Syntax: CREATE TABLE new_table AS SELECT * FROM original_table;
CREATE TABLE new_user_two AS SELECT * FROM test.users;
Zweitens können wir den Inhalt der Tabelle kopieren oder klonen, indem wir die Anweisung CREATE TABLE ... AS SELECT
ausführen. Das Kopieren von Daten kann bei großen Tabellen einige Zeit in Anspruch nehmen.
Denken Sie daran, dass die neue Tabelle (hier new_user_two
) nur die grundlegenden Spaltendefinitionen, Standardwerte und null
-Einstellungen kopiert. Es erbt niemals die Definitionen von AUTO_INCREMENT
und INDEXES
.
Sie können dies mit der folgenden Abfrage bestätigen.
SHOW CREATE TABLE test.new_user_two;