Tabelle in MySQL erstellen, die mit einer anderen Tabelle übereinstimmt?


84

Ich benutze MySQL. Ich habe eine Tabelle namens EMP, und jetzt muss ich eine weitere Tabelle (EMP_TWO) mit demselben Schema, denselben Spalten und denselben Einschränkungen erstellen. Wie kann ich das machen?


1
Haben Sie versucht, die Struktur mit so etwas wie phpMyAdmin zu exportieren und dann nur den Tabellennamen zu ändern?
Jprofitt

Antworten:


176

Um eine neue Tabelle basierend auf einer anderen Tabellenstruktur / -beschränkungen zu erstellen, verwenden Sie:

CREATE TABLE new_table LIKE old_table;     

Verwenden Sie zum Kopieren die Daten bei Bedarf

INSERT INTO new_table SELECT * FROM old_table;  

Erstellen Sie Tabellendokumente

Beachten Sie die Hinweise zur Option LIKE:

Verwenden Sie LIKE, um eine leere Tabelle basierend auf der Definition einer anderen Tabelle zu erstellen, einschließlich aller in der Originaltabelle definierten Spaltenattribute und Indizes:

CREATE TABLE new_table LIKE original_table; Die Kopie wird mit derselben Version des Tabellenspeicherformats wie die Originaltabelle erstellt. Das SELECT-Privileg ist für die ursprüngliche Tabelle erforderlich.

LIKE funktioniert nur für Basistabellen, nicht für Ansichten.

TABELLE ERSTELLEN ... LIKE behält keine Tabellenoptionen für DATA DIRECTORY oder INDEX DIRECTORY bei, die für die ursprüngliche Tabelle angegeben wurden, oder Fremdschlüsseldefinitionen.


6
+1 Ich benutze MySQL seit Jahren und wusste überhaupt nicht, dass Sie es LIKEin einer CREATEAnweisung verwenden können.
Jprofitt

@jprofitt Ich weiß nur, weil ich dies tun wollte, um neulich etwas auf einem Produktionsserver zu testen (wichtige Abfrage) -> sehr nützlich!
Manse

@ManseUK Was ist, wenn ich eine Tabelle aus einer Datenbank kopieren und in eine andere Datenbank neu erstellen möchte?
Yaje

Das ist toll! Danke ... Sehr nützlich!
Hassantm

Falls jemand dieselbe Tabellenstruktur in einer anderen Datenbank benötigt, müssen Sie nur CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy Adaro

13

Wenn Sie nur Struktur kopieren möchten, verwenden Sie

create table new_tbl like old_tbl;

Wenn Sie sowohl Struktur als auch Daten kopieren möchten, verwenden Sie

create table new_tbl select * from old_tbl;

5

Tabelle in MySQL erstellen, die mit einer anderen Tabelle übereinstimmt? Ans:

CREATE TABLE new_table AS SELECT * FROM old_table;

4

Warum gehst du nicht so?

CREATE TABLE new_table LIKE Select * from Old_Table;   

oder Sie können gehen, indem Sie Daten wie folgt filtern

CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;   

Um die gleiche Einschränkung in Ihrer neuen Tabelle zu haben, müssen Sie zuerst ein Schema erstellen und dann Daten für die Schemaerstellung abrufen

CREATE TABLE new_table LIKE Some_other_Table;

1
Ist es möglich, beide likeund select *in einer Anweisung zu verwenden? Ich bekomme einen Fehler. Bitte überprüfen Sie auch diese Antwort stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118

Ich bin nicht sicher für MySQL
Trikaldarshiii

Ähnliches ist für sqlserver verfügbar, das * in <NewTableName> von <OldTableName> auswählt;
Trikaldarshiii
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.