SQL - NOT Operator
Xin chào các bạn đam mê SQL! Tôi rất vui mừng được hướng dẫn các bạn khám phá thế giới kỳ diệu của các toán tử SQL, cụ thể là toán tử NOT. Là người đã dạy SQL trong nhiều năm, tôi có thể đảm bảo rằng việc thành thạo toán tử này sẽ nâng cao đáng kể kỹ năng truy vấn cơ sở dữ liệu của bạn. Hãy cùng nhau tìm hiểu nhé!
The SQL NOT Operator
Toán tử NOT giống như một người bạn luôn phản đối mọi điều bạn nói. Nó được sử dụng để phủ định một điều kiện trong SQL, bản chất là lật ngược kết quả của một biểu thức boolean. Khi bạn sử dụng NOT, bạn đang nói, "Hãy cho tôi mọi thứ không khớp với điều kiện này."
Hãy bắt đầu với một ví dụ đơn giản. Giả sử chúng ta có một bảng叫做 students
với các cột id
, name
, và age
.
SELECT * FROM students WHERE NOT age = 20;
Truy vấn này sẽ trả về tất cả học sinh không phải 20 tuổi. Điều này giống như nói, "Hiển thị tất cả học sinh, nhưng loại trừ những người 20 tuổi."
Đây là một ví dụ khác:
SELECT * FROM students WHERE NOT name = 'John';
Truy vấn này sẽ cho chúng ta tất cả học sinh không có tên là John. Poor John, luôn bị bỏ ra ngoài!
SQL NOT Operator with LIKE
Bây giờ, hãy làm cho mọi thứ thú vị hơn bằng cách kết hợp NOT với toán tử LIKE. LIKE được sử dụng để khớp mẫu, và khi kết hợp với NOT, nó trở thành một công cụ mạnh mẽ để loại trừ dựa trên mẫu.
SELECT * FROM students WHERE name NOT LIKE 'A%';
Truy vấn này sẽ trả về tất cả học sinh whose names do not start with 'A'. Điều này giống như tổ chức một buổi tiệc và nói, "Mọi người đều được mời, ngoại trừ những người whose names start with A!" (Xin lỗi, Anna và Alex!)
Đây là một ví dụ thú vị khác:
SELECT * FROM students WHERE email NOT LIKE '%@gmail.com';
Truy vấn này sẽ cho chúng ta tất cả học sinh không sử dụng Gmail. Có lẽ họ là những người thời trang sử dụng các nhà cung cấp email ít biết hơn!
SQL NOT Operator with IN
Toán tử IN được sử dụng để chỉ định nhiều giá trị trong mệnh đề WHERE. Khi kết hợp với NOT, nó cho phép chúng ta loại trừ một danh sách giá trị.
SELECT * FROM students WHERE age NOT IN (18, 19, 20);
Truy vấn này sẽ trả về tất cả học sinh không phải 18, 19 hoặc 20 tuổi. Điều này giống như nói, "Hiển thị tất cả mọi người ngoại trừ thanh thiếu niên và người trẻ tuổi!"
Đây là một ví dụ khác:
SELECT * FROM courses WHERE department NOT IN ('Math', 'Physics', 'Chemistry');
Truy vấn này sẽ cho chúng ta tất cả các khóa học không thuộc các khoa Toán, Vật lý hoặc Hóa học. Điều này hoàn hảo cho những người muốn tránh các khoa học tự nhiên!
SQL NOT Operator with IS NULL
Giá trị NULL trong SQL đại diện cho thông tin bị thiếu hoặc không rõ. Toán tử IS NULL được sử dụng để kiểm tra các giá trị NULL, và khi kết hợp với NOT, nó giúp chúng ta tìm các giá trị không phải NULL.
SELECT * FROM students WHERE phone_number IS NOT NULL;
Truy vấn này sẽ trả về tất cả học sinh đã cung cấp số điện thoại. Điều này giống như nói, "Hiển thị tất cả học sinh mà tôi có thể gọi!"
Đây là một ví dụ thực tế khác:
SELECT * FROM assignments WHERE submission_date IS NOT NULL;
Truy vấn này sẽ cho chúng ta tất cả các bài tập đã được nộp. Không có kẻ lười biếng trong tập kết quả này!
SQL NOT Operator with BETWEEN
Toán tử BETWEEN chọn các giá trị trong một phạm vi cho trước. Khi sử dụng với NOT, nó chọn các giá trị ngoài phạm vi đó.
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
Truy vấn này sẽ trả về tất cả các sản phẩm có giá nhỏ hơn 10 hoặc lớn hơn 20. Điều này hoàn hảo cho những người mua sắm ngân sách và những người săn lùng hàng cao cấp!
Một ví dụ khác:
SELECT * FROM events WHERE event_date NOT BETWEEN '2023-01-01' AND '2023-12-31';
Truy vấn này sẽ cho chúng ta tất cả các sự kiện không diễn ra trong năm 2023. Những người du hành thời gian, hãy chú ý!
SQL NOT Operator with EXISTS
Toán tử EXISTS được sử dụng để kiểm tra sự tồn tại của bất kỳ bản ghi nào trong một truy vấn con. Khi kết hợp với NOT, nó kiểm tra sự vắng mặt của bất kỳ bản ghi nào thỏa mãn truy vấn con.
SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
Truy vấn phức tạp này thực sự làm một điều đơn giản: nó trả về tất cả khách hàng không đặt hàng nào. Điều này giống như tìm tất cả những người dạo chơi trong cơ sở dữ liệu của bạn!
Đây là một ví dụ khác:
SELECT * FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE m.employee_id = e.id);
Truy vấn này sẽ cho chúng ta tất cả nhân viên không phải là quản lý. Đây là một cách tuyệt vời để tìm những người công nhân trong tổ chức của bạn!
Tóm tắt tất cả các phương pháp của toán tử NOT mà chúng ta đã thảo luận, đây là một bảng nhỏ gọn:
Phương pháp | Mô tả | Ví dụ |
---|---|---|
NOT với so sánh cơ bản | Phủ định một điều kiện đơn giản | WHERE NOT age = 20 |
NOT với LIKE | Loại trừ mẫu | WHERE name NOT LIKE 'A%' |
NOT với IN | Loại trừ danh sách giá trị | WHERE age NOT IN (18, 19, 20) |
NOT với IS NULL | Tìm giá trị không phải NULL | WHERE phone_number IS NOT NULL |
NOT với BETWEEN | Loại trừ phạm vi | WHERE price NOT BETWEEN 10 AND 20 |
NOT với EXISTS | Kiểm tra sự vắng mặt trong truy vấn con | WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id) |
Và đó là tất cả, các bạn! Chúng ta đã khám phá toán tử NOT trong toàn bộ vinh quang của nó. Nhớ rằng, trong SQL cũng như trong cuộc sống, đôi khi việc biết bạn không muốn gì cũng quan trọng như việc biết bạn muốn gì. Chúc các bạn may mắn trong việc truy vấn, và hy vọng kết quả của bạn luôn là NOT NULL!
Credits: Image by storyset