MySQLi - Tabloları klonla

Bir tablonun tam bir kopyasına ihtiyaç duyduğunuzda ve CREATE TABLE ... SELECT'in amacınıza uygun olmadığı bir durum olabilir, çünkü kopya aynı indeksleri, varsayılan değerleri vb. İçermelidir.

Bu durumu aşağıdaki adımları izleyerek halledebilirsiniz -

  • Kaynak tablonun yapısını, dizinlerini ve tümünü belirten bir CREATE TABLE ifadesi almak için SHOW CREATE TABLE kullanın.

  • Tablo adını klon tablosununkiyle değiştirmek ve ifadeyi yürütmek için ifadeyi değiştirin. Bu şekilde, tam klon tablosuna sahip olacaksınız.

  • İsteğe bağlı olarak, tablo içeriğinin de kopyalanması gerekiyorsa, bir INSERT INTO ... SELECT deyimi de yayınlayın.

Misal

Aşağıdaki örneği deneyerek bir klon tablosu oluşturmayı deneyin. tutorials_inf.

Aşama 1

Tablo hakkında eksiksiz bir yapı edinin.

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

Adım 2

Bu tabloyu yeniden adlandırın ve başka bir tablo oluşturun.

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)

Aşama 3

2. adımı gerçekleştirdikten sonra, veritabanınızda bir klon tablosu oluşturacaksınız. Eski tablodan veri kopyalamak istiyorsanız, bunu INSERT INTO ... SELECT deyimini kullanarak yapabilirsiniz.

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

Son olarak, istediğiniz gibi tam klon tablosuna sahip olacaksınız.