[Tự Học SQL] Tìm Hiểu Về SELECT INTO,INSERT INTO Và CASE Với ...

🔥CHỌN LỌC TOP NHỮNG KHOÁ HỌC LẬP TRÌNH ONLINE NHIỀU NGƯỜI THEO HOC TẠI ĐÂY🔥

Bài này cafedev chia sẻ cho ace về cách sử dụng SELECT INTO,INSERT INTO và CASE trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu, cấu trúc và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

1. SELECT INTO trong SQL

Câu lệnh SELECT INTO sao chép dữ liệu từ một bảng vào một bảng mới.

Cú pháp

SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition;

Chỉ sao chép một số cột vào một bảng mới:

/* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam @author cafedevn Contact: cafedevn@gmail.com Fanpage: https://www.facebook.com/cafedevn Group: https://www.facebook.com/groups/cafedev.vn/ Instagram: https://instagram.com/cafedevn Twitter: https://twitter.com/CafedeVn Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ Pinterest: https://www.pinterest.com/cafedevvn/ YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ */ SELECT column1, column2, column3, ... INTO newtable [IN externaldb] FROM oldtable WHERE condition;

Bảng mới sẽ được tạo với tên và kiểu cột như đã định nghĩa trong bảng cũ. Bạn có thể tạo tên cột mới bằng mệnh đề AS.

Ví dụ:

  • Câu lệnh SQL sau tạo một bản sao lưu của Customers:
SELECT * INTO CustomersBackup2020 FROM Customers;
  • Câu lệnh SQL sau sử dụng mệnh đề IN để sao chép bảng vào một bảng mới trong cơ sở dữ liệu khác:
SELECT * INTO CustomersBackup2017 IN 'BackupCafedev.mdb' FROM Customers;
  • Câu lệnh SQL sau chỉ sao chép một vài cột vào một bảng mới:
SELECT CustomerName, ContactName INTO CustomersBackup2020 FROM Customers;
  • Câu lệnh SQL sau chỉ sao chép các khách hàng VN vào một bảng mới:
SELECT * INTO CustomersGermany FROM Customers WHERE Country = 'VN';
  • Câu lệnh SQL sau sao chép dữ liệu từ nhiều bảng vào một bảng mới:
SELECT Customers.CustomerName, Orders.OrderID INTO CustomersOrderBackup2020 FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Mẹo: SELECT INTO cũng có thể được sử dụng để tạo một bảng mới, trống bằng cách sử dụng lược đồ của một bảng khác. Chỉ cần thêm mệnh đề WHERE khiến truy vấn không trả về dữ liệu:

SELECT * INTO newtable FROM oldtable WHERE 1 = 0;

2. INSERT INTO trong SQL

Câu lệnh INSERT INTO SELECT sao chép dữ liệu từ một bảng và chèn nó vào một bảng khác.

  • INSERT INTO SELECT yêu cầu các kiểu dữ liệu trong bảng nguồn và bảng đích phải khớp
  • Các dữ liệu hiện có trong bảng đích không bị ảnh hưởng

Cú pháp

Sao chép tất cả các cột từ bảng này sang bảng khác:

INSERT INTO table2 SELECT * FROM table1 WHERE condition;
  • Chỉ sao chép một số cột từ một bảng sang một bảng khác:
/* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam @author cafedevn Contact: cafedevn@gmail.com Fanpage: https://www.facebook.com/cafedevn Group: https://www.facebook.com/groups/cafedev.vn/ Instagram: https://instagram.com/cafedevn Twitter: https://twitter.com/CafedeVn Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ Pinterest: https://www.pinterest.com/cafedevvn/ YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ */ INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition;

Ví dụ:

Cấu trúc các bản bạn tham khảo tạo đây.

  • Câu lệnh SQL sau sao chép “Suppliers” vào “Customers” (các cột không chứa dữ liệu, sẽ chứa NULL):
INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers;
  • Câu lệnh SQL sau sao chép “Suppliers” thành “Customers” (điền vào tất cả các cột):
/* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam @author cafedevn Contact: cafedevn@gmail.com Fanpage: https://www.facebook.com/cafedevn Group: https://www.facebook.com/groups/cafedev.vn/ Instagram: https://instagram.com/cafedevn Twitter: https://twitter.com/CafedeVn Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ Pinterest: https://www.pinterest.com/cafedevvn/ YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ */ INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
  • Câu lệnh SQL sau chỉ sao chép các nhà cung cấp của VN vào “Customers”:
INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers WHERE Country='VN';

3. CASE trong SQL

Câu lệnh CASE đi qua các điều kiện và trả về một giá trị khi điều kiện đầu tiên được đáp ứng (giống như câu lệnh IF-THEN-ELSE). Vì vậy, một khi một điều kiện là đúng, nó sẽ ngừng đọc và trả về kết quả. Nếu không có điều kiện nào là đúng, nó trả về giá trị trong mệnh đề ELSE.

Nếu không có phần ELSE và không có điều kiện nào là đúng, nó trả về NULL.

Cú pháp

CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;

Ví dụ:

  • SQL sau đi qua các điều kiện và trả về một giá trị khi điều kiện đầu tiên được đáp ứng:
SELECT OrderID, Quantity, CASE WHEN Quantity > 30 THEN 'The quantity is greater than 30' WHEN Quantity = 30 THEN 'The quantity is 30' ELSE 'The quantity is under 30' END AS QuantityText FROM OrderDetails;
  • SQL sau sẽ sắp xếp các khách hàng theo Thành phố. Tuy nhiên, nếu Thành phố là NULL, thì hãy đặt hàng theo Quốc gia:
/* Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam @author cafedevn Contact: cafedevn@gmail.com Fanpage: https://www.facebook.com/cafedevn Group: https://www.facebook.com/groups/cafedev.vn/ Instagram: https://instagram.com/cafedevn Twitter: https://twitter.com/CafedeVn Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/ Pinterest: https://www.pinterest.com/cafedevvn/ YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/ */ SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END);

Lưu ý: Các bạn tham khảo bài giới thiệu nàyđể lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

Từ khóa » Câu Lệnh Select Into Sql