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

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:

products png

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ả:

SQL Server WHERE simple equality test png

Đâ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:

SQL Server WHERE match two conditions png

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;

SQL Server WHERE comparison operators png

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;

SQL Server WHERE match one of two conditions png

Đ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;

SQL Server WHERE between operator png

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

Ngẫu nhiên