Bạn có thể sao chép hoặc "bản sao" nội dung của bảng bằng cách thực thi câu lệnh
INSERT INTO new_table SELECT * FROM original_table;
3:CREATE TABLE new_table AS SELECT * FROM original_table;
Hãy cẩn thận khi sử dụng điều này để sao chép các bàn lớn. Điều này có thể mất rất nhiều thời gian và tài nguyên máy chủ.
Cũng lưu ý rằng
INSERT INTO new_table SELECT * FROM original_table;
4 chỉ kế thừa các định nghĩa cột cơ bản, cài đặt null và giá trị mặc định của INSERT INTO new_table SELECT * FROM original_table;
5. Nó không kế thừa các chỉ mục và định nghĩa tự động_increment.Để kế thừa tất cả các định nghĩa bảng, hãy sử dụng cú pháp
INSERT INTO new_table SELECT * FROM original_table;
6:CREATE TABLE new_table LIKE original_table;
Điều này làm cho cấu trúc của
INSERT INTO new_table SELECT * FROM original_table;
4 giống hệt như INSERT INTO new_table SELECT * FROM original_table;
5, nhưng không sao chép dữ liệu. Để sao chép dữ liệu, bạn sẽ cần INSERT INTO new_table SELECT * FROM original_table;
9:INSERT INTO new_table SELECT * FROM original_table;
Một lần nữa, hãy cẩn thận khi làm điều này với các bàn lớn.
Mở rộng câu trả lời này, người ta có thể sử dụng một quy trình được lưu trữ:
CALL duplicate_table['tableName'];
Sẽ dẫn đến một bảng trùng lặp gọi là
CALL duplicate_table['tableName'];
0 nếu được gọi khiSELECT NOW[];
results:
2018-10-22 23:59:59
Thực hiện
DELIMITER $$
CREATE PROCEDURE duplicate_table[IN tableName VARCHAR[255]]
BEGIN
DECLARE schemaName VARCHAR[255] DEFAULT SCHEMA[];
DECLARE today VARCHAR[14] DEFAULT REPLACE[REPLACE[REPLACE[NOW[], '-', ''], ' ', ''], ':', '']; -- update @ year 10000
DECLARE backupTableName VARCHAR[255] DEFAULT CONCAT[tableName, '_', today];
IF fn_table_exists[schemaName, tableName]
THEN
CALL statement[CONCAT['CREATE TABLE IF NOT EXISTS ', backupTableName,' LIKE ', tableName]];
CALL statement[CONCAT['INSERT INTO ', backupTableName,' SELECT * FROM ', tableName]];
CALL statement[CONCAT['CHECKSUM TABLE ', backupTableName,', ', tableName]];
ELSE
SELECT CONCAT['ERROR: Table "', tableName, '" does not exist in the schema "', schemaName, '".'] AS ErrorMessage;
END IF;
END $$
DELIMITER ;
DELIMITER $$
CREATE FUNCTION fn_table_exists[schemaName VARCHAR[255], tableName VARCHAR[255]]
RETURNS TINYINT[1]
BEGIN
DECLARE totalTablesCount INT DEFAULT [
SELECT COUNT[*]
FROM information_schema.TABLES
WHERE [TABLE_SCHEMA COLLATE utf8_general_ci = schemaName COLLATE utf8_general_ci]
AND [TABLE_NAME COLLATE utf8_general_ci = tableName COLLATE utf8_general_ci]
];
RETURN IF[
totalTablesCount > 0,
TRUE,
FALSE
];
END $$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE statement[IN dynamic_statement TEXT]
BEGIN
SET @dynamic_statement := dynamic_statement;
PREPARE prepared_statement FROM @dynamic_statement;
EXECUTE prepared_statement;
DEALLOCATE PREPARE prepared_statement;
END $$
DELIMITER ;
Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách sao chép bảng trong cùng một cơ sở dữ liệu hoặc từ cơ sở dữ liệu này sang cơ sở dữ liệu khác & nbsp; sử dụng bảng tạo và chọn các câu lệnh.: in this tutorial, you will learn how to copy table within the same database or from one database to another using CREATE TABLE and SELECT statements.
Bảng sao chép mysql cho & nbsp; một bảng mới & nbsp;
Sao chép dữ liệu từ bảng hiện có sang một bảng mới rất hữu ích trong một số trường hợp như sao lưu dữ liệu và sao chép dữ liệu sản xuất để thử nghiệm.
Để sao chép dữ liệu từ bảng sang bảng mới, bạn sử dụng bảng tạo và chọn các câu lệnh như sau:
Code language: SQL [Structured Query Language] [sql]
CREATE TABLE new_table SELECT col, col2, col3 FROM existing_table;
Đầu tiên, MySQL tạo một bảng mới với tên được chỉ định & nbsp; trong câu lệnh CREATE TABLE. Cấu trúc của bảng mới được xác định bởi tập kết quả của câu lệnh
CALL duplicate_table['tableName'];
1. Sau đó, MySQL điền dữ liệu & nbsp; dữ liệu đến & nbsp; từ câu lệnh CALL duplicate_table['tableName'];
1 đến bảng mới.Để sao chép dữ liệu một phần từ bảng hiện có sang bảng mới, bạn sẽ sử dụng mệnh đề WHERE trong câu lệnh CHỌN như sau:
CREATE TABLE new_table LIKE original_table;
0Điều rất quan trọng là kiểm tra xem bảng bạn có muốn tạo không tồn tại trước khi tạo nó. Để làm như vậy, bạn sử dụng mệnh đề
CALL duplicate_table['tableName'];
3 trong câu lệnh CALL duplicate_table['tableName'];
4. Lệnh hoàn chỉnh & nbsp; của việc sao chép dữ liệu từ một bảng hiện có sang bảng mới như sau:CREATE TABLE new_table LIKE original_table;
0Lưu ý rằng câu lệnh ở trên chỉ sao chép bảng và dữ liệu của nó. Nó không sao chép các đối tượng cơ sở dữ liệu khác như chỉ mục, ràng buộc khóa chính, các ràng buộc khóa nước ngoài, & nbsp; kích hoạt, v.v., được liên kết với bảng.
Để sao chép dữ liệu từ một bảng và tất cả các đối tượng phụ thuộc của bảng, bạn sử dụng các câu lệnh sau:
CREATE TABLE new_table LIKE original_table;
2Chúng ta cần thực thi & nbsp; hai câu lệnh. Tuyên bố đầu tiên & nbsp; tạo ra một bảng mới
INSERT INTO new_table SELECT * FROM original_table;
4 bằng cách nhân đôi CALL duplicate_table['tableName'];
6. Câu lệnh thứ hai & nbsp; chèn dữ liệu từ bảng hiện tại vào INSERT INTO new_table SELECT * FROM original_table;
4.Ví dụ bảng sao chép mysql
Câu lệnh sau & NBSP; sao chép dữ liệu từ bảng
CALL duplicate_table['tableName'];
8 sang bảng mới có tên CALL duplicate_table['tableName'];
9 trong cơ sở dữ liệu mẫu SELECT NOW[];
0.CREATE TABLE new_table LIKE original_table;
3Chúng tôi có thể xác minh bản sao bằng cách truy vấn dữ liệu từ bảng
SELECT NOW[];
1 như sau:CREATE TABLE new_table LIKE original_table;
4in Các trường hợp chúng tôi muốn & nbsp; Sao chép các văn phòng & nbsp; chỉ tại Hoa Kỳ, chúng tôi & nbsp; có thể thêm mệnh đề SELECT NOW[];
2 vào câu lệnh CALL duplicate_table['tableName'];
1 như sau:In cases we want to copy the offices in the US only, we can add the
SELECT NOW[];
2 clause to the CALL duplicate_table['tableName'];
1 statement as follows:CREATE TABLE new_table LIKE original_table;
5Câu lệnh sau đây nhận được tất cả dữ liệu từ bảng
SELECT NOW[];
4.CREATE TABLE new_table LIKE original_table;
6Suppose, chúng tôi muốn sao chép không chỉ dữ liệu mà cả tất cả các đối tượng cơ sở dữ liệu được liên kết với bảng CALL duplicate_table['tableName'];
8, chúng tôi sử dụng các câu lệnh sau:Suppose, we want to copy not only the data but also all database objects associated with the
CALL duplicate_table['tableName'];
8 table, we use the following statements:CREATE TABLE new_table LIKE original_table;
7Bảng sao chép mysql vào cơ sở dữ liệu khác
Đôi khi, bạn muốn sao chép một bảng vào một cơ sở dữ liệu khác. Trong những trường hợp như vậy, bạn sử dụng các câu sau:
CREATE TABLE new_table LIKE original_table;
8Câu lệnh đầu tiên tạo ra một bảng mới new_table trong cơ sở dữ liệu đích [Destination_db] bằng cách sao chép bảng hiện tại [hiện tại_table] từ cơ sở dữ liệu nguồn [Source_db].
Các câu lệnh thứ hai sao chép dữ liệu từ bảng hiện có trong cơ sở dữ liệu nguồn vào bảng mới trong cơ sở dữ liệu đích.
Hãy cùng xem ví dụ sau đây.
Đầu tiên, chúng tôi tạo cơ sở dữ liệu có tên TestDB bằng cách sử dụng câu lệnh sau:
CREATE TABLE new_table LIKE original_table;
9Thứ hai, chúng tôi tạo bảng & nbsp; ________ 38 trong
SELECT NOW[];
7 bằng cách sao chép cấu trúc của nó từ bảng CALL duplicate_table['tableName'];
8 trong cơ sở dữ liệu & nbsp; ____ ____ 40.INSERT INTO new_table SELECT * FROM original_table;
0Thứ ba, chúng tôi sao chép dữ liệu từ bảng classimodels.offices vào bảng TestDB.offices.
INSERT INTO new_table SELECT * FROM original_table;
1Hãy để xác minh dữ liệu từ bảng
2018-10-22 23:59:59
0.INSERT INTO new_table SELECT * FROM original_table;
2in Hướng dẫn này, chúng tôi đã chỉ cho bạn nhiều kỹ thuật khác nhau để sao chép bảng trong cơ sở dữ liệu và từ cơ sở dữ liệu này sang cơ sở dữ liệu khác.In this tutorial, we have shown you various techniques to copy table within a database and from one database to another.
Hướng dẫn này có hữu ích không?