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

  • ANDOR 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à namecost.


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 CommentsAliases để 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'.