SQL - Tabloları Klonla
Bir tablonun tam bir kopyasına ihtiyaç duyduğunuzda ve CREATE TABLE ... veya SELECT ... komutlarının amaçlarınıza uygun olmadığı bir durum olabilir, çünkü kopya aynı indeksleri, varsayılan değerleri vb. İçermelidir.
MySQL RDBMS kullanıyorsanız, bu durumu aşağıda verilen adımlara uyarak halledebilirsiniz -
Kaynak tablonun yapısını, dizinlerini ve tümünü belirten bir CREATE TABLE deyimi almak için SHOW CREATE TABLE komutunu kullanın.
Tablo adını klon tablosununkiyle değiştirmek ve ifadeyi yürütmek için ifadeyi değiştirin. Bu şekilde tam bir klon tablosuna sahip olacaksınız.
İsteğe bağlı olarak, tablo içeriğinin de kopyalanması gerekiyorsa, bir INSERT INTO veya bir SELECT ifadesi de yayınlayın.
Misal
Aşağıdaki örneği deneyerek bir klon tablosu oluşturmayı deneyin. TUTORIALS_TBL yapısı aşağıdaki gibidir -
Step 1 - Masanın tüm yapısını alın.
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 - Bu tabloyu yeniden adlandırın ve başka bir tablo oluşturun.
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- 2. adımı uyguladıktan sonra, veritabanınızdaki bir tabloyu klonlayacaksınız. Eski bir tablodan veri kopyalamak istiyorsanız, bunu INSERT INTO ... SELECT deyimini kullanarak yapabilirsiniz.
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
Son olarak, istediğiniz gibi tam bir klon tablosuna sahip olacaksınız.