Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?

Bạn cũng có thể sử dụng câu lệnh SQL CREATE TABLE AS để tạo bảng từ bảng hiện có bằng cách sao chép các cột của bảng hiện có

Điều quan trọng cần lưu ý là khi tạo bảng theo cách này, bảng mới sẽ được điền các bản ghi từ bảng hiện có (dựa trên Câu lệnh SELECT)

Tạo bảng - Bằng cách sao chép tất cả các cột từ một bảng khác

cú pháp

Cú pháp của câu lệnh CREATE TABLE AS khi sao chép tất cả các cột trong SQL là

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

Thí dụ

Hãy xem một ví dụ cho biết cách tạo bảng bằng cách sao chép tất cả các cột từ một bảng khác

Ví dụ

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);

Thao tác này sẽ tạo một bảng mới có tên là nhà cung cấp bao gồm tất cả các cột từ bảng công ty nhưng không có dữ liệu từ bảng công ty

Trong các hoạt động cơ sở dữ liệu, có thể có lúc bạn cần sao chép hoặc sao chép một bảng hiện có sang một bảng mới do các cột và thuộc tính giống nhau của chúng để thực hiện kiểm tra mà không ảnh hưởng đến bảng gốc hoặc các lý do cá nhân khác

Tôi đã gặp tình huống này, theo đó tôi cần tạo một bộ bảng mới cho một tính năng mới mà chúng tôi đang tích hợp. Bảng này có khá nhiều cột và rất giống với một bảng hiện có đang xử lý một tập hợp dữ liệu tương tự khác của một đối tượng địa lý cụ thể

Vì bảng hiện có này và bảng mới khá giống nhau nên giải pháp nhanh chóng của tôi cho vấn đề này là sao chép bảng hiện có để tạo bảng mới

Trong SQL, việc này khá dễ thực hiện vì bạn có thể dễ dàng chạy một vài lệnh sao cho phù hợp nhất với nhu cầu sao chép của mình

Trong bài viết này, tôi sẽ chỉ cho bạn cách sao chép và sao chép các bảng hiện có trong SQL

nhân bản đơn giản

Phương thức đầu tiên được gọi là Nhân bản đơn giản và đúng như tên gọi của nó, nó tạo một bảng từ một bảng khác mà không tính đến bất kỳ thuộc tính và chỉ mục cột nào

CREATE TABLE new_table SELECT * FROM original_table;

Vì vậy, nếu tôi có một bảng có tên là

CREATE TABLE new_table LIKE original_table;
4, tôi có thể dễ dàng tạo một bảng khác có tên là
CREATE TABLE new_table LIKE original_table;
5 mà không cần quan tâm đến các thuộc tính và chỉ mục cột của bảng
CREATE TABLE new_table LIKE original_table;
4

Lệnh SQL dưới đây tạo một bản sao đơn giản của bảng

CREATE TABLE new_table LIKE original_table;
4

CREATE TABLE adminUsers SELECT * FROM users;

Sử dụng công cụ này để nhanh chóng sao chép bất kỳ bảng nào chỉ bao gồm cấu trúc và dữ liệu của bảng gốc

nhân bản nông

Sao chép nông chủ yếu được sử dụng để tạo bản sao của cấu trúc dữ liệu bảng hiện có và các thuộc tính cột mà không sao chép dữ liệu. Điều này sẽ chỉ tạo một bảng trống dựa trên cấu trúc của bảng gốc

CREATE TABLE new_table LIKE original_table;

Lệnh sau sẽ tạo một cơ sở bảng trống trên bảng gốc

CREATE TABLE adminUsers LIKE users;

Sử dụng cái này nếu bạn chỉ muốn cấu trúc dữ liệu và thuộc tính cột của bảng gốc

nhân bản sâu

Nhân bản sâu hoàn toàn khác với Nhân bản đơn giản và tương tự như nhân bản Nông nhưng với dữ liệu và như tên gọi của nó, nó tạo ra một bản sao sâu của bảng gốc

Điều này có nghĩa là bảng mới có tất cả các thuộc tính của từng cột và chỉ mục của bảng hiện có. Điều này khá hữu ích nếu bạn muốn duy trì các chỉ mục và thuộc tính của bảng hiện có

Để làm được điều này, chúng ta sẽ phải tạo một bảng trống dựa trên cấu trúc và thuộc tính của bảng gốc, sau đó chọn dữ liệu từ bảng gốc và chèn vào bảng mới

CREATE TABLE new_table LIKE original_table;
INSERT INTO new_table SELECT * FROM original_table;

Để dễ dàng sao chép bản gốc của chúng tôi và cũng có thể sao chép dữ liệu của nó

CREATE TABLE adminUsers LIKE users;
INSERT INTO adminUsers SELECT * FROM adminUsers;

Một điều thú vị khác bây giờ là, giả sử bạn không muốn tất cả dữ liệu từ bảng hiện có và chỉ muốn một số dữ liệu, dựa trên một số điều kiện, sau đó tinh chỉnh các truy vấn

CREATE TABLE adminUsers SELECT * FROM users;
1 của bạn là lựa chọn tốt nhất của bạn

Chẳng hạn, chúng tôi có người dùng có

