Может возникнуть ситуация, когда вам нужна точная копия таблицы, и 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
Наконец, у вас будет точная таблица клонов, как вы и хотели.