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

转载于:https://my.oschina.net/hippora/blog/379555

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值