Truy vấn dữ liệu - Phần 1¶
Tóm lược nội dung
Bài này trình bày câu lệnh truy vấn SELECT để truy vấn dữ liệu từ một bảng.
Yêu cầu về cơ sở dữ liệu¶
1. Tiếp tục sử dụng cơ sở dữ liệu school_db
đã tạo ở những bài trước.
2. Tải tập tin school_db_script.sql và mở bằng pgAdmin của PostgreSQL.
3. Chạy từ dòng lệnh 110 để bổ sung dữ liệu vào school_db
.
Câu lệnh truy vấn SELECT¶
Để truy vấn (hay còn gọi là trích xuất) dữ liệu từ bảng, ta dùng câu lệnh SQL SELECT
.
Cú pháp tổng quát lệnh SELECT
SELECT thuộc_tính_1, thuộc tính_2,...
FROM tên_bảng
[WHERE điều_kiện] -- (1)!
[GROUP BY thuộc_tính_cần_gom_nhóm]
[HAVING điều_kiện]
[ORDER BY thuộc_tính_cần_sắp_xếp ASC | DESC] -- (2)!
- Cặp ngoặc vuông
[ ]
nghĩa là tùy chọn, có thể có hoặc không. ASC
là thứ tự tăng dần,DESC
là thứ tự giảm dần.
Truy vấn toàn bộ dữ liệu trong bảng¶
Để truy vấn toàn bộ dữ liệu trong bảng, ta sử dụng dấu sao *
.
Ví dụ:
Mã lệnh SQL liệt kê toàn bộ dữ liệu trong trong bảng students
:
- Dấu sao
*
đại diện cho tất cả thuộc tính trong bảng.
Kết quả thực hiện truy vấn như hình dưới đây:
Trên thanh trạng thái bên dưới của cửa sổ pgAdmin, Total rows thể hiện số lượng mẫu tin được trả về sau khi thực hiện truy vấn. (1)
-
Mặc định, nếu số lượng mẫu tin trong bảng nhiều hơn 1000 thì pgAdmin sẽ trả về 1000 mẫu tin đầu tiên.
Do đó, để xem toàn bộ dữ liệu, ta cần thực hiện thêm những truy vấn khác.
Chỉ định số lượng mẫu tin trả về¶
Để chỉ định số lượng mẫu tin trả về, ta sử dụng từ khóa LIMIT
.
Ví dụ:
Mã lệnh SQL trả về 10 mẫu tin đầu tiên trong bảng students
:
Chỉ định vị trí của mẫu tin bắt đầu¶
Để chỉ định vị trí của mẫu tin bắt đầu, ta sử dụng từ khóa OFFSET
.
Trong đó, mẫu tin đầu tiên có vị trí là 0. OFFSET 10
nghĩa là bắt đầu từ mẫu tin ở vị trí 11.
Ví dụ:
Mã lệnh SQL trả về các mẫu tin từ 11 đến 15 trong bảng students
:
Truy vấn thuộc tính¶
Để truy vấn các thuộc tính cụ thể, ta chỉ định tên các thuộc tính ngay sau từ khóa SELECT
.
Ví dụ:
Mã lệnh SQL trả về danh sách toàn bộ học sinh gồm mã lớp và họ tên:
Sơ đồ tóm tắt nội dung¶
Sơ đồ tóm tắt về truy vấn SELECT
Mã nguồn¶
Các đoạn mã trong bài được đặt tại GitHub.