PostgreSQL select 查询数据
在 PostgreSQL 数据库中,使用 select 语句从数据库表中查询数据,查询结果以表格形式返回,称之为查询结果集。
- select 带 where 子句可以对查询结果进行条件过滤
- select 带 order by 子句可以对查询结果进行排序
- select 带 group by 子句可以对查询结果进行聚合统计
1. select 查询数据语法
select 完整语法如下:
[ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] [ * | expression [ [ AS ] output_name ] [, ...] ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] 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 | WITH TIES } ] [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ] where from_item can be one of: [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ] with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] [ LATERAL ] function_name ( [ argument [, ...] ] ) [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias ( column_definition [, ...] ) [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] ) [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) [ AS join_using_alias ] } from_item NATURAL join_type from_item from_item CROSS JOIN from_item and grouping_element can be one of: ( ) expression ( expression [, ...] ) ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) CUBE ( { expression | ( expression [, ...] ) } [, ...] ) GROUPING SETS ( grouping_element [, ...] ) and with_query is: with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete ) [ SEARCH { BREADTH | DEPTH } FIRST BY column_name [, ...] SET search_seq_col_name ] [ CYCLE column_name [, ...] SET cycle_mark_col_name [ TO cycle_mark_value DEFAULT cycle_mark_default ] USING cycle_path_col_name ] TABLE [ ONLY ] table_name [ * ]
select 完整语法非常复杂,但在实际工作中可能只使用其中很小的一部分语法,称之为基本语法,如下:
SELECT column1, column2..columnN FROM table_name WHERE condition;
2. select 查询数据使用示例
(1)查询所有的数据
postgres=# create table t(id int, name text); CREATE TABLE postgres=# insert into t values(1,'A'),(2,'B'),(3,'C'),(4,'D'); INSERT 0 4 postgres=# select * from t; id | name ----+------ 1 | A 2 | B 3 | C 4 | D (4 rows)
(2)查询记录总数
postgres=# select count(*) from t; count ------- 4 (1 row)
(3)查询 id 为 2 的记录
postgres=# select * from t where id = 2; id | name ----+------ 2 | B (1 row)
(4) 查询所有数据,并按 id 倒序排序
postgres=# select * from t order by id desc; id | name ----+------ 4 | D 3 | C 2 | B 1 | A (4 rows)
文章评论
共0条评论