Bạn có thể sao chép hoặc sao chép bảng MySQL sang bảng khác. Sao chép bảng MySQL rất hữu ích khi bạn muốn chạy một số thử nghiệm trên bảng, nhưng muốn có một bản sao lưu của bảng. Hoặc trong một số trường hợp, bạn muốn tạo một bảng có các cột và chỉ mục chính xác của một bảng đã tồn tại
Có hai cấp độ để sao chép bảng MySQL dựa trên tổng số bảng sao chép
- Chỉ sao chép cấu trúc và dữ liệu của bảng
- Sao chép cấu trúc và dữ liệu của bảng cùng với các chỉ mục và trình kích hoạt
Sao chép cấu trúc và dữ liệu của MySQL Table
Các cột và các thuộc tính của chúng như kiểu dữ liệu, giá trị mặc định, bộ ký tự, v.v. , được gọi là cấu trúc của các bảng. Và các hàng trong bảng đó là dữ liệu
Để sao chép cấu trúc và dữ liệu của Bảng MySQL, hãy TẠO một BẢNG mới với dữ liệu được chọn từ bảng trước đó. Sau đây là cú pháp
CREATE TABLE new_table AS SELECT * FROM old_table;
Ví dụ – Nhân bản bảng
Sau đây là cấu trúc của bảng students
Và bảng students
có dữ liệu sau
Bây giờ chúng ta sẽ sao chép cấu trúc và dữ liệu của students
vào một bảng mới pupils
Hãy để chúng tôi xem liệu có tồn tại cả hai bảng trùng lặp và bảng gốc không
Vâng. họ đây rồi. Và đã đến lúc kiểm tra xem cấu trúc và dữ liệu của bảng pupils
có giống hoàn toàn với bảng của students
không
Đó là cấp độ sao chép đầu tiên. Chúng tôi đã sao chép thành công cấu trúc của bảng và các hàng trong đó
Sao chép cấu trúc và dữ liệu của bảng cùng với các chỉ mục và trình kích hoạt
Để sao chép các chỉ mục và trình kích hoạt của Bảng MySQL cùng với cấu trúc và dữ liệu, bạn phải chạy hai Truy vấn SQL trong giao diện dòng lệnh mysql
CREATE TABLE new_table LIKE old_table; INSERT new_table SELECT * FROM old_table;
- Truy vấn đầu tiên tạo một bảng có cùng cấu trúc, chỉ mục và trình kích hoạt như của bảng cũ
- Truy vấn thứ hai sao chép dữ liệu từ bảng cũ sang bảng mới
Để kiểm tra hiệu ứng trên chỉ mục, chúng tôi sẽ thêm một cột mới vào bảng mysql students
và thử sao chép bảng
Cấu trúc bảng students
students
mục lục bảng
Bây giờ chúng ta sẽ cố gắng sao chép tất cả bảng này [dữ liệu, cấu trúc, chỉ mục và trình kích hoạt] vào một bảng mới có tên là pupils
Chạy hai truy vấn sau
CREATE TABLE pupils LIKE students; INSERT pupils SELECT * FROM students;
Hãy cho chúng tôi xem điều gì đã xảy ra với chỉ mục của bảng mới được tạo pupils
Phần kết luận
Trong Hướng dẫn về MySQL này, chúng ta đã học cách sao chép một bảng [cấu trúc và dữ liệu, chỉ mục và trình kích hoạt tùy chọn]
CC BY-NC-NĐ Quốc tế 4. 0. Tác phẩm này được phát hành theo CC BY-NC-ND International 4. 0, có nghĩa là bạn có thể tự do làm với nó theo ý muốn miễn là bạn [1] ghi tên nó đúng cách, [2] không sử dụng nó vì mục đích thương mại và [3] không tạo ra các tác phẩm phái sinh
Có thể xảy ra tình huống khi bạn cần một bản sao chính xác của bảng và TẠO BẢNG. CHỌN không phù hợp với mục đích của bạn vì bản sao phải bao gồm cùng các chỉ mục, giá trị mặc định, v.v.
Bạn có thể xử lý tình huống này bằng cách thực hiện theo các bước dưới đây -
Sử dụng SHOW CREATE TABLE để nhận câu lệnh CREATE TABLE chỉ định cấu trúc, chỉ mục và tất cả của bảng nguồn
Sửa đổi câu lệnh để thay đổi tên bảng thành tên của bảng nhân bản và thực hiện câu lệnh. Bằng cách này, bạn sẽ có bảng nhân bản chính xác
Theo tùy chọn, nếu bạn cũng cần sao chép nội dung bảng, hãy đưa ra lệnh INSERT INTO. Câu lệnh SELECT cũng vậy
Ví dụ
Hãy thử ví dụ sau để tạo bảng nhân bản cho tutorials_tbl
Bước 1 - Nhận cấu trúc hoàn chỉnh về bảng
mysql> SHOW CREATE TABLE tutorials_tbl \G; *************************** 1. row *************************** Table: tutorials_tbl Create Table: CREATE TABLE `tutorials_tbl` [ `tutorial_id` int[11] NOT NULL auto_increment, `tutorial_title` varchar[100] NOT NULL default '', `tutorial_author` varchar[40] NOT NULL default '', `submission_date` date default NULL, PRIMARY KEY [`tutorial_id`], UNIQUE KEY `AUTHOR_INDEX` [`tutorial_author`] ] TYPE = MyISAM 1 row in set [0.00 sec] ERROR: No query specified
Bước 2 - Đổi tên bảng này và tạo một bảng khác
mysql> CREATE TABLE clone_tbl [ -> tutorial_id int[11] NOT NULL auto_increment, -> tutorial_title varchar[100] NOT NULL default '', -> tutorial_author varchar[40] NOT NULL default '', -> submission_date date default NULL, -> PRIMARY KEY [tutorial_id], -> UNIQUE KEY AUTHOR_INDEX [tutorial_author] -> ] TYPE = MyISAM; Query OK, 0 rows affected [1.80 sec]
Bước 3 - Sau khi thực hiện bước 2, bạn sẽ tạo một bảng nhân bản trong cơ sở dữ liệu của mình. Nếu bạn muốn sao chép dữ liệu từ bảng cũ thì bạn có thể thực hiện bằng cách sử dụng INSERT INTO. câu lệnh CHỌN