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ć?
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.
+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
createtable new_tbl like old_tbl;
Jeśli chcesz skopiować Strukturę, a także dane, użyj
Odpowiedzi:
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:
źródło
LIKE
wCREATE
oświadczeniu.CREATE TABLE new_db.new_table LIKE old_db.old_table
:)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;
źródło
Utworzyć tabelę w MySQL, która pasuje do innej tabeli? Odp:
CREATE TABLE new_table AS SELECT * FROM old_table;
źródło
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;
źródło
like
iwselect *
jednym zestawieniu? otrzymuję błąd. Sprawdź również tę odpowiedź stackoverflow.com/questions/10147565/create-table-like-a1-as-a2