В ходе разработки мы можем столкнуться с ситуацией, когда нам необходима точная копия таблицы, а стандартный способ с использованием CREATE TABLE … SELECT … нам не подходит, так как копия должны включать в себя такие же индексы, значения по умолчанию и т.д.
Для того, чтобы справиться с такой задачей, мы должны выполнить следующие действия:
- Использовать команду SHOW CREATE TABLE для получения выражения CREATE TABLE, которое определяет исходники структуры, индексов и т.д. таблицы.
- Изменить выражение для изменения имени таблицы, которая будет клоном исходной и выполнить данный запрос.
Пример:
Предположим, что у нас есть таблица developers, которая имеет следующую структуру:
mysql> SHOW CREATE TABLE developers;
+------------+-----------------------------------------+
| Table | Create Table | |
+------------+-----------------------------------------+
| developers | CREATE TABLE `developers` (
`ID` int(11) NOT NULL,
`NAME` varchar(100) NOT NULL,
`SPECIALTY` varchar(100) DEFAULT NULL,
`EXPERIENCE` int(11) NOT NULL,
`SALARY` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------+-----------------------------------------+
1 row in set (0.00 sec)
Теперь меняем имя таблицы и создаём точную копию исходной:
CREATE TABLE `developers_clone` (
`ID` int(11) NOT NULL,
`NAME` varchar(100) NOT NULL,
`SPECIALTY` varchar(100) DEFAULT NULL,
`EXPERIENCE` int(11) NOT NULL,
`SALARY` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
В результате мы получим талицу developers_clone, имеющую следующую структуру:
mysql> DESC developers_clone;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | NULL | |
| NAME | varchar(100) | NO | | NULL | |
| SPECIALTY | varchar(100) | YES | | NULL | |
| EXPERIENCE | int(11) | NO | | NULL | |
| SALARY | int(11) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
На этом мы заканчиваем изучение способа создания точной копии структуры таблицы.
В следующей статье мы рассмотрим под-запросы.