TopDev

Sao chép dữ liệu từ bảng này vào bảng khác trong MySQL

minhdev 📖 2 phút đọc

Để sao chép dữ liệu từ một bảng vào bảng khác trong MySQL, bạn có thể sử dụng câu lệnh INSERT INTO ... SELECT. Câu lệnh này cho phép bạn chọn dữ liệu từ một hoặc nhiều cột từ bảng nguồn và chèn vào bảng đích.

Cú pháp của câu lệnh INSERT INTO ... SELECT#

INSERT INTO table2 (column1, column2, ...) SELECT column1, column2, ... FROM table1 WHERE condition;

Trong đó:

  • table2: là bảng đích mà bạn muốn chèn dữ liệu vào.

  • (column1, column2, ...): là danh sách các cột trong bảng table2 mà bạn muốn chèn dữ liệu vào.

  • table1: là bảng nguồn từ đó bạn muốn sao chép dữ liệu.

  • SELECT column1, column2, ... FROM table1: là câu truy vấn để chọn dữ liệu từ bảng table1.

  • WHERE condition: là điều kiện để lọc dữ liệu nếu cần thiết (không bắt buộc).

Ví dụ sao chép dữ liệu từ bảng orders vào bảng archived_orders#

Giả sử bạn muốn sao chép tất cả các đơn hàng có order_date trong năm 2023 từ bảng orders vào bảng archived_orders:

INSERT INTO archived_orders (order_id, customer_id, order_date, total_amount) SELECT order_id, customer_id, order_date, total_amount FROM orders WHERE YEAR(order_date) = 2023;

Trong ví dụ này:

  • archived_orders: là bảng đích.

  • (order_id, customer_id, order_date, total_amount): là danh sách các cột của archived_orders mà bạn muốn sao chép dữ liệu vào.

  • orders: là bảng nguồn từ đó bạn muốn sao chép dữ liệu.

  • SELECT order_id, customer_id, order_date, total_amount FROM orders: là câu truy vấn để chọn các cột từ bảng orders.

  • WHERE YEAR(order_date) = 2023: là điều kiện để chỉ chọn các đơn hàng có order_date trong năm 2023.

Lưu ý khi sử dụng câu lệnh INSERT INTO ... SELECT#

  • Đảm bảo các cột trong SELECT tương thích: Các cột được chọn từ bảng nguồn phải tương thích với các cột trong bảng đích về kiểu dữ liệu và số lượng.

  • Đảm bảo sự tồn tại của các cột cần chèn dữ liệu: Các cột được liệt kê trong INSERT INTO ... SELECT phải tồn tại trong bảng đích.

  • Kiểm tra ràng buộc duy nhất và các ràng buộc khác: Khi chèn dữ liệu vào bảng đích, hãy đảm bảo rằng các ràng buộc như ràng buộc duy nhất (UNIQUE) hoặc ràng buộc khóa ngoại (FOREIGN KEY) không bị vi phạm.

  • Đảm bảo hiệu suất và bảo mật: Trong các hệ thống có khối lượng dữ liệu lớn, hãy xem xét các biện pháp để tối ưu hóa hiệu suất và bảo mật như sử dụng transaction và điều chỉnh các cấu hình MySQL phù hợp.

Câu lệnh INSERT INTO ... SELECT là một cách mạnh mẽ để sao chép và chuyển dữ liệu giữa các bảng trong MySQL một cách hiệu quả và nhanh chóng.

Bài liên quan trong #Database

✓ Đã sao chép link