Day 2 - Basics: Filtering
Bối cảnh: Hệ thống E-commerce (Thương mại điện tử)
1. WHERE
WHERE là câu lệnh dùng để lọc dữ liệu theo điều kiện cụ thể.
Ví dụ:
SELECT * FROM orders WHERE total_amount > 100;
Câu lệnh này sẽ trả về tất cả đơn hàng có tổng giá trị lớn hơn 100.
2. Challenge: WHERE
- Yêu cầu: Viết truy vấn để lấy tất cả sản phẩm từ bảng products có giá lớn hơn 50.
3. Solution: WHERE
Giải pháp:
SELECT * FROM products WHERE price > 50;
4. WHERE operators
Các toán tử phổ biến trong WHERE:
\=: Bằng.
!= hoặc <>: Khác.
\>: Lớn hơn.
<: Nhỏ hơn.
\>=: Lớn hơn hoặc bằng.
<=: Nhỏ hơn hoặc bằng.
Ví dụ:
SELECT * FROM customers WHERE city = 'New York';
Câu lệnh này sẽ trả về tất cả khách hàng đến từ thành phố New York.
5. Challenge: WHERE operators
- Yêu cầu: Viết truy vấn để lấy tất cả đơn hàng từ bảng orders có tổng giá trị nhỏ hơn hoặc bằng 200.
6. Solution: WHERE operators
Giải pháp:
SELECT * FROM orders WHERE total_amount <= 200;
7. WHERE with AND/OR
AND và OR dùng để kết hợp nhiều điều kiện.
Ví dụ:
SELECT * FROM products WHERE price > 50 AND category = 'Electronics';
Câu lệnh này sẽ trả về tất cả sản phẩm thuộc danh mục Electronics có giá lớn hơn 50.
8. Challenge: WHERE with AND/OR
- Yêu cầu: Viết truy vấn để lấy tất cả đơn hàng từ bảng orders có tổng giá trị lớn hơn 100 và phương thức thanh toán là 'Credit Card'.
9. Solution: WHERE with AND/OR
Giải pháp:
SELECT * FROM orders WHERE total_amount > 100 AND payment_method = 'Credit Card';
10. Quick note on time zones
Khi làm việc với dữ liệu thời gian, hãy chú ý đến múi giờ.
Ví dụ:
SELECT * FROM orders WHERE order_date >= '2023-10-01' AND order_date < '2023-10-02';
Câu lệnh này sẽ trả về tất cả đơn hàng được đặt vào ngày 1 tháng 10 năm 2023.
11. BETWEEN
BETWEEN dùng để lọc dữ liệu trong một khoảng giá trị.
Ví dụ:
SELECT * FROM products WHERE price BETWEEN 50 AND 100;
Câu lệnh này sẽ trả về tất cả sản phẩm có giá từ 50 đến 100.
12. Challenge: BETWEEN
- Yêu cầu: Viết truy vấn để lấy tất cả đơn hàng từ bảng orders có tổng giá trị từ 100 đến 200.
13. Solution: BETWEEN
Giải pháp:
SELECT * FROM orders WHERE total_amount BETWEEN 100 AND 200;
14. IN
IN dùng để lọc dữ liệu theo một danh sách giá trị.
Ví dụ:
SELECT * FROM customers WHERE city IN ('New York', 'Los Angeles', 'Chicago');
Câu lệnh này sẽ trả về tất cả khách hàng đến từ New York, Los Angeles, hoặc Chicago.
15. Challenge: IN
- Yêu cầu: Viết truy vấn để lấy tất cả sản phẩm từ bảng products thuộc danh mục 'Electronics' hoặc 'Home Appliances'.
16. Solution: IN
Giải pháp:
SELECT * FROM products WHERE category IN ('Electronics', 'Home Appliances');
17. LIKE
LIKE dùng để tìm kiếm dữ liệu theo mẫu.
Các ký tự đặc biệt:
%: Đại diện cho 0 hoặc nhiều ký tự.
_: Đại diện cho 1 ký tự.
Ví dụ:
SELECT * FROM customers WHERE email LIKE '%@gmail.com';
Câu lệnh này sẽ trả về tất cả khách hàng có email kết thúc bằng '@gmail.com'.
18. Challenge: LIKE
- Yêu cầu: Viết truy vấn để lấy tất cả sản phẩm từ bảng products có tên bắt đầu bằng chữ 'S'.
19. Solution: LIKE
Giải pháp:
SELECT * FROM products WHERE product_name LIKE 'S%';
20. Comments & Aliases
Comments: Dùng để ghi chú trong SQL.
Ví dụ:
-- Lấy tất cả sản phẩm có giá lớn hơn 50 SELECT * FROM products WHERE price > 50;
Aliases: Dùng để đặt tên tạm thời cho cột hoặc bảng.
Ví dụ:
SELECT product_name AS name, price AS cost FROM products;
Câu lệnh này sẽ trả về tên sản phẩm và giá với tên cột là name và cost.
21. Today's summary
Hôm nay, bạn đã học:
Cách sử dụng WHERE để lọc dữ liệu.
Các toán tử như AND, OR, BETWEEN, IN, và LIKE.
Cách sử dụng Comments và Aliases để làm cho truy vấn dễ hiểu hơn.
Hẹn gặp lại bạn vào ngày 3 với chủ đề Grouping!
22. Today's challenges
Thử thách 1: Viết truy vấn để lấy tất cả đơn hàng từ bảng orders có tổng giá trị lớn hơn 150 và phương thức thanh toán là 'PayPal'.
Thử thách 2: Viết truy vấn để lấy tất cả khách hàng từ bảng customers có email kết thúc bằng '@yahoo.com'.
Thử thách 3: Viết truy vấn để lấy tất cả sản phẩm từ bảng products có giá từ 20 đến 50 và thuộc danh mục 'Clothing'.