Skip to content

SELECT: Truy vấn dữ liệu

SELECT là lệnh cơ bản nhất trong SQL, dùng để lấy dữ liệu từ cơ sở dữ liệu. Hãy coi nó như việc bạn chọn những món hàng cần mua từ kệ siêu thị.

Cú pháp (Syntax)

sql
SELECT column1, column2, ...
FROM table_name;

Ví dụ thực tế (Real-world Example)

Giả sử bạn có bảng users chứa thông tin khách hàng trên trang thương mại điện tử.

Yêu cầu: Lấy danh sách tên và email của khách hàng để gửi marketing.

sql
SELECT full_name, email
FROM users;

💡 HPN Pro Tip: Tại sao SELECT * là "Kẻ thù" của Performance?

Khi bạn viết SELECT * FROM users, database sẽ phải quét và trả về tất cả các cột.

  1. Lãng phí băng thông (Bandwidth): Nếu bảng có 50 cột nhưng bạn chỉ cần 2, bạn đang tải rác về server.
  2. Mất Index Coverage: Các database hiện đại (Postgres, MySQL) có tính năng "Index Only Scan". Nếu bạn chỉ SELECT các cột có trong Index, database không cần đọc đĩa, tốc độ cực nhanh. SELECT * sẽ phá vỡ cơ chế này.
  3. Schema thay đổi: Code của bạn có thể bị lỗi nếu ai đó thêm một cột kiểu BLOB hoặc JSON nặng vào bảng mà bạn không biết.

Lời khuyên: Luôn chỉ định rõ tên cột cần lấy (Explicit Columns).

⚠️ Common Mistake

Sai: Dùng SELECT * trong production code vì "tiện tay".

sql
-- Đừng làm thế này trong Backend Service
SELECT * FROM orders WHERE user_id = 1;

Đúng:

sql
-- Chỉ lấy những gì service cần
SELECT id, order_status, total_amount FROM orders WHERE user_id = 1;