Bài này cafedev chia sẻ cho ace về cách sử dụng WHERE và AND, OR, Not, Order By với câu lệnh SELECT trong SQL để lấy ra dữ liệu theo ý muốn của mình.

1. Mệnh đề WHERE

Mệnh đề WHERE được sử dụng để lọc các dữ liệu.

Mệnh đề WHERE chỉ được sử dụng để trích xuất những dữ liệu đáp ứng một điều kiện cụ thể.

1.1 Cú pháp

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

Lưu ý: Mệnh đề WHERE không chỉ được sử dụng trong câu lệnh SELECT, nó còn được sử dụng trong câu lệnh UPDATE, DELETE, v.v.!

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ quốc gia “Stavaer”, trong bảng “Customers”:

SELECT * FROM Customers
WHERE Country='Stavaer'; 
SELECT * FROM Customers
WHERE CustomerID=1;

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha.

1.2 Các toán tử(Operator) sử dụng trong mệnh đề Where

Các toán tử sau có thể được sử dụng trong mệnh đề WHERE:

OperatorMô tả
= Bằng
>Lớn hơn
<Nhỏ hơn
>=Lớn hơn hoặc bằng
<=Nhỏ hơn hoặc bằng
<>Khác. Lưu ý: Trong một số phiên bản SQL, toán tử này có thể được viết là !=
BETWEEN Trong khoảng nào đó
LIKETìm kiếm một mẫu giống
INĐể chỉ định nhiều giá trị có thể có cho một cột

2. Toán tử AND, OR and NOT

Mệnh đề WHERE có thể được kết hợp với các toán tử AND, OR và NOT.

Toán tử AND và OR được sử dụng để lọc các dữ liệu dựa trên nhiều hơn một điều kiện:

Toán tử AND hiển thị một dữ liệu nếu tất cả các điều kiện được phân tách bằng AND đều ĐÚNG.
Toán tử OR hiển thị một dữ liệu nếu bất kỳ điều kiện nào được phân tách bởi OR là TRUE.

Toán tử NOT hiển thị bản ghi nếu (các) điều kiện KHÔNG ĐÚNG.

2.1 Cú pháp AND

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...; 

Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” có quốc gia là “Germany” VÀ thành phố là “Berlin”:

SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

2.2 Cú pháp OR

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...; 

Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” có thành phố là “Berlin” HOẶC “München”:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

2.3 Cú pháp NOT

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

Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” mà quốc gia KHÔNG phải là “Germany”:

SELECT * FROM Customers
WHERE NOT Country='Germany';

2.4 Kết hợp AND, OR và NOT

Ví dụ: Câu lệnh SQL sau chọn tất cả các trường từ “Customers” trong đó quốc gia là “Germany” VÀ thành phố phải là “Berlin” HOẶC “München” (sử dụng dấu ngoặc đơn để tạo biểu thức phức tạp):

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München'); 
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA'; 

3. ORDER BY trong SQL

Từ khóa ORDER BY được sử dụng để sắp xếp tập hợp kết quả theo thứ tự tăng dần hoặc giảm dần.

Từ khóa ORDER BY sắp xếp các dữ liệu theo thứ tự tăng dần theo mặc định. Để sắp xếp các dữ liệu theo thứ tự giảm dần, hãy sử dụng từ khóa DESC.

3.1 Cú pháp

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC; 

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”, được sắp xếp theo cột “Country”:

SELECT * FROM Customers
ORDER BY Country;

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”, được sắp xếp GIẢM DẦN theo cột “Country”:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Customers
ORDER BY Country DESC;

3.1 ORDER BY trên nhiều cột

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”, được sắp xếp theo cột “Country” và cột “CustomerName”. Điều này có nghĩa là nó đặt hàng theo Quốc gia, nhưng nếu một số hàng có cùng Quốc gia, nó sẽ đặt hàng theo CustomerName:

SELECT * FROM Customers
ORDER BY Country, CustomerName; 

Ví dụ: Câu lệnh SQL sau chọn tất cả khách hàng từ bảng “Customers”, được sắp xếp tăng dần theo “Country” và giảm dần theo cột “CustomerName”:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC; 

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!