– Trong hệ quản trị cơ sở dữ liệu MySQL, để sao chép dữ liệu (các hàng) từ một bảng này vào bên trong một bảng khác thì chúng ta có thể sử dụng một trong hai cú pháp như sau.
Cú pháp 1
– Cú pháp này được sử dụng trong trường hợp chúng ta muốn sao chép dữ liệu từ tất cả các cột của bảng table1 vào bên trong bảng table2 (Lưu ý: Khi sử dụng cú pháp này thì số cột của bảng table2 phải bằng với số lượng cột của bảng table1, nếu không thì khi thực thi lệnh sẽ bị lỗi)
INSERT INTO table2
SELECT *
FROM table1
WHERE condition;
Cú pháp 2
– Cú pháp này thường được sử dụng trong những trường hợp chúng ta muốn sao chép dữ liệu từ một số cột nào đó của bảng table1 vào một số cột nào đó của bảng table2.
INSERT INTO table2 (column1, column2, column3, . . . .)
SELECT column1, column2, column3, . . . .
FROM table1
WHERE condition;
Tham khảo một số ví dụ
– Trong bài học này, tôi sẽ dùng hai cái bảng Customers & Student như bên dưới để làm một số ví dụ minh họa:
CustomerName | Gender | Address | City |
Nguyễn Thành Nhân | Nam | 63 Hoàng Văn Thụ | Cần Thơ |
Lưu Đức Hoa | Nam | 16 Nguyễn Văn Cừ | Vĩnh Long |
Phan Kim Liên | Nữ | Tổ 6 – Hoàng Hoa Thám | Sóc Trăng |
Tây Môn Khánh | Nam | Số 4A Đinh Lễ | Cần Thơ |
Doãn Quốc Thiên Thanh | Nữ | 164 Lê Thánh Tông | An Giang |
Phạm Thị Tuyết Nhung | Nữ | Số 169 Trần Quang Diệu | Bạc Liêu |
Châu Tinh Trì | Nam | Số 811 Giải Phóng | Cần Thơ |
HoTen | GioiTinh | DiaChi | ThanhPho |
Ông Hoàng Dược Sư | Nam | 378 Trần Quang Diệu | Đà Nẵng |
– Sao chép toàn bộ dữ liệu từ bảng Customers vào bảng Student
INSERT INTO Student
SELECT *
FROM Customers;
– Sau khi thực thi câu lệnh phía trên thì cái bảng Student sẽ trở thành:
HoTen | GioiTinh | DiaChi | ThanhPho |
Ông Hoàng Dược Sư | Nam | 378 Trần Quang Diệu | Đà Nẵng |
Nguyễn Thành Nhân | Nam | 63 Hoàng Văn Thụ | Cần Thơ |
Lưu Đức Hoa | Nam | 16 Nguyễn Văn Cừ | Vĩnh Long |
Phan Kim Liên | Nữ | Tổ 6 – Hoàng Hoa Thám | Sóc Trăng |
Tây Môn Khánh | Nam | Số 4A Đinh Lễ | Cần Thơ |
Doãn Quốc Thiên Thanh | Nữ | 164 Lê Thánh Tông | An Giang |
Phạm Thị Tuyết Nhung | Nữ | Số 169 Trần Quang Diệu | Bạc Liêu |
Châu Tinh Trì | Nam | Số 811 Giải Phóng | Cần Thơ |
– Sao chép dữ liệu của những khách hàng sống tại Cần Thơ trong bảng Customers vào bảng Student
INSERT INTO Student
SELECT *
FROM Customers
WHERE City = "Cần Thơ";
– Sau khi thực thi câu lệnh phía trên thì cái bảng Student sẽ trở thành:
HoTen | GioiTinh | DiaChi | ThanhPho |
Ông Hoàng Dược Sư | Nam | 378 Trần Quang Diệu | Đà Nẵng |
Nguyễn Thành Nhân | Nam | 63 Hoàng Văn Thụ | Cần Thơ |
Tây Môn Khánh | Nam | Số 4A Đinh Lễ | Cần Thơ |
Châu Tinh Trì | Nam | Số 811 Giải Phóng | Cần Thơ |
– Sao chép dữ liệu của hai cột CustomerName & City trong bảng Customers vào hai cột HoTen & ThanhPho của bảng Student
INSERT INTO Student (HoTen, ThanhPho)
SELECT CustomerName, City
FROM Customers;
– Sau khi thực thi câu lệnh phía trên thì cái bảng Student sẽ trở thành:
HoTen | GioiTinh | DiaChi | ThanhPho |
Ông Hoàng Dược Sư | Nam | 378 Trần Quang Diệu | Đà Nẵng |
Nguyễn Thành Nhân | NULL | NULL | Cần Thơ |
Lưu Đức Hoa | NULL | NULL | Vĩnh Long |
Phan Kim Liên | NULL | NULL | Sóc Trăng |
Tây Môn Khánh | NULL | NULL | Cần Thơ |
Doãn Quốc Thiên Thanh | NULL | NULL | An Giang |
Phạm Thị Tuyết Nhung | NULL | NULL | Bạc Liêu |
Châu Tinh Trì | NULL | NULL | Cần Thơ |
– Lưu ý: Khi chúng ta sao chép dữ liệu (các hàng) từ bảng table1 vào bên trong bảng table2 thì các hàng ban đầu của bảng table2 vẫn được giữ nguyên, chứ không bị mất đi.