Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể tạo một bảng sao chép MySQL?

Đôi khi có thể có một tình huống khi chúng tôi 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 chúng tôi vì bản sao phải bao gồm các chỉ mục, giá trị mặc định giống nhau, v.v.

Bạn có thể xử lý tình huống này bằng cách làm theo các bước, để tạo bản sao của bảng, được đưa ra bên dưới -

  • 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 sao chép và thực hiện câu lệnh. Bằng cách này, chúng ta sẽ có bảng sao chép chính xác.
  • Theo tùy chọn, nếu chúng tôi cũng cần sao chép nội dung bảng, hãy đưa ra CHÈN VÀO ... Câu lệnh SELECT cũng vậy.

Ví dụ

Trong ví dụ sau, chúng tôi đang tạo một bảng sao chép cho tutorial_tbl.

Bước 1

Nhận cấu trúc hoàn chỉnh của 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 sao chép trong cơ sở dữ liệu của mình. Nếu bạn muốn sao chép dữ liệu từ một bảng cũ thì bạn có thể thực hiện bằng cách sử dụng câu lệnh INSERT INTO ... SELECT.

mysql> INSERT INTO clone_tbl (tutorial_id, tutorial_title, tutorial_author, submission_date)
    -> SELECT tutorial_id,tutorial_title,
    ->    tutorial_author,submission_date
    -> FROM tutorials_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0

Cuối cùng, chúng tôi sẽ có một bảng sao chép chính xác như bạn muốn.