Bảng sao chép MySQL sang bảng khác

Bảng sao chép hoặc bản sao MySQL là một tính năng cho phép chúng tôi tạo một bảng trùng lặp của một bảng hiện có, bao gồm cấu trúc bảng, chỉ mục, ràng buộc, giá trị mặc định, v.v. Sao chép dữ liệu của một bảng hiện có vào một bảng mới rất hữu ích trong trường hợp như sao lưu dữ liệu trong bảng bị lỗi. Nó cũng thuận lợi khi chúng ta cần kiểm tra hoặc thực hiện một cái gì đó mà không ảnh hưởng đến bảng gốc, ví dụ: sao chép dữ liệu sản xuất để thử nghiệm

Chúng ta có thể sao chép một bảng hiện có sang một bảng mới bằng cách sử dụng câu lệnh CREATE TABLE và SELECT, như hình bên dưới

Từ phần trên, đầu tiên, nó tạo một bảng mới cho biết trong câu lệnh CREATE TABLE. Thứ hai, tập kết quả của câu lệnh SELECT xác định cấu trúc của một bảng mới. Cuối cùng, MySQL điền dữ liệu nhận được từ câu lệnh SELECT vào bảng mới được tạo

Nếu chỉ cần sao chép một phần dữ liệu từ bảng hiện có sang bảng mới, hãy sử dụng mệnh đề WHERE với câu lệnh SELECT như hình bên dưới

Chúng tôi phải đảm bảo rằng bảng chúng tôi sẽ tạo không được tồn tại trong cơ sở dữ liệu của chúng tôi. Mệnh đề IF NOT EXISTS trong MySQL cho phép chúng ta kiểm tra xem một bảng có tồn tại trong cơ sở dữ liệu hay không trước khi tạo một bảng mới. Vì vậy, tuyên bố dưới đây giải thích nó rõ ràng hơn

Cần lưu ý rằng câu lệnh này chỉ sao chép bảng và dữ liệu của nó. Nó không sao chép tất cả các đối tượng phụ thuộc của bảng, chẳng hạn như chỉ mục, trình kích hoạt, ràng buộc khóa chính, ràng buộc khóa ngoại, v.v. Vì vậy, lệnh sao chép dữ liệu cùng với các đối tượng phụ thuộc của nó từ bảng hiện có sang bảng mới có thể được viết dưới dạng các câu lệnh sau

Ở phần trên, chúng ta có thể thấy rằng chúng ta cần thực hiện hai câu lệnh để sao chép dữ liệu cùng với cấu trúc và các ràng buộc. Lệnh đầu tiên tạo một bảng mới tên_bảng_mới sao chép tên_bảng_hiện có và lệnh thứ hai thêm dữ liệu từ bảng hiện có vào tên_bảng mới

Ví dụ về bảng sao chép/bản sao MySQL

Hãy để chúng tôi chứng minh cách chúng tôi có thể tạo một bảng trùng lặp với sự trợ giúp của một ví dụ. Đầu tiên, chúng ta sẽ tạo một bảng có tên " original_table " bằng cách sử dụng câu lệnh bên dưới

Tiếp theo, cần phải thêm các giá trị vào bảng này. Thực hiện câu lệnh dưới đây

Tiếp theo, thực hiện câu lệnh SELECT để hiển thị các bản ghi

Ta sẽ được kết quả như hình bên dưới

Bảng sao chép MySQL sang bảng khác

Bây giờ, hãy thực hiện câu lệnh sau để sao chép dữ liệu từ bảng " original_table " hiện có sang một bảng mới có tên "bản_bảng_trùng lặp" trong cơ sở dữ liệu đã chọn

Sau khi thực thi thành công, chúng ta có thể xác minh dữ liệu bảng bằng câu lệnh SELECT. Xem đầu ra bên dưới

Bảng sao chép MySQL sang bảng khác

