Trong MySQL, bạn có thể tạo một bảng mới bằng cách sao chép cấu trúc và dữ liệu từ một bảng cũ hoặc chỉ lấy các trường cụ thể từ bảng cũ. Điều này thường được sử dụng khi bạn muốn tạo bảng mới dựa trên một phần dữ liệu của bảng hiện có. Dưới đây là cách thực hiện điều đó với các trường hợp khác nhau.
Nếu bạn muốn sao chép toàn bộ cấu trúc và dữ liệu từ bảng cũ sang bảng mới, bạn có thể sử dụng cú pháp sau:
CREATE TABLE new_table AS SELECT * FROM old_table;
new_table
: Tên bảng mới.old_table
: Tên bảng cũ mà bạn muốn sao chép dữ liệu.Ví dụ:
CREATE TABLE employees_copy AS SELECT * FROM employees;
Nếu bạn chỉ muốn sao chép một số trường từ bảng cũ, bạn cần chỉ định các trường đó trong câu lệnh SELECT
:
CREATE TABLE new_table AS SELECT column1, column2, column3 FROM old_table;
Ví dụ:
CREATE TABLE employees_selected AS SELECT name, age, department FROM employees;
Trong ví dụ trên, bảng mới employees_selected
chỉ chứa các trường name
, age
, và department
từ bảng cũ employees
.
Bạn cũng có thể tạo bảng mới chỉ với những dữ liệu thỏa mãn một điều kiện nhất định từ bảng cũ bằng cách thêm WHERE
vào câu lệnh SELECT
:
CREATE TABLE new_table AS SELECT column1, column2 FROM old_table WHERE condition;
Ví dụ:
CREATE TABLE employees_under_30 AS SELECT name, age FROM employees WHERE age < 30;
Ở đây, bảng mới employees_under_30
chỉ chứa các nhân viên dưới 30 tuổi từ bảng cũ employees
.
Nếu bạn chỉ muốn sao chép cấu trúc của bảng cũ (không sao chép dữ liệu), bạn có thể thêm một điều kiện sai (WHERE 1=0
) để không có dữ liệu nào được sao chép:
CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;
Ví dụ:
CREATE TABLE employees_structure AS SELECT * FROM employees WHERE 1=0;
Bảng employees_structure
sẽ có cấu trúc giống bảng employees
nhưng không có dữ liệu.
Lưu ý rằng khi sử dụng CREATE TABLE ... AS SELECT ...
, MySQL sẽ không sao chép các chỉ mục (index), khóa chính (primary key), hay ràng buộc (constraints) từ bảng cũ sang bảng mới. Nếu bạn cần các chỉ mục hoặc ràng buộc, bạn phải thêm chúng thủ công sau khi tạo bảng:
Ví dụ thêm chỉ mục:
ALTER TABLE new_table ADD PRIMARY KEY (column_name);
Hoặc thêm chỉ mục:
ALTER TABLE new_table ADD INDEX (column_name);
Cú pháp CREATE TABLE ... AS SELECT ...
trong MySQL cho phép bạn tạo một bảng mới từ dữ liệu của bảng cũ với nhiều tùy chọn khác nhau, bao gồm sao chép toàn bộ dữ liệu, chỉ sao chép một số trường cụ thể, hoặc sao chép có điều kiện. Tuy nhiên, các chỉ mục và ràng buộc sẽ không được sao chép tự động, và bạn cần thêm chúng thủ công sau khi tạo bảng mới.