Створити таблицю в MySQL, яка відповідає іншій таблиці?


84

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


1
Ви пробували експортувати структуру чимось на зразок phpMyAdmin, а потім просто змінювати назву таблиці?
jprofitt

Відповіді:


176

Щоб створити нову таблицю на основі іншої структури / обмежень таблиць, використовуйте:

CREATE TABLE new_table LIKE old_table;     

Щоб скопіювати дані, якщо потрібно, використовуйте

INSERT INTO new_table SELECT * FROM old_table;  

Створення табличних документів

Остерігайтеся приміток щодо опції LIKE:

Використовуйте LIKE для створення порожньої таблиці на основі визначення іншої таблиці, включаючи будь-які атрибути стовпців та індекси, визначені у вихідній таблиці:

СТВОРИТИ ТАБЛИЦЮ new_table ЯК оригінальну_таблицю; Копія створюється з використанням тієї ж версії формату зберігання таблиці, що і вихідна таблиця. Привілей SELECT потрібно в оригінальній таблиці.

LIKE працює лише для базових таблиць, а не для подань.

СТВОРИТИ ТАБЛИЦЮ ... LIKE не зберігає жодних параметрів таблиці ДАНИХ ДІЯЛЬНОСТІ або ІНДЕКСНОГО ДОВІДНИКА, які були вказані для вихідної таблиці, або будь-яких визначень зовнішнього ключа.


6
+1 Роками використовую MySQL і абсолютно не підозрюю, що можна використовувати LIKEу CREATEзаяві.
jprofitt

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

@ManseUK що, якщо я хочу скопіювати таблицю з однієї бази даних і створити її в іншій базі даних?
Yaje

Це чудово! Дякую ... Дійсно дуже корисно!
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.