Đôi khi chỉ cần sao chép một phần dữ liệu từ bảng hiện có sang bảng mới. Trong trường hợp đó, chúng ta có thể sử dụng mệnh đề WHERE với câu lệnh SELECT như sau

Câu lệnh này tạo một bảng trùng lặp chỉ chứa dữ liệu cho năm 2016. Chúng ta có thể xác minh bảng bằng cách sử dụng câu lệnh CHỌN, như hình bên dưới

Bảng sao chép MySQL sang bảng khác

Giả sử có nhu cầu sao chép một bảng hiện có cùng với tất cả các đối tượng phụ thuộc được liên kết với bảng, hãy thực hiện hai câu lệnh được đưa ra dưới đây


Bảng sao chép MySQL sang bảng khác

Hãy cho chúng tôi xem làm thế nào chúng ta có thể sao chép một bảng sang một cơ sở dữ liệu khác thông qua một ví dụ

Giả sử có tình huống sao chép một bảng từ cơ sở dữ liệu khác. Trong trường hợp đó, chúng ta cần thực hiện các câu lệnh dưới đây

Ở trên, lệnh đầu tiên tạo một bảng mới trong cơ sở dữ liệu (đích) đã chọn bằng cách sao chép bảng hiện có từ cơ sở dữ liệu nguồn. Lệnh thứ hai sao chép dữ liệu từ bảng hiện có sang bảng mới trong cơ sở dữ liệu đã chọn

Cuộc biểu tình sau đây giải thích nó rõ ràng hơn

Giả sử chúng ta có hai cơ sở dữ liệu tên là "mysqltestdb" và "mystudentdb" trên MySQL Server. Cơ sở dữ liệu mytestdb chứa một bảng có tên là " original_table " có dữ liệu sau

Bảng sao chép MySQL sang bảng khác

Bây giờ, chúng ta sẽ sao chép bảng này vào một cơ sở dữ liệu khác có tên mystudentdb bằng cách sử dụng câu lệnh sau

Sau khi thực hiện thành công, chúng ta có thể xác minh bảng trong cơ sở dữ liệu mystudentdb bằng lệnh bên dưới

Trong kết quả bên dưới, chúng ta có thể thấy rằng bảng đã được sao chép thành công vào cơ sở dữ liệu này sang cơ sở dữ liệu khác

Tùy thuộc vào mức độ giống hệt của bảng sao chép với bảng ban đầu mà bạn muốn, có ba cách dễ dàng để bạn có thể sao chép bảng

  • CREATE TABLE copy_customer LIKE customer;
    
    1 truy vấn để sao chép dữ liệu và thuộc tính cột của bảng
  • Truy vấn
    CREATE TABLE copy_customer LIKE customer;
    
    2 để sao chép các chỉ mục của bảng
  • Truy vấn
    CREATE TABLE copy_customer LIKE customer;
    
    3 để tạo một bản sao giống hệt của bảng gốc

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng tất cả các phương pháp trên để sao chép bảng MySQL

Sao chép bảng bằng truy vấn CREATE TABLE AS

Nếu bạn muốn tạo một bảng nhân bản nông chỉ có dữ liệu và thuộc tính cột của bảng gốc, bạn có thể sử dụng truy vấn

CREATE TABLE copy_customer LIKE customer;
4

Ví dụ: giả sử bạn có một bảng tên là

CREATE TABLE copy_customer LIKE customer;
5 và bạn cần tạo một bản sao của bảng có tên là bảng
CREATE TABLE copy_customer LIKE customer;
6

Đây là cách bạn làm điều đó

CREATE TABLE customer_clone AS SELECT * FROM customer;

Lệnh trên sẽ lưu kết quả của câu lệnh

CREATE TABLE copy_customer LIKE customer;
7 dưới dạng một bảng mới trong cơ sở dữ liệu MySQL của bạn