CREATE TABLE adminUsers SELECT * FROM users;
2 trong bảng
CREATE TABLE new_table LIKE original_table;
4 và chúng tôi chỉ muốn sao chép những người dùng đó vào bảng mới của chúng tôi, bạn có thể dễ dàng thực hiện điều đó như bên dưới

Tóm lược. trong hướng dẫn này, bạn sẽ học 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 bằng cách sử dụng câu lệnh CREATE TABLE và SELECT

Bảng sao chép MySQL sang bảng mới

Sao chép dữ liệu từ bảng hiện có sang 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ừ một bảng sang một bảng mới, bạn sử dụng câu lệnh CREATE TABLE và SELECT như sau

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
0

Đầu tiên, MySQL tạo một bảng mới với tên được chỉ định 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

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
14. Sau đó, MySQL điền dữ liệu đến từ câu lệnh
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
14 vào bảng mới

Để sao chép một phần dữ liệu từ bảng hiện có sang bảng mới, bạn sử dụng mệnh đề WHERE trong câu lệnh SELECT như sau

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
1

Điều rất quan trọng là phải kiểm tra xem bảng bạn muốn tạo đã tồn tại chưa trước khi tạo nó. Để làm như vậy, bạn sử dụng mệnh đề

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
16 trong câu lệnh
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
17. Toàn bộ lệnh sao chép dữ liệu từ bảng hiện có sang bảng mới như sau

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
1

Lư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, ràng buộc khóa ngoại, trình kích hoạt, v.v. , 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 suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
7

Chúng ta cần thực hiện hai câu lệnh. Câu lệnh đầu tiên tạo một bảng mới

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
18 bằng cách sao chép
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
19. Câu lệnh thứ hai chèn dữ liệu từ bảng hiện có vào
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
18

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

Câu lệnh sau sao chép dữ liệu từ bảng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
11 sang một bảng mới có tên là
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
12 trong cơ sở dữ liệu mẫu của
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
13

CREATE TABLE new_table SELECT * FROM original_table;
4

Chúng tôi có thể xác minh bản sao bằng cách truy vấn dữ liệu từ bảng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
14 như sau

CREATE TABLE new_table SELECT * FROM original_table;
6
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?

Trong trường hợp chúng ta chỉ muốn sao chép các văn phòng ở Hoa Kỳ, chúng ta có thể thêm mệnh đề

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
15 vào mệnh đề
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
14 như sau.

CREATE TABLE new_table SELECT * FROM original_table;
9

Câu lệnh sau lấy tất cả dữ liệu từ bảng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
17

CREATE TABLE adminUsers SELECT * FROM users;
1
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?

Giả sử chúng ta muốn sao chép không chỉ dữ liệu mà còn tất cả các đối tượng cơ sở dữ liệu được liên kết với bảng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
11, chúng ta sử dụng các câu lệnh sau.

CREATE TABLE adminUsers SELECT * FROM users;
3

Bảng sao chép MySQL sang cơ sở dữ liệu khác

Đôi khi, bạn muốn sao chép một bảng sang 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 lệnh sau

CREATE TABLE adminUsers SELECT * FROM users;
4

Câu lệnh đầu tiên tạo 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 có (current_table) từ cơ sở dữ liệu nguồn (source_db)

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 sang bảng mới trong cơ sở dữ liệu đích

Hãy xem ví dụ sau

Đầu tiên, chúng tôi tạo một cơ sở dữ liệu có tên testdb bằng cách sử dụng câu lệnh sau

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
10

Thứ hai, chúng tôi tạo bảng 

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
11 trong
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
70 bằng cách sao chép cấu trúc của nó từ bảng
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
11 trong cơ sở dữ liệu 
CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
13

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
11

Thứ ba, chúng tôi sao chép dữ liệu từ classimodels. bảng văn phòng để testdb. bàn văn phòng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
12

Hãy xác minh dữ liệu từ bảng

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
73

CREATE TABLE suppliers
AS (SELECT *
    FROM companies
    WHERE id > 1000);
13
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?
Làm cách nào để tạo một bảng có cùng cấu trúc với một bảng khác trong MySQL?

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn các 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.

Làm cách nào để tạo một bảng bằng cách sao chép cấu trúc của một bảng khác?

Phương thức đầu tiên được gọi là Nhân bản đơn giản và như tên gọi của nó, nó tạo một bảng từ một bảng khác mà không tính đến bất kỳ thuộc tính và chỉ mục cột nào. .
TẠO BẢNG new_table CHỌN * TỪ original_table;
TẠO BẢNG quản trị viên CHỌN * TỪ người dùng;
TẠO BẢNG new_table NHƯ original_table;

Làm cách nào để tạo bảng mới với cấu trúc 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.

Làm cách nào để sao chép cấu trúc bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong SQL Server?

Sử dụng SQL Server Management Studio . Trong Object Explorer, nhấp chuột phải vào bảng bạn muốn sao chép và chọn Thiết kế. Chọn các cột trong bảng hiện có và từ menu Chỉnh sửa, chọn Sao chép. In Object Explorer, right-click Tables and select New Table. In Object Explorer right-click the table you want to copy and select Design. Select the columns in the existing table and, from the Edit menu, select Copy.

Có thể tạo 2 bảng trùng tên không?

Không thể tạo hai bảng có cùng tên trong cùng một lược đồ .