Создать таблицу в MySQL, которая соответствует другой таблице?


85

Я использую MySQL. У меня есть таблица под названием EMP, и теперь мне нужно создать еще одну таблицу (EMP_TWO) с той же схемой, теми же столбцами и теми же ограничениями. Как я могу это сделать?


1
Вы пробовали экспортировать структуру с помощью чего-то вроде phpMyAdmin, а затем просто изменить имя таблицы?
jprofitt 06

Ответы:


178

Чтобы создать новую таблицу на основе другой структуры / ограничений таблиц, используйте:

CREATE TABLE new_table LIKE old_table;     

Чтобы скопировать данные, если необходимо, используйте

INSERT INTO new_table SELECT * FROM old_table;  

Создать табличную документацию

Остерегайтесь примечаний к опции LIKE:

Используйте LIKE для создания пустой таблицы на основе определения другой таблицы, включая любые атрибуты столбцов и индексы, определенные в исходной таблице:

СОЗДАТЬ ТАБЛИЦУ new_table LIKE original_table; Копия создается с использованием той же версии формата хранения таблицы, что и исходная таблица. Для исходной таблицы требуется привилегия SELECT.

LIKE работает только для базовых таблиц, но не для представлений.

CREATE TABLE ... LIKE не сохраняет параметры таблицы DATA DIRECTORY или INDEX DIRECTORY, которые были указаны для исходной таблицы, или какие-либо определения внешнего ключа.


6
+1 Пользуюсь MySQL в течение многих лет и совершенно не подозревал, что вы можете использовать его LIKEв CREATEутверждении.
jprofitt 06

@jprofitt Я знаю только потому, что хотел сделать это, чтобы протестировать что-то на производственном сервере (важный запрос) на днях -> очень полезно!
Manse

@ManseUK что, если я хочу скопировать таблицу из одной базы данных и воссоздать ее в другой базе данных?
Yaje 01

Это замечательно! Спасибо ... Действительно, очень полезно!
Hassantm

Если кому-то нужна такая же структура таблицы в другой базе данных, все, что вам нужно сделать, это CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Джимми Адаро

13

Если вы хотите скопировать только структуру, используйте

create table new_tbl like old_tbl;

Если вы хотите скопировать структуру, а также данные, используйте

create table new_tbl select * from old_tbl;

5

Создать таблицу в MySQL, которая соответствует другой таблице? Ответ:

CREATE TABLE new_table AS SELECT * FROM old_table;

4

Почему бы тебе не пойти вот так

CREATE TABLE new_table LIKE Select * from Old_Table;   

или вы можете фильтровать данные, как это

CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;   

Чтобы иметь такое же ограничение в вашей новой таблице, сначала вам нужно будет создать схему, затем вы должны перейти к данным для создания схемы.

CREATE TABLE new_table LIKE Some_other_Table;

1
Можно ли использовать оба likeи select *в одном заявлении? я получаю ошибку Также проверьте этот ответ stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118

Я не уверен в mysql
Trikaldarshiii

Нечто подобное доступно для sqlserver, который выбирается * в <NewTableName> из <OldTableName>;
Trikaldarshiii
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.