Hãy nhớ rằng phương pháp trên không sao chép các chỉ mục, trình kích hoạt hoặc ràng buộc của bảng gốc vì nó chỉ lưu kết quả của truy vấn dưới dạng một bảng mới

Nếu bạn cũng muốn sao chép các chỉ mục của bảng, bạn cần sử dụng truy vấn

CREATE TABLE copy_customer LIKE customer;
2

Sao chép bảng bằng truy vấn CREATE TABLE LIKE

Để sao chép một bảng hiện có thành một bảng mới, bạn có thể sử dụng truy vấn

CREATE TABLE copy_customer LIKE customer;
2 và chuyển tên của bảng gốc bên cạnh mệnh đề
CREATE TABLE copy_customer LIKE customer;
00

Ví dụ: giả sử bạn có một bảng tên là

CREATE TABLE copy_customer LIKE customer;
5, sau đây là cách tạo một bản sao của bảng đó

CREATE TABLE copy_customer LIKE customer;

Một bảng trống mới có tên là

CREATE TABLE copy_customer LIKE customer;
02 sẽ được tạo trong cơ sở dữ liệu MySQL của bạn, bảng này sẽ là bản sao của bảng
CREATE TABLE copy_customer LIKE customer;
5

Hãy nhớ rằng sao chép bảng MySQL theo cách này sẽ sao chép cấu trúc và chỉ mục của bảng ban đầu, nhưng mọi trình kích hoạt và ràng buộc được đặt trên bảng ban đầu sẽ không được sao chép vào bảng mới

Điều này là do các tên ràng buộc của bảng phải là duy nhất trong một cơ sở dữ liệu, vì vậy bạn cần thêm các ràng buộc theo cách thủ công bằng một tên khác

Sau khi tạo bảng, bạn có thể chèn dữ liệu từ bảng gốc vào bảng sao chép bằng câu lệnh INSERT như sau

CREATE TABLE copy_customer LIKE customer;
0

Truy vấn SQL bên dưới sẽ sao chép tất cả dữ liệu từ bảng

CREATE TABLE copy_customer LIKE customer;
5 sang bảng
CREATE TABLE copy_customer LIKE customer;
02

CREATE TABLE copy_customer LIKE customer;
8

Bây giờ bạn đã học cách sao chép bảng bằng truy vấn

CREATE TABLE copy_customer LIKE customer;
2. Hãy tìm hiểu cách bạn cũng có thể sao chép bảng bằng truy vấn
CREATE TABLE copy_customer LIKE customer;
3

Sao chép bảng bằng truy vấn SHOW CREATE TABLE

Truy vấn

CREATE TABLE copy_customer LIKE customer;
3 được sử dụng để hiển thị truy vấn SQL để tạo một bảng cụ thể

Ví dụ: để hiển thị truy vấn

CREATE TABLE copy_customer LIKE customer;
09 cho bảng
CREATE TABLE copy_customer LIKE customer;
5, bạn có thể sử dụng truy vấn SQL sau

CREATE TABLE copy_customer LIKE customer;
4

Trong cơ sở dữ liệu của tôi, tập kết quả sau được hiển thị

CREATE TABLE copy_customer LIKE customer;
5

Toàn bộ truy vấn để tạo cấu trúc bảng sẽ được hiển thị dưới dạng tập kết quả của truy vấn

CREATE TABLE copy_customer LIKE customer;
3

Bây giờ bạn có thể sao chép câu lệnh

CREATE TABLE copy_customer LIKE customer;
09 và thay đổi tên của bảng để tạo một bản sao của bảng gốc

Hãy đổi tên từ

CREATE TABLE copy_customer LIKE customer;
5 thành
CREATE TABLE copy_customer LIKE customer;
84

CREATE TABLE copy_customer LIKE customer;
0

Nếu câu lệnh

CREATE TABLE copy_customer LIKE customer;
09 có mệnh đề
CREATE TABLE copy_customer LIKE customer;
86, bạn cần đổi tên của mệnh đề
CREATE TABLE copy_customer LIKE customer;
86 đó vì MySQL cần tên ràng buộc là duy nhất

