Учебники

MySQLi — таблицы клонов

Может возникнуть ситуация, когда вам нужна точная копия таблицы, и CREATE TABLE … SELECT не соответствует вашим целям, поскольку копия должна содержать те же индексы, значения по умолчанию и т. Д.

Вы можете справиться с этой ситуацией, следуя шагам —

  • Используйте SHOW CREATE TABLE, чтобы получить инструкцию CREATE TABLE, которая определяет структуру исходной таблицы, индексы и все.

  • Измените оператор, чтобы изменить имя таблицы на имя таблицы клонов, и выполните оператор. Таким образом, у вас будет точная таблица клонов.

  • По желанию, если вам также необходимо скопировать содержимое таблицы, введите оператор INSERT INTO … SELECT.

Используйте SHOW CREATE TABLE, чтобы получить инструкцию CREATE TABLE, которая определяет структуру исходной таблицы, индексы и все.

Измените оператор, чтобы изменить имя таблицы на имя таблицы клонов, и выполните оператор. Таким образом, у вас будет точная таблица клонов.

По желанию, если вам также необходимо скопировать содержимое таблицы, введите оператор INSERT INTO … SELECT.

пример

Попробуйте следующий пример, чтобы создать таблицу клонов для tutorials_inf .

Шаг 1

Получить полную структуру о таблице.

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

Шаг 2

Переименуйте эту таблицу и создайте другую таблицу.

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)

Шаг 3

После выполнения шага 2 вы создадите таблицу клонов в своей базе данных. Если вы хотите скопировать данные из старой таблицы, вы можете сделать это с помощью оператора INSERT INTO … SELECT.

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

Наконец, у вас будет точная таблица клонов, как вы и хотели.