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ć?


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.


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;

5

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

CREATE TABLE new_table AS SELECT * FROM old_table;

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;

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.