LỌC DỮ LIỆU VỚI CÂU LỆNH WHERE TRONG SQL SERVER
Câu lệnh Where trong SQL có tác dụng gì

Thông thường chúng ta hiếm khi bắt gặp được đoạn lệnh nào không dùng mệnh đề Where trong SQL.  Nếu bạn  đơn thuần muốn truy xuất tất cả dữ liệu trong bảng, có thể bạn không cần dùng câu lệnh Where.

Tuy nhiên, thực tế chúng ta chỉ cần kết quả trả lại phải tuân theo một điều kiện cụ thể nào đấy. Mệnh đề Where trong SQL Server sẽ giúp bạn làm điều đó, thậm chí chúng ta có thể áp dụng nhiều điền kiện một lúc chỉ với 1 dòng lệnh.  Tương tự  như Excel nhưng đơn giản hơn Excel rất nhiều. 

Vị trí câu lệnh Where trong SQL Server

Mệnh đề Where trong SQL sẽ đi theo sau mệnh đề FROM, hay nói một cách đơn giản. Thứ tự của các mệnh đề trong các câu truy xuất cơ bản là SELECT -> FROM -> WHERE. Mỗi dòng trong bảng sẽ lần lượt đối chiếu với điều kiện trong mệnh đề WHERE, nếu dòng đó thỏa điều kiện thì sẽ được thể hiện ra ở bảng kết quả.

Một số toán tử thường dùng với mệnh đề Where trong SQL:

  • = (bằng)
  • <> (không bằng)
  • > (lớn hơn)
  • >= (lớn hơn hoặc bằng)
  • < (nhỏ hơn)
  • <= (nhỏ hơn hoặc bằng)

Nếu bạn muốn kiểm tra trong bảng HR của bạn có bao nhiêu nhân viên có độ tuổi lớn hơn 30 thì sẽ sử dụng mệnh đề WHERE như thế nào?

MỆNH ĐỀ WHERE TRONG SQL SERVER

Cú pháp như sau:  
               SELECT *
               FROM HR1
               WHERE AGE > 30
               ORDER BY AGE
Kết quả là có gần 37000 nhân viên trong tổng số 54000 nhân viên, kết quả khá lớn nhỉ. Câu lệnh truy xuất dữ liệu trên mình có sử dụng câu lệnh Order By trong SQL, nếu bạn chưa biết câu lệnh Order By thì xem lại ở đây nhé.

Câu lệnh Where trong SQL có lọc nhiều điều kiện được không?

Câu trả lời là dược bạn nhé, chùng ta có thể sử dụng toán tử Or hoặc And để kết hợp nhiều điểu kiện lại với nhau. Bên cạnh đó SQL cũng có một só hàm với chức năng tương tự.

1/ Kết hợp Where với AND - BETWEEN

Sử dụng lại bảng HR trên nhưng mình muốn tìm ra nhân viên nào lớn hơn hoặc bằng 30nhỏ hơn hoặc bằng 32 thì làm như thể nào?

Cú pháp như sau:  
               SELECT *
               FROM HR1
               WHERE AGE >= 30 AND AGE <= 32
               ORDER BY AGE 

Chép vào vở nhé:  Để kết hợp các điều kiện với nhau chúng ta bắt buộc phải dùng AND hoặc OR bạn nhé, nếu chúng ta viết WHERE  30 <= AGE <= 32 thì sẽ bị lỗi đấy nhé. Thay vào đó chúng ta sẽ sử dụng mệnh đề BETWEEN với cú pháp như sau: 
              SELECT *
               FROM HR1
               WHERE  AGE BETWEEN  30 AND  32
               ORDER BY AGE

2/ Kết hợp câu lệnh Where trong SQL với OR

Nếu mình muốn lấy ra thông tin của nhân viên nào 20 hoặc 25 hoặc 30 tuổi  thì câu lệnh sẽ như sau, bạn thử nghĩ trước rồi xem kết quả nhé.

Cũng giống vơi logic của câu truy xuất trên, chúng ta phải tách từng điều kiện với toán từ OR nhé. Nhưng nếu chúng ta sử dụng OR nhiều quá thì câu lệnh của chúng ta sẽ không đẹp và dễ bị đồng nghiệp cười :v

Vì vậy trong tường hợp này chúng ta có thể sử dụng Mệnh đề IN, cú pháp sẽ như sau:
               SELECT *
               FROM HR1
               WHERE  AGE IN ( 20, 25, 30 )
               ORDER BY AGE

Nếu mình muốn lấy ra thông tin của nhân viên nhỏ hơn hoặc bằng 20 tuổi hoặc lớn hơn hoặc bằng 60 tuổi thì làm sao? Bạn thử làm và xem kết quả nhé.

Nâng cao hơn một tí nhé, mình muốn lấy ra thông tin của nhân viên từ 20 đến 25 buổi hoặc nhân viên 30 tuổi thì sao?

Để câu lệnh có thể dễ nhìn và dễ hiểu hơn thì chúng ta nên dùng dấu ngoặc để hiểu logic của câu lệnh nhé.

That’s it. Như vậy Where có chính năng chính là lọc dữ liệu với một số điều kiện có sẵn. Đối với một số task yêu cầu kết hợp nhiều điều kiện, chúng ta có thể kết hợp các toán tử hoặc các mệnh đề lại với nhau để giải quyết bài toán.

Phần tiếp theo mình sẽ hướng dẫn bạn kết hợp lọc dữ liệu với câu lệnh Where trong SQL cùng với Mệnh đề LIKE, LIKE cũng là một mệnh đề được sử dụng khá nhiều. Nếu bạn quan tâm thì có thể xem bài viết “Câu lệnh Where trong SQL kết hợp với LIKE ” nhé. 

Nội dung