Khi làm việc với dữ liệu, việc lấy toàn bộ bảng ra hiếm khi cần thiết. Trong thực tế, chúng ta thường chỉ quan tâm đến một phần dữ liệu thỏa điều kiện nhất định, chẳng hạn: danh sách học sinh lớp 12, những người có điểm trên 8, hoặc sản phẩm đang còn hàng. Đó là lúc câu lệnh WHERE
phát huy tác dụng.
Trong bài học này, bạn sẽ được làm quen với cách sử dụng mệnh đề WHERE
trong SQL – công cụ giúp bạn truy xuất dữ liệu một cách chọn lọc và chính xác hơn.
Câu lệnh SELECT kết hợp WHERE
Cú pháp cơ bản:
SELECT column1, column2, ...
FROM ten_bang
WHERE dieu_kien;
Ví dụ: Lấy thông tin tất cả học sinh có giới tính là ‘Nữ’:
SELECT ho_ten, lop, gioi_tinh
FROM hoc_sinh
WHERE gioi_tinh = 'Nữ';
Lọc dữ liệu theo nhiều điều kiện
Bạn có thể dùng các toán tử so sánh để thiết lập điều kiện:
Toán tử | Ý nghĩa |
---|---|
= | Bằng |
!=, <> | Khác |
> | Lớn hơn |
>= | Lớn hơn hoặc bằng |
< | Nhỏ hơn |
<= | Nhỏ hơn hoặc bằng |
Ví dụ: Tìm học sinh lớp 12 có điểm trung bình lớn hơn 8:
SELECT ho_ten, lop, diem_tb
FROM hoc_sinh
WHERE lop = 12 AND diem_tb > 8;
Kết hợp nhiều điều kiện bằng AND / OR
- AND: tất cả điều kiện phải đúng
- OR: chỉ cần một trong các điều kiện đúng
Ví dụ: Lấy học sinh có điểm trung bình dưới 5 hoặc thuộc lớp 10:
SELECT ho_ten, lop, diem_tb
FROM hoc_sinh
WHERE diem_tb < 5 OR lop = 10;
Ví dụ: Lấy học sinh nữ ở lớp 11:
SELECT ho_ten, gioi_tinh, lop
FROM hoc_sinh
WHERE gioi_tinh = 'Nữ' AND lop = 11;
Sử dụng NOT để phủ định
Cú pháp:
SELECT ...
FROM ...
WHERE NOT dieu_kien;
Ví dụ: Lấy tất cả học sinh không thuộc lớp 12:
SELECT ho_ten, lop
FROM hoc_sinh
WHERE NOT lop = 12;
Các lưu ý khi dùng WHERE
- Kiểu dữ liệu phải khớp: nếu cột là số, bạn không đặt giá trị trong dấu nháy đơn.
- Chuỗi phải đặt trong
'
hoặc"
tùy hệ quản trị (MySQL chấp nhận'abc'
) - Trong trường hợp điều kiện phức tạp, bạn nên dùng dấu ngoặc
()
để phân nhóm.
Ví dụ:
SELECT *
FROM hoc_sinh
WHERE (lop = 12 OR lop = 11) AND diem_tb >= 7;
Tự luyện
- Viết câu lệnh lấy tất cả học sinh có điểm dưới 6.
- Lấy danh sách học sinh lớp 10 hoặc lớp 11, giới tính là nam.
- Lấy tất cả học sinh không học lớp 12 và có điểm trung bình trên 7.
Kết luận
Mệnh đề WHERE
là nền tảng quan trọng giúp bạn tìm đúng phần dữ liệu mình cần trong một bảng lớn. Kết hợp cùng các toán tử và điều kiện logic, bạn sẽ có thể tạo ra những truy vấn mạnh mẽ và linh hoạt. Trong bài tiếp theo, chúng ta sẽ học cách sắp xếp kết quả với ORDER BY
.
Ghi nhớ: Không phải lúc nào cũng cần SELECT * – hãy chọn cột cần thiết và dùng WHERE để lọc thông minh.
Thảo luận