MySQLi - Klontabellen
Es kann vorkommen, dass Sie eine genaue Kopie einer Tabelle und CREATE TABLE benötigen ... SELECT passt nicht zu Ihren Zwecken, da die Kopie dieselben Indizes, Standardwerte usw. enthalten muss.
Sie können mit dieser Situation umgehen, indem Sie die folgenden Schritte ausführen:
Verwenden Sie SHOW CREATE TABLE, um eine CREATE TABLE-Anweisung abzurufen, die die Struktur, die Indizes und alle Elemente der Quelltabelle angibt.
Ändern Sie die Anweisung, um den Tabellennamen in den Namen der Klontabelle zu ändern, und führen Sie die Anweisung aus. Auf diese Weise erhalten Sie eine genaue Klontabelle.
Wenn Sie auch den Tabelleninhalt kopieren möchten, geben Sie optional auch eine INSERT INTO ... SELECT-Anweisung aus.
Beispiel
Probieren Sie das folgende Beispiel aus, um eine Klontabelle für zu erstellen tutorials_inf.
Schritt 1
Erhalten Sie eine vollständige Struktur über die Tabelle.
mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
`id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `AUTHOR_INDEX` (`name`),
UNIQUE KEY `NAME_INDEX` (`name`),
KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)
ERROR: No query specified
Schritt 2
Benennen Sie diese Tabelle um und erstellen Sie eine weitere Tabelle.
mysql> CREATE TABLE tutorials_clone(
-> id int(11) NOT NULL,
-> name varchar(20) NOT NULL,
-> PRIMARY KEY (id),
> UNIQUE KEY AUTHOR_INDEX (name),
-> UNIQUE KEY NAME_INDEX (name),
-> KEY id (id));
Query OK, 0 rows affected (1.80 sec)
Schritt 3
Nach dem Ausführen von Schritt 2 erstellen Sie eine Klontabelle in Ihrer Datenbank. Wenn Sie Daten aus einer alten Tabelle kopieren möchten, können Sie dies mit der Anweisung INSERT INTO ... SELECT tun.
mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4 Duplicates: 0 Warnings: 0
Schließlich haben Sie genau die Klontabelle, die Sie haben wollten.