Tạo bảng trong MySQL phù hợp với bảng khác?


84

Tôi đang sử dụng MySQL. Tôi có một bảng tên là EMP và bây giờ tôi cần tạo thêm một bảng (EMP_TWO) với cùng một lược đồ, cùng cột và cùng các ràng buộc. Tôi có thể làm cái này như thế nào?


1
Bạn đã thử xuất cấu trúc với một cái gì đó như phpMyAdmin và sau đó chỉ cần thay đổi tên bảng?
jprofitt

Câu trả lời:


176

Để tạo một bảng mới dựa trên cấu trúc / ràng buộc bảng khác, hãy sử dụng:

CREATE TABLE new_table LIKE old_table;     

Để sao chép dữ liệu qua, nếu cần, hãy sử dụng

INSERT INTO new_table SELECT * FROM old_table;  

Tạo tài liệu bảng

Hãy cẩn thận với các ghi chú trên tùy chọn LIKE:

Sử dụng LIKE để tạo một bảng trống dựa trên định nghĩa của một bảng khác, bao gồm bất kỳ thuộc tính cột và chỉ mục nào được xác định trong bảng gốc:

TẠO BẢNG new_table LIKE original_table; Bản sao được tạo bằng cùng một phiên bản của định dạng lưu trữ bảng như bảng gốc. Đặc quyền SELECT là bắt buộc trên bảng gốc.

LIKE chỉ hoạt động cho các bảng cơ sở, không cho các khung nhìn.

TẠO BẢNG ... LIKE không bảo toàn bất kỳ tùy chọn bảng CHỈ SỐ DỮ LIỆU hoặc CHỈ SỐ đã được chỉ định cho bảng gốc hoặc bất kỳ định nghĩa khóa ngoại nào.


6
+1 Đã sử dụng MySQL trong nhiều năm và hoàn toàn không biết rằng bạn có thể sử dụng LIKEtrong một CREATEcâu lệnh.
jprofitt

@jprofitt Tôi chỉ biết vì tôi muốn làm điều này để kiểm tra một cái gì đó trên máy chủ sản xuất (truy vấn quan trọng) vào ngày hôm trước -> rất hữu ích!
Manse

@ManseUK thì sao nếu tôi muốn sao chép một bảng từ một cơ sở dữ liệu và tạo lại nó vào một cơ sở dữ liệu khác?
Yaje

Điều đó thật tuyệt! Cảm ơn ... Thực sự rất hữu ích!
Hassantm

Trong trường hợp ai đó cần cấu trúc cùng một bảng trong cơ sở dữ liệu khác, tất cả các bạn cần làm là CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy adaro

13

Nếu bạn chỉ muốn sao chép Cấu trúc thì hãy sử dụng

create table new_tbl like old_tbl;

Nếu bạn muốn sao chép Cấu trúc cũng như dữ liệu thì hãy sử dụng

create table new_tbl select * from old_tbl;

5

Tạo bảng trong MySQL phù hợp với bảng khác? Trả lời:

CREATE TABLE new_table AS SELECT * FROM old_table;

4

Tại sao bạn không đi như thế này

CREATE TABLE new_table LIKE Select * from Old_Table;   

hoặc Bạn có thể đi bằng cách lọc dữ liệu như thế này

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

Để có cùng một ràng buộc trong bảng mới của bạn, trước tiên bạn sẽ phải tạo lược đồ, sau đó bạn nên đi tìm dữ liệu để tạo lược đồ

CREATE TABLE new_table LIKE Some_other_Table;

1
Có thể sử dụng cả hai likeselect *trong một câu lệnh không? tôi đang gặp lỗi. Ngoài ra hãy kiểm tra câu trả lời này stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118

Tôi không chắc chắn cho mysql
Trikaldarshiii

Một cái gì đó tương tự có sẵn cho sqlserver được chọn * vào <NewTableName> từ <OldTableName>;
Trikaldarshiii
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.