postgresql中的查询(query)一

查询命令格式

[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]

select

特殊语法1:字段别名

db01=> \d t_insert
         Table "hippo.t_insert"
 Column |  Type   |      Modifiers       
--------+---------+----------------------
 id     | integer | 
 name   | text    | default 'name'::text

db01=> select id as no,name from t_insert;
 no | name  
----+-------
    ......
  9 | name
(7 rows)

db01=> select * from t_insert a(no);    --按照字段顺序,未重命名的按原名显示
 no | name  
----+-------
    ......
  9 | name
(7 rows)

特殊语法2:可以不列任何字段名

db01=> select from t_insert;
--
(7 rows)

只提示有7行数据,这种结果可能只在需要判断有没有符合条件的记录的时候才有用吧.

特殊语法3:直接查询一个列表

db01=> select * from (values('jack',1),('joe',2),('hippo',3)) as t;    --必须要有一个别名,否则出错,默认字段名叫column1......
 column1 | column2 
---------+---------
 jack    |       1
 joe     |       2
 hippo   |       3
(3 rows)

db01=> select * from (values('jack',1),('joe',2),('hippo',3)) as t(name,id); 
 name  | id 
-------+----
 jack  |  1
 joe   |  2
 hippo |  3
(3 rows)

特殊语法4:查询列表无需select

db01=> values(1,2),(2,3);
 column1 | column2 
---------+---------
       1 |       2
       2 |       3
(2 rows)

特殊语法5:整行空的表达

db01=> select * from t_insert where t_insert is null;
 id | name 
----+------
    | 
(1 row)

不必像oracle中一个字段一个字段列出来.

特殊语法6:limit和offset

db01=> select * from t_insert limit 3;
 id | name  
----+-------
  1 | hippo
  2 | jack
  3 | joe
(3 rows)

db01=> select * from t_insert limit 3 offset 2;    --offset优先
 id | name  
----+-------
  3 | joe
  4 | alice
    | 
(3 rows)

在oracle 12c中开始支持这种语法,pg很多功能都很先进啊
offset跳过的行,pg内部还是计算的,所以优化是算不上的

//END

你可能感兴趣的:(查询,query,PostgreSQL,select)