Mệnh đề Where trong SQL Server
Trong bài này chúng ta sẽ học lệnh Where trong SQL Server, đây là lệnh dùng để thêm điều kiện lọc dữ liệu, thường được dùng kết hợp trong lệnh Select và Update.
Ở bài trước bạn đã được học lệnh Select, và mình cũng có nói qua về cách thiết lập điều kiện Where. Để giúp bạn hiểu rõ hơn thì bài này mình sẽ nói một cách chi tiết và cụ thể nhất.
1. Giới thiệu lệnh Where trong SQL Server
Khi bạn sử dụng lệnh Select để lấy dữ liệu thì nó sẽ trả về tất cả dữ liệu hiện có trong bảng, điều này rõ ràng không tối ưu trong một số trường hợp.
Giả sử bạn muốn khen thưởng nhân viên A, và bạn dùng lệnh select để tìm, nhưng với hàng ngàn kết quả trả về thì với mắt thường không thể kiểm soát được
Bài viết này được đăng tại [free tuts .net]
Giải pháp là ta sử dụng lệnh Where để bổ sung điều kiện lọc cho lệnh select.
Cú pháp của nó như sau:
SELECT select_list FROM table_name WHERE search_condition;
Phía sau mệnh đề where là những toán tử logic trả về TRUE hoặc FALSE như:
- a = b (toán tử bằng)
- a <> b (toán tử khác)
- a in b (toán tử in)
- Và nhiều toán tử khác nữa, mình sẽ nói đến ở một bài khác.
2. Ví dụ thực hành Where trong SQL Server
Chúng ta hãy làm một vài ví dụ thực tế nhé, điều này sẽ giúp bạn dễ hiểu bài hơn.
Giả sử mình có một bảng Products có cấu trúc như sau:
Bây giờ hãy làm một vài bài tập liên quan đến table này.
Tìm kiếm một điều kiện
Đề bài: Tìm kiếm tất cả sản phẩm thuộc chuyên mục có category_id = 1.
SELECT product_id, product_name, category_id, model_year, list_price FROM production.products WHERE category_id = 1 ORDER BY list_price DESC;
Kết quả:
Đây là trường hợp so sánh với toán tử bằng (=) khá đơn giản. Lệnh Where sẽ lọc và chọn tất cả những sản phẩm nào có category_id = 1, những sản phẩm không hợp lệ sẽ bị loại bỏ khỏi kết quả trả về.
Tìm kiếm vơi hai điều kiện
Đề bài: Tìm tất cả sản phẩm thuộc chuyên mục có category_id = 1 và năm sản xuất là 2018.
Như vậy chúng ta có hai điều kiện lọc, vì vậy ta sử dụng toán tử AND để nối giữa hai điều kiện.
SELECT product_id, product_name, category_id, model_year, list_price FROM production.products WHERE category_id = 1 AND model_year = 2018 ORDER BY list_price DESC;
Kết quả như sau:
Sử dụng toán tử so sánh lớn hơn
Đề bài: Hãy tìm sản phẩm có giá lớn hơn 300 và năm sản xuất là 2018.
Để giải bài này ta dùng toán tử so sánh lớn hơn >
.
SELECT product_id, product_name, category_id, model_year, list_price FROM production.products WHERE list_price > 300 AND model_year = 2018 ORDER BY list_price DESC;
Sử dụng toán tử OR
Đề bài: Tìm sản phẩm có năm sản xuất là 2018 hoặc giá bán lớn hơn 3000.
Với bài này ta phải dùng toán tử OR để thiết lập điều kiện 1 trong 2.
SELECT product_id, product_name, category_id, model_year, list_price FROM production.products WHERE list_price > 3000 OR model_year = 2018 ORDER BY list_price DESC;
Điều kiện nằm trong khoảng
Đề bài: Tìm sản phẩm có giá nằm trong khoảng 1899.00 và 1999.99.
Nằm trong khoảng thì ta dùng toán tử BETWEEN.
SELECT product_id, product_name, category_id, model_year, list_price FROM production.products WHERE list_price BETWEEN 1899.00 AND 1999.99 ORDER BY list_price DESC;
Vẫn còn nhiều toán tử thường sử dụng trong WHERE nữa như: IS NULL, IS NOT NULL, ... nhưng mình sẽ dành nó để viết ở một bài khác.
Như vậy là chúng ta đã học xong cách sử dụng mệnh đề WHERE trong SQL Server. Phần này mình nghĩ không quá khó, chủ yếu là bạn hiểu cách dùng các toán tử.