SQL - EXCEPT Operator: A Comprehensive Guide for Beginners
Xin chào các bạn đam mê SQL! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của SQL, cụ thể là tập trung vào toán tử EXCEPT. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, giải thích mọi thứ từng bước. Vậy hãy cùng nhau khám phá nhé!
The SQL EXCEPT Operator
What is the EXCEPT Operator?
Toán tử EXCEPT trong SQL giống như một枝仗 phép trong SQL, cho phép chúng ta so sánh hai tập kết quả và trả về chỉ các hàng duy nhất từ tập đầu tiên mà không có trong tập thứ hai. Nó giống như tìm sự khác biệt giữa hai nhóm vật phẩm.
Hãy tưởng tượng bạn có hai giỏ trái cây. Giỏ đầu tiên có táo, cam và chuối. Giỏ thứ hai có cam và lê. Nếu chúng ta sử dụng toán tử EXCEPT, chúng ta sẽ chỉ còn lại táo và chuối - những quả trái cây có trong giỏ đầu tiên nhưng không có trong giỏ thứ hai.
Basic Syntax
Dưới đây là cách chúng ta thường viết một câu lệnh EXCEPT:
SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;
A Simple Example
Giả sử chúng ta có hai bảng: employees
và managers
. Chúng ta muốn tìm tất cả nhân viên không phải là quản lý.
SELECT employee_id, name
FROM employees
EXCEPT
SELECT employee_id, name
FROM managers;
Truy vấn này sẽ trả về tất cả nhân viên không có trong bảng managers. Thật tuyệt vời phải không?
EXCEPT with BETWEEN Operator
Bây giờ, hãy làm cho mọi thứ thú vị hơn một chút bằng cách kết hợp EXCEPT với toán tử BETWEEN. Toán tử BETWEEN cho phép chúng ta chọn các giá trị trong một phạm vi nhất định.
Example: Finding Non-Senior Employees
Giả sử chúng ta muốn tìm nhân viên không nằm trong độ tuổi cao cấp (nói chung là 50-65).
SELECT employee_id, name, age
FROM employees
EXCEPT
SELECT employee_id, name, age
FROM employees
WHERE age BETWEEN 50 AND 65;
Truy vấn này sẽ cho chúng ta tất cả nhân viên không nằm trong độ tuổi 50 đến 65. Nó giống như tìm những nhân viên trẻ và những người cao tuổi trong công ty của chúng ta!
EXCEPT with IN Operator
Toán tử IN cho phép chúng ta xác định nhiều giá trị trong một điều kiện WHERE. Khi kết hợp với EXCEPT, nó có thể rất mạnh mẽ.
Example: Employees Not in Specific Departments
Hãy tìm nhân viên không làm việc trong các phòng ban IT, HR hoặc Tài chính.
SELECT employee_id, name, department
FROM employees
EXCEPT
SELECT employee_id, name, department
FROM employees
WHERE department IN ('IT', 'HR', 'Finance');
Truy vấn này sẽ trả về tất cả nhân viên làm việc trong các phòng ban khác ngoài IT, HR và Tài chính. Nó giống như tìm nhữngflake tuyết độc đáo trong công ty của chúng ta!
EXCEPT with LIKE Operator
Toán tử LIKE được sử dụng trong một điều kiện WHERE để tìm kiếm một mẫu cụ thể trong một cột. Khi kết hợp với EXCEPT, chúng ta có thể làm nhiều điều thú vị.
Example: Employees Without 'Manager' in Their Title
Hãy tìm tất cả nhân viên whose job titles don't include the word 'Manager'.
SELECT employee_id, name, job_title
FROM employees
EXCEPT
SELECT employee_id, name, job_title
FROM employees
WHERE job_title LIKE '%Manager%';
Truy vấn này sẽ cho chúng ta tất cả nhân viên whose job titles don't contain 'Manager'. Nó giống như tìm tất cả những người công nhân trong tổ ong công ty của chúng ta!
Putting It All Together
Bây giờ chúng ta đã học về các toán tử khác nhau, hãy kết hợp chúng trong một ví dụ phức tạp hơn.
Example: Complex Employee Query
Hãy tìm tất cả nhân viên:
- Không phải là quản lý
- Đang trong độ tuổi 25 đến 40
- Không làm việc trong phòng ban IT hoặc HR
- Không có 'Specialist' trong job title của họ
SELECT employee_id, name, age, department, job_title
FROM employees
EXCEPT
SELECT employee_id, name, age, department, job_title
FROM employees
WHERE employee_id IN (SELECT employee_id FROM managers)
OR age NOT BETWEEN 25 AND 40
OR department IN ('IT', 'HR')
OR job_title LIKE '%Specialist%';
Truy vấn này có thể trông đáng sợ ban đầu, nhưng nếu bạn phân tích nó, nó chỉ là sự kết hợp của tất cả các khái niệm chúng ta đã học!
Common EXCEPT Methods
Dưới đây là bảng tóm tắt các phương pháp chúng ta đã thảo luận:
Method | Description | Example |
---|---|---|
Basic EXCEPT | Finds rows in first set not in second | SELECT * FROM A EXCEPT SELECT * FROM B |
EXCEPT with BETWEEN | Excludes rows within a range | ... EXCEPT ... WHERE col BETWEEN x AND y |
EXCEPT with IN | Excludes rows matching specified values | ... EXCEPT ... WHERE col IN (a, b, c) |
EXCEPT with LIKE | Excludes rows matching a pattern | ... EXCEPT ... WHERE col LIKE '%pattern%' |
Nhớ rằng, thực hành là chìa khóa để thành công! Hãy thử viết các truy vấn của riêng bạn sử dụng các toán tử này. Đừng sợ mắc lỗi - đó là cách chúng ta học hỏi và phát triển.
Tôi hy vọng hướng dẫn này đã giúp bạn hiểu rõ hơn về toán tử EXCEPT và bạn bè của nó. SQL có thể trông đáng sợ ban đầu, nhưng với thời gian và sự luyện tập, bạn sẽ viết được các truy vấn phức tạp như một chuyên gia. Hãy tiếp tục lập trình, luôn tò mò và quan trọng nhất, hãy vui vẻ với SQL!
Credits: Image by storyset