MySQL - IN Operator

Xin chào các bạn, những法师 cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ cùng tìm hiểu một trong những công cụ hữu ích nhất của MySQL: toán tử IN. Hãy tưởng tượng nó như một枝 c魔法 giúp bạn lọc dữ liệu hiệu quả hơn. Vậy, hãy ngồi vào vị trí ảo của bạn, và cùng nhau bắt đầu hành trình thú vị này nhé!

MySQL - IN Operator

MySQL In Operator

Toán tử IN giống như một bảo vệ thân thiện tại câu lạc bộ. Nó kiểm tra xem một giá trị có khớp với bất kỳ giá trị nào trong danh sách hay không. Hãy tưởng tượng bạn muốn biết liệu quả yêu thích của bạn có sẵn tại cửa hàng hay không. Thay vì hỏi từng câu như "Bạn có táo không? Bạn có chuối không? Bạn có cam không?" bạn chỉ cần hỏi một câu duy nhất: "Bạn có bất kỳ trong số này: táo, chuối hoặc cam không?" Đó chính xác là điều mà toán tử IN làm!

Hãy xem một ví dụ đơn giản:

SELECT * FROM fruits WHERE name IN ('apple', 'banana', 'orange');

Truy vấn này có nghĩa là "Hiển thị cho tôi tất cả các loại quả là táo, chuối hoặc cam." Nó giống như nói với máy tính của bạn để làm một thám tử quả!

Đây là một ví dụ khác:

SELECT * FROM employees WHERE department IN ('HR', 'IT', 'Finance');

Truy vấn này lấy tất cả nhân viên làm việc trong các phòng ban HR, IT hoặc Tài chính. Nó ngắn gọn hơn nhiều so với việc viết:

SELECT * FROM employees WHERE department = 'HR' OR department = 'IT' OR department = 'Finance';

Thấy cách toán tử IN làm cho mọi thứ trở nên ngăn nắp hơn phải không? Nó giống như dọn dẹp tủ SQL của bạn!

The IN Operator in UPDATE statement

Bây giờ, hãy xem cách chúng ta có thể sử dụng toán tử IN để cập nhật dữ liệu. Hãy tưởng tượng bạn là một giáo viên (như tôi!) và bạn muốn thưởng cho tất cả học sinh đạt điểm số 95, 98 hoặc 100 trong kỳ thi.

UPDATE students
SET has_bonus = TRUE
WHERE score IN (95, 98, 100);

Truy vấn này cập nhật tất cả học sinh có điểm số là 95, 98 hoặc 100, đặt trường 'has_bonus' của họ thành TRUE. Nó giống như挥舞 một枝魔法 và nói, "Chúc mừng, những người có điểm cao!"

MySQL NOT IN operator

Đôi khi, chúng ta muốn tìm những thứ không nằm trong một danh sách cụ thể. Đó là lúc NOT IN ra vào cuộc chơi. Nó giống như nói, "Hiển thị cho tôi tất cả ngoại trừ những thứ này."

Ví dụ:

SELECT * FROM fruits WHERE name NOT IN ('apple', 'banana', 'orange');

Truy vấn này sẽ hiển thị tất cả các loại quả ngoại trừ táo, chuối và cam. Nó hoàn hảo cho khi bạn cảm thấy冒险 và muốn thử các loại quả mới!

Comparing Values Using IN Operator

Toán tử IN rất hữu ích để so sánh nhiều giá trị. Hãy nói bạn là một thủ thư (tôi từng tình nguyện tại thư viện khi còn đi học!), và bạn muốn tìm sách của một số tác giả nhất định:

SELECT title, author FROM books
WHERE author IN ('J.K. Rowling', 'George R.R. Martin', 'Stephen King');

Truy vấn này sẽ lấy tất cả các sách viết bởi ba tác giả này. Nó giống như một cuộc săn kho báu văn học!

MySQL Subquery with IN operator

Bây giờ, hãy nâng cấp và sử dụng một subquery với toán tử IN. Subquery là như một truy vấn trong truy vấn - nó là SQL trong SQL!

Hãy tưởng tượng bạn muốn tìm tất cả nhân viên làm việc trong các phòng ban có hơn 50 nhân viên:

SELECT name, department
FROM employees
WHERE department IN (
SELECT department
FROM employees
GROUP BY department
HAVING COUNT(*) > 50
);

Truy vấn này đầu tiên tìm tất cả các phòng ban có hơn 50 nhân viên, sau đó sử dụng kết quả đó để tìm tất cả nhân viên trong các phòng ban đó. Nó giống như hỏi, "Ai là phần của các đội lớn?"

In Operator Using Client Program

Khi sử dụng một chương trình client để tương tác với MySQL, bạn có thể sử dụng các biến với toán tử IN. Điều này đặc biệt hữu ích khi bạn muốn làm cho truy vấn của mình linh hoạt hơn.

Dưới đây là một ví dụ sử dụng Python:

import mysql.connector

# Kết nối đến cơ sở dữ liệu
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Định nghĩa các giá trị bạn muốn tìm kiếm
search_values = ('apple', 'banana', 'orange')

# Tạo truy vấn
query = "SELECT * FROM fruits WHERE name IN (%s, %s, %s)"

# Thực thi truy vấn
cursor.execute(query, search_values)

# Lấy và in kết quả
for (name, color, price) in cursor:
print(f"{name}: {color}, ${price}")

# Đóng kết nối
cursor.close()
cnx.close()

Trong ví dụ này, chúng ta sử dụng Python để kết nối với cơ sở dữ liệu MySQL và thực thi một truy vấn với toán tử IN. Các placeholder %s trong truy vấn được thay thế bằng các giá trị từ search_values khi truy vấn được thực thi.

Dưới đây là bảng tóm tắt các cách khác nhau chúng ta đã sử dụng toán tử IN:

Sử dụng Ví dụ
Basic SELECT SELECT * FROM fruits WHERE name IN ('apple', 'banana', 'orange');
UPDATE UPDATE students SET has_bonus = TRUE WHERE score IN (95, 98, 100);
NOT IN SELECT * FROM fruits WHERE name NOT IN ('apple', 'banana', 'orange');
With Subquery SELECT name FROM employees WHERE department IN (SELECT department FROM employees GROUP BY department HAVING COUNT(*) > 50);
In Client Program query = "SELECT * FROM fruits WHERE name IN (%s, %s, %s)"

Và đó là tất cả, các bạn! Chúng ta đã khám phá toán tử IN từ nhiều góc độ khác nhau. Nhớ rằng, thực hành làm cho hoàn hảo, vì vậy đừng ngại thử nghiệm với các truy vấn này. SQL có thể看起来 đáng sợ ban đầu, nhưng với thời gian, bạn sẽ viết các truy vấn như một chuyên gia. Tiếp tục mã hóa, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó!

Credits: Image by storyset