| Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) tr…

Được viết bởi admin vào ngày 27/06/2026 lúc 23:55 | 2 lượt xem

Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server

Mục tiêu buổi học:

  • Hiểu cách sử dụng các toán tử logic trong điều kiện WHERE.
  • Kết hợp nhiều điều kiện với AND, OR, NOT.
  • Tránh những lỗi phổ biến khi dùng toán tử logic.

1. Giới thiệu toán tử logic

Khi viết truy vấn SQL, chúng ta thường cần lọc dữ liệu theo nhiều điều kiện. SQL Server cung cấp 3 toán tử logic quan trọng:

Toán tử Ý nghĩa Ví dụ
AND Chỉ chọn các dòng thỏa mãn tất cả điều kiện Chọn nhân viên có lương > 5000  chức vụ là “Manager”
OR Chọn các dòng thỏa mãn ít nhất một điều kiện Chọn nhân viên có lương > 5000 hoặc có chức vụ là “Manager”
NOT Lọc bỏ những dòng thỏa mãn điều kiện Chọn tất cả nhân viên ngoại trừ những người có chức vụ là “Intern”

2. Ví dụ minh họa

🔹 Sử dụng AND

Giả sử bạn có bảng Employees với các cột EmployeeID, FirstName, Salary, JobTitle.

Bạn muốn tìm những nhân viên có lương trên 5000 và giữ chức vụ Manager:

SELECT * FROM Employees
WHERE Salary > 5000 AND JobTitle = 'Manager';

Giải thích: Câu lệnh trên chỉ trả về các nhân viên có cả hai điều kiện đúng.

Sử dụng O​R​ 

Bây giờ, bạn muốn tìm những nhân viên có lương trên 5000 hoặc giữ chức vụ Manager:

SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager';

Giải thích: Chỉ cần một trong hai điều kiện đúng là bản ghi sẽ được chọn.

Sử dụng NOT 

Giả sử bạn muốn tìm tất cả nhân viên ngoại trừ những người có chức vụ “Intern”:

SELECT * FROM Employees
WHERE NOT JobTitle = 'Intern';

Giải thích: SQL Server sẽ lọc tất cả các bản ghi ngoại trừ những người có JobTitle là “Intern”.

Kết hợp AND, OR, NOT Bạn có thể kết hợp nhiều toán tử logic trong cùng một câu truy vấn. Ví dụ: Tìm những nhân viên có lương trên 5000 hoặc là Manager, nhưng không phải là Intern:

SELECT * FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager') AND NOT JobTitle = 'Intern';

Lưu ý: Dùng dấu ngoặc tròn ()` để kiểm soát thứ tự ưu tiên của điều kiện.

3. Những lỗi thường gặp khi sử dụng toán tử logic Quên dấu ngoặc làm thay đổi thứ tự ưu tiên

SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager' AND NOT JobTitle = 'Intern';

Sai: SQL sẽ ưu tiên thực hiện AND trước OR, có thể gây sai kết quả.

Sửa đúng: Dùng dấu ngoặc để đảm bảo điều kiện chạy đúng.

4. Bài tập thực hành 

Tìm nhân viên có lương trên 7000 và làm ở bộ phận “IT”.

Tìm nhân viên có chức vụ là “Sales” hoặc có lương trên 6000.

Tìm tất cả nhân viên ngoại trừ những người có chức vụ “HR”.

Gợi ý đáp án:

-- Bài 1
SELECT * FROM Employees
WHERE Salary > 7000 AND Department = 'IT';

-- Bài 2
SELECT * FROM Employees
WHERE JobTitle = 'Sales' OR Salary > 6000;

-- Bài 3
SELECT * FROM Employees
WHERE NOT JobTitle = 'HR';

Chúc bạn học tốt! Ngày mai, chúng ta sẽ học cách sắp xếp dữ liệu với ORDER BY. Hẹn gặp lại ở Ngày 7 nhé! 🎯

admin

admin

Biên tập viên, Hướng Nghiệp Dữ Liệu
733 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Biên tập viên nội dung tại Hướng Nghiệp Dữ Liệu, phụ trách tổng hợp và biên soạn các bài viết về lập trình Python, dữ liệu và công nghệ.