2009-12-02 20 views
94
CREATE TABLE foo SELECT * FROM bar 

kopiert die Tabelle foo und Duplikate es als eine neue Tabelle namens BarTabelle kopieren, ohne das Kopieren von Daten

Wie kann ich das Schema von foo in eine neue Tabelle kopieren genannt bar ohne Kopieren über die Daten als Gut?

+1

, wie diese in SQL Server 2005 zu tun? – Thunder

+0

was bedeutet von bar? –

Antwort

87

Versuchen:

CREATE TABLE foo SELECT * FROM bar LIMIT 0 

Oder:

CREATE TABLE foo SELECT * FROM bar WHERE 1=0 
+2

Ich denke, das zweite Beispiel ist der universelle Weg :-) – Khb

+0

Wie mache ich das gleiche in SQL Server 2005? – Thunder

+3

@Thunder: Versuchen Sie 'Select * in foo von bar wo 1 = 0' – Andomar

17
SHOW CREATE TABLE bar; 

Sie eine Erklärung für diese Tabelle erstellen erhalten, um den Tabellennamen bearbeiten, oder alles, was Sie wollen, und es dann ausführen .

Dies ermöglicht Ihnen, die Indizes zu kopieren und auch die Tabellenerstellung manuell zu optimieren.

Sie können die Abfrage auch innerhalb eines Programms ausführen.

+0

Wie können Sie 'show create table bar' in eine dynamisch ausführbare Anweisung konvertieren? – Pacerier

+0

Das Ergebnis von 'show create table bar' ist bereits ausführbar, wenn das Skript die Berechtigung zum Erstellen von Tabellen hat, können Sie es analysieren und dann auch alter table-Anweisungen ausführen. –

+0

Sie Sir, sind die Meister des Universums. Danke – bonitzenator

272

Versuchen

CREATE TABLE foo LIKE bar; 

so die Schlüssel und Indizes kopiert werden über als gut.

Documentation

+26

Dies ist eine bessere Antwort, da dies Indizes auch kopiert! – Chaitan

+1

DAS IST DER BESTE WEG! DANKE, MANN. – Aldee

+1

Es ist viel besser, aber kopiert keine Fremdschlüssel. –

Verwandte Themen