Bảng

CREATE TABLE copy_customer LIKE customer;
5 ở trên có hai mệnh đề ràng buộc như sau

CREATE TABLE copy_customer LIKE customer;
5

Nếu không thay đổi tên ràng buộc, thì bạn sẽ gặp lỗi

CREATE TABLE copy_customer LIKE customer;
89

CREATE TABLE copy_customer LIKE customer;
7

Để tránh lỗi, bạn cần đổi tên

CREATE TABLE copy_customer LIKE customer;
40 và
CREATE TABLE copy_customer LIKE customer;
41 thành tên khác

Ví dụ của chúng tôi, chúng tôi có thể sử dụng

CREATE TABLE copy_customer LIKE customer;
42 và
CREATE TABLE copy_customer LIKE customer;
43 cho các tên ràng buộc

Bây giờ bạn có thể tạo một bản sao của bảng khách hàng. Nếu bạn cũng muốn sao chép dữ liệu của bảng, thì bạn có thể sử dụng câu lệnh

CREATE TABLE copy_customer LIKE customer;
44 như trong phương pháp đầu tiên

CREATE TABLE copy_customer LIKE customer;
3

Bạn cũng có thể bao gồm KHOẢN

CREATE TABLE copy_customer LIKE customer;
45 cho truy vấn
CREATE TABLE copy_customer LIKE customer;
7 để chỉ sao chép một phần dữ liệu đáp ứng các điều kiện nhất định

Sao chép bảng vào một cơ sở dữ liệu khác

Khi bạn cần sao chép một bảng vào một cơ sở dữ liệu khác, bạn có thể thêm tên cơ sở dữ liệu nguồn và đích vào truy vấn

CREATE TABLE copy_customer LIKE customer;
09

Dưới đây là một số truy vấn ví dụ để sao chép một bảng hiện có vào một cơ sở dữ liệu khác

CREATE TABLE copy_customer LIKE customer;
0

Và đó là cách bạn sao chép một bảng cơ sở dữ liệu sang cơ sở dữ liệu khác

Sự kết luận

Vì không có cú pháp MySQL

CREATE TABLE copy_customer LIKE customer;
48, bạn cần tận dụng các tính năng hiện có của MySQL để sao chép một bảng hiện có vào một bảng mới

Ba phương pháp được đề cập ở trên là đủ để giúp bạn sao chép một bảng hiện có thành một bảng mới

Nếu bạn chỉ cần tạo một bản sao nông với các thuộc tính và dữ liệu cột giống nhau, bạn có thể sử dụng truy vấn

CREATE TABLE copy_customer LIKE customer;
4

Nếu bạn cũng cần sao chép các trình kích hoạt, chỉ mục và ràng buộc có liên quan, thì bạn có thể sử dụng truy vấn

CREATE TABLE copy_customer LIKE customer;
2 hoặc
CREATE TABLE copy_customer LIKE customer;
3

Chúng ta có thể sao chép dữ liệu từ bảng này sang bảng khác không?

Câu lệnh INSERT INTO SELECT sao chép dữ liệu từ một bảng và chèn nó vào một bảng khác . Câu lệnh INSERT INTO SELECT yêu cầu kiểu dữ liệu trong bảng nguồn và bảng đích khớp với nhau. Ghi chú. Các bản ghi hiện có trong bảng mục tiêu không bị ảnh hưởng.

Làm cách nào để tạo một bảng mới từ một bảng hiện có trong MySQL?

Bạn có thể tạo một bảng từ một bảng khác bằng cách thêm câu lệnh CHỌN vào cuối câu lệnh CREATE TABLE. TẠO BẢNG new_tbl [AS] CHỌN * TỪ orig_tbl; MySQL tạo các cột mới cho tất cả các thành phần trong CHỌN.