Cơ BảnDatabase iconDatabase

Câu lệnh SELECT cơ bản trong SQL như thế nào?

Thứ tự thực thi SQL: FROM→JOIN→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT — alias trong SELECT không dùng được trong WHERE vì SELECT chưa chạy; SELECT * trong production là anti-pattern.

  • Thứ tự thực thi SQL (quan trọng để hiểu tại sao không dùng alias trong WHERE): FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT/OFFSET.
  • Câu query thực tế: SELECT u.name, COUNT(o.id) AS order_count FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.created_at > '2024-01-01' GROUP BY u.id, u.name HAVING COUNT(o.id) > 5 ORDER BY order_count DESC LIMIT 20.
  • Aliasing: SELECT price * 0.9 AS discounted_price — alias trong SELECT không dùng được trong WHERE (chưa được tính), nhưng dùng được trong ORDER BY (PostgreSQL cho phép).
  • DISTINCT: SELECT DISTINCT city FROM users loại trùng lặp — có sorting overhead, dùng GROUP BY khi cần performance tốt hơn.
  • SELECT *: không dùng production — lấy data thừa, break khi thêm column, không dùng được covering index.

Pitfall: LIMIT không có ORDER BY → kết quả non-deterministic, mỗi query trả về rows khác nhau.

Xem toàn bộ Database cùng filter theo level & chủ đề con.

Mở danh sách Database