Câu lệnh sql SELECT trong PostgreSQL là 1 trong 4 lệnh SQL cơ bản, có nhiệm vụ truy vấn tới bảng CSDL và lấy dữ liệu. Đây là 1 trong những câu lệnh SQL được sử dụng thường xuyên nhất khi thao tác với CSDL.
Ngoài ra SELECT còn được sử dụng kết hợp với các mệnh đề như WHERE, GROUP BY, … để phục vụ mục địch cụ thể khi lấy dữ liệu. Sau đây là những mệnh đề có thể kếp hợp với câu SELECT
- DISTINCT: Đảm bảo dữ liệu truy vấn không bị trùng lặp (Trong trường hợp truy vấp join các bảng hoặc chỉ lấy 1 số cột nhất định)
- WHERE: Truy vấn với điều kiện
- ORDER BY: Sắp xếp dữ liệu trả về
- GROUP BY: Nhóm dữ liệu theo một hoặc nhiều cột
- HAVING: Đi kèm với GROUP BY và truy vấn có điều kiện với các cột trong GROUP
- JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN: Ghép dữ liệu giữa các bảng với nhau
- …
Cú pháp lệnh của SELECT
[ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] [ * | expression [ [ AS ] output_name ] [, ...] ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]
Các ví dụ sử dụng lệnh SELECT
Giả sử chúng ta có bảng users với dữ liệu như sau:
Dưới đây là 1 số ví dụ sử dụng câu SQL SELECT để lấy dữ liệu của bảng staff.
1. Lấy dữ liệu với SELECT
Lấy toàn bộ dữ liệu của 1 bảng với tất cả các cột
SELECT * FROM staff;
Query với 1 số cột nhất định
SELECT staff_id, fullname, position FROM staff;
Lấy tổng số bản ghi (row) của bảng
SELECT count(*) FROM staff;
2. Giới hạn dữ liệu sử dụng LIMIT / OFFSET
Lấy 5 bản ghi đầu tiên của bảng staff
SELECT * FROM staff LIMIT 5;
Lấy 5 bản ghi đầu tiên, bắt đầu từ bản ghi thứ 4
SELECT * FROM staff LIMIT 5 OFFSET 3;
3. Lấy dữ liệu với điều kiện WHERE
Tìm các ông đang làm admin ở vinasupport.com ( Có position là admin )
SELECT * FROM staff WHERE position = 'admin';
Tìm người đang làm design và developer website vinasupport.com (Kêt hợp nhiều điều kiện tìm kiếm)
SELECT * FROM staff WHERE position = 'developer' OR position = 'design'
4. Sắp xếp dữ liệu với ORDER BY
Sắp xếp dữ liệu theo 1 cột
SELECT position, staff_id, fullname FROM staff ORDER BY position;
Sắp xếp dữ liệu theo nhiều cột
SELECT position, staff_id, fullname FROM staff ORDER BY position, staff_id;
5. Nhóm dữ liệu sử dụng GROUP BY và HAVING
Lấy số lượng staff theo theo position
SELECT position, count(*) as count FROM staff GROUP BY position;
Lấy số lượng staff theo theo position, có số lượng > 3
SELECT position, count(*) as count FROM staff GROUP BY position HAVING count(*) > 3;
6. Query dữ liệu với JOIN
Có rất nhiều loại join được hỗ trợ bởi PostgreSQL: INNER JOIN, LEFT JOIN, FULL OUTER JOIN, CROSS JOIN, NATURAL JOIN.
Nguồn: vinasupport.com