SQL là một ngôn ngữ mạnh mẽ để truy vấn và thao tác dữ liệu trong cơ sở dữ liệu quan hệ. Một trong những tính năng quan trọng nhất của SQL là khả năng lọc dữ liệu dựa trên các tiêu chí nhất định, sử dụng nhiều toán tử và mệnh đề khác nhau. Trong bài viết này, chúng ta sẽ khám phá một số điều kiện lọc và toán tử phổ biến trong SQL cũng như cách sử dụng chúng để truy xuất dữ liệu chúng ta cần.
Mệnh đề WHERE
Cách cơ bản nhất để lọc dữ liệu trong SQL là sử dụng mệnh đề WHERE, mệnh đề này chỉ định một điều kiện phải đúng cho mỗi hàng trong tập kết quả. Ví dụ: nếu muốn tìm tất cả khách hàng sống ở Berlin, chúng ta có thể viết:
SELECT * FROM customers WHERE city = 'Berlin';
Mệnh đề WHERE có thể được sử dụng với bất kỳ câu lệnh SQL nào trả về một tập kết quả, chẳng hạn như SELECT, UPDATE, DELETE, or MERGE. Điều kiện có thể là một so sánh đơn giản, chẳng hạn như city = 'Berlin' hoặc một biểu thức phức tạp hơn liên quan đến các toán tử logic, chẳng hạn như date_of_birth > '1984-01-01' và pet ='Dog'.
Toán tử so sánh
Các toán tử so sánh trong SQL được sử dụng để so sánh hai giá trị và trả về kết quả boolean (đúng hoặc sai). Các toán tử so sánh phổ biến nhất là:
- = (bằng)
- != (không bằng)
-
(lớn hơn)
- < (nhỏ hơn)
-
= (lớn hơn hoặc bằng)
- <= (nhỏ hơn hoặc bằng)
Bạn có thể sử dụng các toán tử này với bất kỳ loại dữ liệu nào hỗ trợ sắp xếp thứ tự, chẳng hạn như số, chuỗi, ngày hoặc thời gian. Ví dụ: nếu muốn tìm tất cả khách hàng nuôi chó và sinh sau năm 1984, chúng ta có thể viết:
SELECT * FROM customers WHERE pet = 'Dog' and date_of_birth > '1984-01-01';
Toán tử logic
Các toán tử logic trong SQL được sử dụng để kết hợp hai hoặc nhiều điều kiện và trả về kết quả boolean. Các toán tử logic phổ biến nhất là:
- AND (trả về true nếu cả hai điều kiện đều đúng)
- OR (trả về true nếu một trong hai điều kiện đúng)
- NOT (trả về true nếu điều kiện sai)
Những toán tử này có thể được sử dụng để tạo các điều kiện lọc phức tạp phù hợp với nhu cầu của chúng ta. Ví dụ: nếu chúng tôi muốn tìm tất cả khách hàng sống ở Berlin hoặc nuôi chó, chúng tôi có thể viết:
SELECT * FROM customers WHERE city = 'Berlin' or pet = 'Dog';
Chúng ta cũng có thể sử dụng dấu ngoặc đơn để nhóm các điều kiện và kiểm soát thứ tự đánh giá. Ví dụ: nếu muốn tìm tất cả khách hàng sống ở Berlin và nuôi một con chó hoặc một con mèo, chúng ta có thể viết:
SELECT * FROM customers WHERE city = 'Berlin' and (pet = 'Dog' or pet = 'Cat');
Toán tử đặc biệt
Bên cạnh các toán tử logic và so sánh cơ bản, SQL còn cung cấp một số toán tử đặc biệt có thể được sử dụng để lọc dữ liệu theo nhiều cách khác nhau. Một số toán tử đặc biệt phổ biến nhất là:
- BETWEEN (trả về true nếu giá trị nằm trong phạm vi được chỉ định)
- IN (trả về true nếu giá trị nằm trong danh sách được chỉ định)
- LIKE (trả về true nếu giá trị khớp với mẫu đã chỉ định)
- IS NULL (trả về true nếu giá trị null)
- EXISTS (trả về true nếu truy vấn con trả về bất kỳ hàng nào)
Các toán tử này có thể hữu ích trong việc lọc dữ liệu dựa trên các tiêu chí khác nhau. Ví dụ: muốn tìm tất cả khách hàng sinh vào những năm 1980, chúng ta có thể viết:
SELECT * FROM customers WHERE date_of_birth BETWEEN '1980-01-01' and '1989-12-31';
Nếu chúng ta muốn tìm tất cả khách hàng có thú cưng là chó, mèo hoặc chim, chúng ta có thể viết:
SELECT * FROM customers WHERE pet IN ('Dog', 'Cat', 'Bird');
Nếu muốn tìm tất cả khách hàng có tên bắt đầu bằng A, chúng ta có thể viết:
SELECT * FROM customers WHERE name LIKE 'A%';
Nếu muốn tìm tất cả khách hàng không nuôi thú cưng, chúng ta có thể viết:
SELECT * FROM customers WHERE pet IS NULL;
Nếu chúng ta muốn tìm tất cả các khách hàng đã thực hiện ít nhất một đơn hàng, chúng ta có thể viết:
SELECT * FROM customers WHERE EXISTS (SELECT * FROM orders WHERE orders.customer_id = customers.id);
Phần kết luận
Lọc dữ liệu là một kỹ năng cần thiết để làm việc với SQL và cơ sở dữ liệu quan hệ. Bằng cách sử dụng các điều kiện lọc khác nhau và các toán tử phổ biến, chúng ta có thể truy xuất dữ liệu mình cần từ các bảng và dạng xem. Trong bài viết này, chúng ta đã đề cập đến một số toán tử cơ bản và đặc biệt trong SQL cũng như cách chúng có thể được sử dụng với mệnh đề WHERE để lọc dữ liệu. Tuy nhiên, đây không phải là danh sách đầy đủ và còn có nhiều toán tử và hàm khác có thể được sử dụng để lọc dữ liệu trong SQL.