SQL - Klontabellen

Es kann vorkommen, dass Sie eine genaue Kopie einer Tabelle benötigen und die Befehle CREATE TABLE ... oder SELECT ... nicht Ihren Zwecken entsprechen, da die Kopie dieselben Indizes, Standardwerte usw. enthalten muss.

Wenn Sie MySQL RDBMS verwenden, können Sie mit dieser Situation umgehen, indem Sie die folgenden Schritte ausführen:

  • Verwenden Sie den Befehl 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- oder eine SELECT-Anweisung aus.

Beispiel

Probieren Sie das folgende Beispiel aus, um eine Klontabelle für zu erstellen TUTORIALS_TBL deren Struktur ist wie folgt -

Step 1 - Holen Sie sich die vollständige Struktur über die Tabelle.

SQL> SHOW CREATE TABLE TUTORIALS_TBL \G; 
*************************** 1. row *************************** 
      Table: TUTORIALS_TBL 
Create Table: CREATE TABLE 'TUTORIALS_TBL' ( 
  'tutorial_id' int(11) NOT NULL auto_increment, 
  'tutorial_title' varchar(100) NOT NULL default '', 
  'tutorial_author' varchar(40) NOT NULL default '', 
  'submission_date' date default NULL, 
  PRIMARY KEY  ('tutorial_id'), 
  UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
) TYPE = MyISAM 
1 row in set (0.00 sec)

Step 2 - Benennen Sie diese Tabelle um und erstellen Sie eine weitere Tabelle.

SQL> CREATE TABLE `CLONE_TBL` ( 
  -> 'tutorial_id' int(11) NOT NULL auto_increment, 
  -> 'tutorial_title' varchar(100) NOT NULL default '', 
  -> 'tutorial_author' varchar(40) NOT NULL default '', 
  -> 'submission_date' date default NULL, 
  -> PRIMARY KEY  (`tutorial_id'), 
  -> UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author') 
-> ) TYPE = MyISAM; 
Query OK, 0 rows affected (1.80 sec)

Step 3- Nachdem Sie Schritt 2 ausgeführt haben, klonen Sie eine Tabelle in Ihrer Datenbank. Wenn Sie Daten aus einer alten Tabelle kopieren möchten, können Sie dies mit der Anweisung INSERT INTO ... SELECT tun.

SQL> INSERT INTO CLONE_TBL (tutorial_id, 
   ->                        tutorial_title, 
   ->                        tutorial_author, 
   ->                        submission_date) 
   -> SELECT tutorial_id,tutorial_title, 
   ->        tutorial_author,submission_date, 
   -> FROM TUTORIALS_TBL; 
Query OK, 3 rows affected (0.07 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Schließlich haben Sie eine genaue Klontabelle, wie Sie sie haben wollten.