Utworzyć tabelę w MySQL, która pasuje do innej tabeli?

85

Używam MySQL. Mam tabelę o nazwie EMP, a teraz muszę utworzyć jeszcze jedną tabelę (EMP_TWO) z tym samym schematem, tymi samymi kolumnami i tymi samymi ograniczeniami. Jak mogę to zrobić?

user1016403
źródło
1
Czy próbowałeś wyeksportować strukturę za pomocą czegoś takiego jak phpMyAdmin, a następnie po prostu zmienić nazwę tabeli?
jprofitt

Odpowiedzi:

178

Aby utworzyć nową tabelę na podstawie innej struktury / ograniczeń tabel, użyj:

CREATE TABLE new_table LIKE old_table;     

Aby w razie potrzeby skopiować dane, użyj

INSERT INTO new_table SELECT * FROM old_table;  

Twórz tabele

Uważaj na uwagi dotyczące opcji LIKE:

Użyj funkcji LIKE, aby utworzyć pustą tabelę na podstawie definicji innej tabeli, w tym wszelkich atrybutów kolumn i indeksów zdefiniowanych w oryginalnej tabeli:

UTWÓRZ TABELĘ new_table LIKE original_table; Kopia jest tworzona przy użyciu tej samej wersji formatu przechowywania tabeli, co oryginalna tabela. Do oryginalnej tabeli wymagane jest uprawnienie SELECT.

LIKE działa tylko dla tabel podstawowych, a nie dla widoków.

Funkcja CREATE TABLE ... LIKE nie zachowuje żadnych opcji tabel DATA DIRECTORY ani INDEX DIRECTORY, które zostały określone dla oryginalnej tabeli, ani żadnych definicji kluczy obcych.

Manse
źródło
6
+1 Używam MySQL od lat i nie zdawałam sobie sprawy, że można użyć LIKEw CREATEoświadczeniu.
jprofitt
@jprofitt Wiem tylko dlatego, że chciałem to zrobić, aby kiedyś przetestować coś na serwerze produkcyjnym (ważne zapytanie) -> bardzo przydatne!
Manse
@ManseUK a co jeśli chcę skopiować tabelę z jednej bazy danych i ponownie ją utworzyć do innej?
Yaje
To jest świetne! Dzięki ... Naprawdę bardzo przydatne!
Hassantm
W przypadku, gdy ktoś potrzebuje taką samą strukturę tabeli w innej bazie danych, wszystko co musisz zrobić to CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy Adaro
13

Jeśli chcesz skopiować tylko Strukturę, użyj

create table new_tbl like old_tbl;

Jeśli chcesz skopiować Strukturę, a także dane, użyj

create table new_tbl select * from old_tbl;
Karan
źródło
5

Utworzyć tabelę w MySQL, która pasuje do innej tabeli? Odp:

CREATE TABLE new_table AS SELECT * FROM old_table;
lipak
źródło
4

Dlaczego nie pójdziesz w ten sposób

CREATE TABLE new_table LIKE Select * from Old_Table;   

lub Możesz przejść, filtrując dane w ten sposób

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

Aby mieć to samo ograniczenie w nowej tabeli, musisz najpierw utworzyć schemat, a następnie przejść do danych do utworzenia schematu

CREATE TABLE new_table LIKE Some_other_Table;
Trikaldarshiii
źródło
1
Czy można użyć obu likeiw select *jednym zestawieniu? otrzymuję błąd. Sprawdź również tę odpowiedź stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118
Nie jestem pewien dla mysql
Trikaldarshiii
Coś podobnego jest dostępne dla serwera sql, który jest wybierany * do <NewTableName> z <OldTableName>;
Trikaldarshiii