Web Cơ Bản

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

- 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
Ví dụ 1:

- 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ơ
Ví dụ 2:

- 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ơ
Ví dụ 3:

- 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.