Một câu hỏi rõ ràng là điểm bắt đầu tốt khi học SQL. Trong ví dụ này, câu hỏi là: “Ai có điểm SQL từ 8 trở lên, xếp từ cao xuống thấp?”. Ta dùng dữ liệu giả đặt ngay trong truy vấn PostgreSQL nên không cần tạo hoặc sửa bảng thật.
1. Chuẩn bị nơi chạy
Mở Query Tool của pgAdmin hoặc một kết nối PostgreSQL thử nghiệm mà bạn có quyền sử dụng. Đây là cú pháp PostgreSQL; một số hệ quản trị khác có thể yêu cầu cách viết khác cho bảng giá trị trong CTE.
2. Chạy truy vấn mẫu
WITH scores (name, subject, score) AS (
VALUES ('An', 'SQL', 8),
('Binh', 'SQL', 6),
('Chi', 'SQL', 9),
('An', 'Web', 7)
)
SELECT name, score
FROM scores
WHERE subject = 'SQL' AND score >= 8
ORDER BY score DESC, name ASC;
Kết quả mong đợi có hai dòng: Chi với 9 điểm, sau đó An với 8 điểm. Bình không được chọn vì có 6 điểm; dòng Web của An không được chọn vì khác môn.
3. Đọc câu lệnh theo vai trò
WITHđặt tên cho tập dữ liệu mẫu chỉ tồn tại trong câu lệnh.SELECT name, scorechọn hai cột cần hiển thị.WHEREgiữ lại các dòng thỏa cả hai điều kiện.ORDER BY score DESC, name ASCsắp theo điểm giảm dần, rồi theo tên khi bằng điểm.
Đừng suy ra thứ tự kết quả chỉ từ thứ tự dữ liệu nhập. Khi cần thứ tự cụ thể, hãy viết ORDER BY.
4. Thử thay đổi có kiểm soát
Đổi điều kiện thành score >= 6. Bạn phải nhận được ba dòng thuộc môn SQL. Sau đó đổi DESC thành ASC để đưa điểm thấp lên trước.
Giữ nguyên dữ liệu mẫu, chỉ thay một thành phần mỗi lần. Viết kết quả dự đoán ra giấy rồi so sánh với kết quả truy vấn giúp phát hiện hiểu nhầm sớm hơn.
Bài tập và lỗi thường gặp
Hãy lấy riêng môn Web, chỉ hiển thị tên và điểm. Kết quả cần có An, 7. Chuỗi văn bản như 'Web' dùng dấu nháy đơn. Nếu kết quả rỗng, kiểm tra điều kiện lọc và cách viết hoa/thường trước khi cho rằng dữ liệu đã mất.
Tệp SQL mẫu có trong thư viện Tài nguyên. Bài này chỉ sử dụng truy vấn đọc; chưa cần UPDATE, DELETE hay thay đổi cấu trúc dữ liệu.
Tài liệu tham khảo
PostgreSQL: Querying a Table. Ví dụ và bài tập trong bài do Akashic biên soạn.
Đăng nhập để lưu bài viết ↗