1. Lệnh SELECT và FROM: Chọn cái gì? Từ đâu?
Để lấy dữ liệu, bạn cần trả lời 2 câu hỏi: Bạn muốn lấy cột nào? (SELECT) và Lấy từ bảng nào? (FROM).
1.1 Lấy toàn bộ các cột trong bảng
Ký tự dấu sao (*) đại diện cho "Tất cả các cột".
Ví dụ: Hãy lấy toàn bộ danh sách Khách hàng.
SELECT * FROM Customers;
1.2 Lấy một số cột cụ thể
Trong thực tế, bạn KHÔNG NÊN dùng SELECT * vì nó lấy ra rất nhiều dữ liệu thừa, làm chậm hệ thống. Hãy chỉ rõ tên cột bạn cần.
Ví dụ: Tôi chỉ cần biết Tên và Số điện thoại của Khách hàng.
SELECT FullName, PhoneNumber FROM Customers;
1.3 Đổi tên cột hiển thị (Alias)
Nhiều khi tên cột trong DB là tiếng Anh (FullName), bạn muốn khi xuất ra báo cáo nó là tiếng Việt. Ta dùng từ khóa AS.
SELECT
FullName AS N'Họ và Tên',
PhoneNumber AS N'Số điện thoại'
FROM Customers;
2. Lệnh WHERE: Lọc dữ liệu theo điều kiện
Rất hiếm khi chúng ta lấy TOÀN BỘ dữ liệu. Thường bạn sẽ có yêu cầu như: "Lọc ra những sản phẩm có giá trên 20 triệu". Lúc này ta dùng WHERE.
SELECT ProductName, Price
FROM Products
WHERE Price > 20000000;
3. Các toán tử phổ biến trong WHERE
Để lọc dữ liệu chính xác, bạn cần nắm vững các toán tử sau:
- Toán tử so sánh: =, >, <, >=, <=, <> (hoặc != nghĩa là Khác).
- Toán tử logic: AND (Và), OR (Hoặc).
- Toán tử IN: Nằm trong một danh sách.
- Toán tử BETWEEN: Nằm trong một khoảng.
Ví dụ 1 (Dùng AND): Tìm Khách hàng ở Hà Nội VÀ có đuôi email là gmail (ví dụ này giả định có email dạng @gmail.com).
SELECT * FROM Customers
WHERE City = N'Hà Nội' AND Email LIKE '%@gmail.com%';
Ví dụ 2 (Dùng IN): Lấy các đơn hàng có trạng thái là 'Pending' hoặc 'Cancelled'. Thay vì viết OR dài dòng, ta dùng IN.
SELECT * FROM Orders
WHERE OrderStatus IN ('Pending', 'Cancelled');
4. Kỹ thuật tìm kiếm chuỗi với từ khóa LIKE
LIKE cho phép tìm kiếm gần đúng. Ký tự % đại diện cho "bất kỳ chuỗi nào".
- LIKE 'Nguyễn%': Tìm người có tên BẮT ĐẦU bằng "Nguyễn".
- LIKE '%Logitech%': Tìm sản phẩm có chứa chữ "Logitech" ở GIỮA tên.
Ví dụ: Tìm các sản phẩm mà tên có chứa chữ 'iPhone'.
SELECT * FROM Products
WHERE ProductName LIKE '%iPhone%';
Thực hành
Hãy tự viết các câu SQL sau trên bảng ShopDB:
1. Lấy ra danh sách các Sản phẩm (chỉ hiện cột ProductName và Price) thuộc danh mục (Category) là 'Smartphone'.
2. Lấy ra các Đơn hàng (Orders) có tổng tiền (TotalAmount) từ 10 triệu đến 30 triệu.
Tổng kết (Key Takeaways)
- SELECT dùng để chọn cột, FROM để chọn bảng.
- WHERE dùng để lọc các hàng (dữ liệu) thỏa mãn điều kiện.
- Hạn chế dùng SELECT *, hãy chỉ định rõ các cột cần lấy để tối ưu tốc độ.
- Các toán tử IN, BETWEEN, LIKE là vũ khí lợi hại để lọc dữ liệu phức tạp.
Điều hướng (Next Steps)
Bạn đã biết cách lấy và lọc dữ liệu. Nhưng dữ liệu hiện ra thường lộn xộn. Sang bài tiếp theo, chúng ta sẽ học cách sắp xếp chúng cho gọn gàng với [Bài 7: Sắp xếp và Giới hạn dữ liệu: ORDER BY, TOP, OFFSET FETCH].