SQL - WHERE Clause

Chào mừng các bạn, những phù thủy cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ cùng khám phá một trong những công cụ mạnh mẽ nhất trong bộ công cụ SQL của bạn: mệnh đề WHERE. Là người giáo viên khoa học máy tính gần gũi của bạn, tôi ở đây để hướng dẫn bạn trong hành trình thú vị này. Hãy chuẩn bị những枝 c魔法 ảo (bàn phím) của bạn và cùng thực hiện một chút phép màu SQL nhé!

SQL - Where Clause

The SQL Where Clause

Hãy tưởng tượng bạn đang ở một thư viện khổng lồ với hàng triệu cuốn sách. Bạn đang tìm một cuốn sách cụ thể về rồng. Bạn có thể sẽ không đi qua từng cuốn sách không? Tất nhiên là không! Bạn sẽ yêu cầu thư ký thư viện giúp bạn tìm các cuốn sách về rồng. Trong SQL, mệnh đề WHERE chính là người thư ký hữu ích đó.

Mệnh đề WHERE cho phép chúng ta lọc dữ liệu dựa trên các điều kiện cụ thể. Nó giống như nói với cơ sở dữ liệu, "Hey, tôi chỉ muốn thấy thông tin cụ thể này thỏa mãn các tiêu chí này."

Dưới đây là cú pháp cơ bản:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Đừng lo lắng nếu điều này trông có vẻ đáng sợ. Chúng ta sẽ phân tích nó từng phần, và sớm bạn sẽ có thể lọc dữ liệu như một chuyên gia!

WHERE Clause with SELECT Statement

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. Chúng ta muốn tìm tất cả các học sinh 18 tuổi.

SELECT *
FROM students
WHERE age = 18;

Trong truy vấn này:

  • SELECT * có nghĩa là chúng ta muốn xem tất cả các cột.
  • FROM students xác định bảng mà chúng ta đang truy vấn.
  • WHERE age = 18 là điều kiện của chúng ta. Nó giống như nói, "Chỉ hiển thị các hàng có độ tuổi chính xác là 18."

Giả sử chúng ta chỉ muốn xem tên của các học sinh 18 tuổi:

SELECT name
FROM students
WHERE age = 18;

Thấy cách chúng ta thay đổi * thành name không? Bây giờ chúng ta chỉ sẽ thấy tên, không phải tất cả các cột.

WHERE Clause with UPDATE Statement

Mệnh đề WHERE không chỉ dùng cho các truy vấn SELECT. Nó cũng rất hữu ích khi cập nhật dữ liệu. Giả sử chúng ta muốn cập nhật độ tuổi của tất cả các học sinh tên là "Alice" thành 19.

UPDATE students
SET age = 19
WHERE name = 'Alice';

Truy vấn này sẽ thay đổi độ tuổi thành 19, nhưng chỉ đối với các học sinh tên Alice. Nếu không có mệnh đề WHERE, chúng ta sẽ vô tình thay đổi độ tuổi của tất cả mọi người!

WHERE Clause with IN Operator

Vậy nếu chúng ta muốn tìm các học sinh có độ tuổi là 18, 19 hoặc 20? Chúng ta có thể sử dụng nhiều điều kiện OR, nhưng có một cách gọn hơn: toán tử IN.

SELECT *
FROM students
WHERE age IN (18, 19, 20);

Truy vấn này sẽ trả về tất cả các học sinh có độ tuổi là 18, 19 hoặc 20. Nó giống như nói, "Độ tuổi có trong danh sách này không? Nếu có, bao gồm nó!"

WHERE Clause with NOT IN Operator

Bây giờ, giả sử chúng ta muốn tìm tất cả các học sinh không phải 18, 19 hoặc 20? Đơn giản thôi! Chúng ta chỉ cần thêm NOT trước IN:

SELECT *
FROM students
WHERE age NOT IN (18, 19, 20);

Truy vấn này sẽ cho chúng ta tất cả các học sinh có độ tuổi khác 18, 19 hoặc 20.

WHERE Clause with LIKE Operator

Đôi khi, chúng ta cần tìm kiếm các mẫu trong dữ liệu văn bản. Đó là khi toán tử LIKE rất hữu ích. Giả sử chúng ta muốn tìm tất cả các học sinh có tên bắt đầu bằng chữ 'A':

SELECT *
FROM students
WHERE name LIKE 'A%';

Trong truy vấn này, '%' là một ký tự đại diện phù hợp với bất kỳ chuỗi ký tự nào. Vậy 'A%' có nghĩa là "bắt đầu bằng A, tiếp theo là bất kỳ gì."

Chúng ta cũng có thể tìm kiếm các tên kết thúc bằng 'n':

SELECT *
FROM students
WHERE name LIKE '%n';

Hoặc các tên có chứa 'li' ở bất kỳ đâu:

SELECT *
FROM students
WHERE name LIKE '%li%';

WHERE Clause with AND, OR Operators

Thường xuyên, chúng ta cần kết hợp nhiều điều kiện. Đó là khi AND và OR được sử dụng.

Hãy tìm tất cả các học sinh có độ tuổi 18 và tên bắt đầu bằng 'A':

SELECT *
FROM students
WHERE age = 18 AND name LIKE 'A%';

Hoặc có thể chúng ta muốn các học sinh có độ tuổi 18 hoặc tên bắt đầu bằng 'A':

SELECT *
FROM students
WHERE age = 18 OR name LIKE 'A%';

Bạn có thể kết hợp các toán tử này để tạo ra các điều kiện phức tạp:

SELECT *
FROM students
WHERE (age = 18 OR age = 19) AND (name LIKE 'A%' OR name LIKE 'B%');

Truy vấn này sẽ tìm các học sinh có độ tuổi hoặc là 18 hoặc 19, và tên bắt đầu bằng 'A' hoặc 'B'.

Dưới đây là bảng tóm tắt các toán tử chúng ta đã học:

Toán tử Mô tả Ví dụ
= Bằng WHERE age = 18
<> hoặc != Không bằng WHERE age <> 18
> Lớn hơn WHERE age > 18
< Nhỏ hơn WHERE age < 18
>= Lớn hơn hoặc bằng WHERE age >= 18
<= Nhỏ hơn hoặc bằng WHERE age <= 18
IN Khớp với bất kỳ giá trị nào trong danh sách WHERE age IN (18, 19, 20)
NOT IN Không khớp với bất kỳ giá trị nào trong danh sách WHERE age NOT IN (18, 19, 20)
LIKE Khớp với mẫu WHERE name LIKE 'A%'
AND Cả hai điều kiện phải đúng WHERE age = 18 AND name LIKE 'A%'
OR Bất kỳ điều kiện nào cũng được WHERE age = 18 OR name LIKE 'A%'

Và thế là bạn đã học xong về mệnh đề WHERE rồi, các bạn ơi! Hãy nhớ, thực hành là chìa khóa của thành công. Hãy thử viết các truy vấn của riêng bạn, thử nghiệm với các điều kiện khác nhau, và sớm bạn sẽ có thể lọc dữ liệu như một quản trị viên cơ sở dữ liệu có kinh nghiệm.

Chúc các bạn thành công và may mắn với các mệnh đề WHERE của bạn!

Credits: Image by storyset