示例1.简单查询

使用*查询表所有的字段,也可以指定字段名查询

test=# select * from tbl_insert;
a | b
---+----
3 | sd
4 | ff
(2 rows) test=# select a from tbl_insert;
a
---
3
4
(2 rows)

示例2.聚合函数

聚合函数是使用多行数据,经过计算得到一个结果,如count,max,min,avg,sum等。聚合函数不能与具体字段出现在SELECT子句中,关系型数据库的表本就是每一列行数是相等的,聚合函数结果固定只有一行,而具体字段行数是不固定的。

test=# select * from tbl_insert;
a | b
------+----
3 | sd
4 | ff
NULL | sd
(3 rows) test=# select sum(a),count(*),count(a),count(1),avg(a),max(a),min(a) from tbl_insert;
sum | count | count | count | avg | max | min
-----+-------+-------+-------+--------------------+-----+-----
7 | 3 | 2 | 3 | 3.5000000000000000 | 4 | 3
(1 row)

从结果中看到sum(a)=7,count(*)=3,count(a)=2,count(1)=3,avg(a)=3.5,指定字段使用count(a)和avg(a)跳过a是NULL的行。

示例4.WHERE条件查询

WHERE后面可以跟多种逻辑判断,如某个字段>,>=,<,<=,=,!=,between A and B(即>=A and <=B),in,not in,exists,not exists,like,ilike等,逻辑与使用AND,逻辑或使用OR,不等于使用!=或<>,但是我经常记不住逻辑符的优先级,尤其是where条件比较复杂时脑袋就大了,所以我习惯在多个逻辑符使用小括号()。

test=# create table tbl_insert(a int,b varchar(32));
CREATE TABLE
test=# insert into tbl_insert(a,b) values (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
--查询a等于1的行
test=# select * from tbl_insert where a = 1;
a | b
---+---
1 | a
(1 row) --查询a不等于2的行
test=# select * from tbl_insert where a != 2;
a | b
---+---
1 | a
3 | c
4 | d
5 | e
(4 rows) test=# select * from tbl_insert where a <> 2;
a | b
---+---
1 | a
3 | c
4 | d
5 | e
(4 rows) --查询a大于等于3的行
test=# select * from tbl_insert where a >= 3;
a | b
---+---
3 | c
4 | d
5 | e
(3 rows) --查询a大于等于1且小于等于3的行
test=# select * from tbl_insert where a >= 1 and a <= 3;
a | b
---+---
1 | a
2 | b
3 | c
(3 rows) test=# select * from tbl_insert where a between 1 and 3;
a | b
---+---
1 | a
2 | b
3 | c
(3 rows) --查询a大于3且b是'd'或'e'的行
test=# select * from tbl_insert where a > 3 and (b='d' or b = 'e');
a | b
---+---
4 | d
5 | e
(2 rows) test=# select * from tbl_insert where a > 3 and b in ('d','e');
a | b
---+---
4 | d
5 | e
(2 rows) --查询a大于3或b是'd'或b是'e'的行
test=# select * from tbl_insert where a > 3 or (b='d' or b = 'e');
a | b
---+---
4 | d
5 | e
(2 rows) test=# select * from tbl_insert where a > 3 or b in('d','e');
a | b
---+---
4 | d
5 | e
(2 rows)

不建议使用如下方式查询,当表中数据量较大,or条件中数量太多,会有明显的性能影响。

b='d' or b = 'e' or b = or b = or b = ...

建议使用in解决此问题,即

b in ('d','e',...)

postgresql----SELECT的更多相关文章

  1. PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句

    SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...

  2. UbuntuでPostgreSQLをインストールからリモートアクセスまでの手順

    PostgreSQLサーバの立ち上げに少しハマりましたので.メモしておきます. OS: Ubuntu14.04 LTS インストール 最初はPostgreSQLをインストールします.普通にapt-ge ...

  3. postgresql存储二进制大数据文件

    如果想把整个文件或图片存储在数据表的一个字段内,该字段可以选择二进制类型,然后将文件按二进制存储起来,文本文件也可以存在text字段内. 示例如下: 二进制类型bytea的操作(在最大值内,有内存限制 ...

  4. postgresql copy命令介绍

    COPY 命令可以快速的导入数据到postgresql数据库中,文件格式类似TXT.CVS之类.适合批量导入数据,速度比较快.注意COPY只能用于表,不能用于视图. COPY 命令里面的文件必须是由服 ...

  5. Postgresql与Oralce常用用法区别总结

    日期操作 1. 操作当前日期和时间 oracle Select SYSDATE FROM dual; PostgreSQL Select CURRENT_DATE; Select NOW();返回日期 ...

  6. Jmeter直连postgresql数据库进行压测

    关于Jmeter直连数据库进行压测,网上有好多教程了,pg数据库的相对少一些,今天自己测试了下,还是挺简单的,有个别需要注意的地方.相较于Loadrunner这么全面庞大的压测工具,Jmeter在数据 ...

  7. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  8. postgresql学习笔记--基础篇 - copy

    1. psql 导入/导出数据 psql支持文件数据导入到数据库,也支持数据库表数据导出到文件中. COPY命令和\copy 命令都支持这两类操作,但两者有如下区别: COPY 命令是SQL命令,\c ...

  9. SQLServer数据实时同步PostgreSQL

    SQLServer数据实时同步至PostgreSQL 前言: 为迎合工作需求有时候传送的数据保存在SQLServer中但由于工作需要需要保存到PostgreSQL中进行处理,本文主要通过在SQLSer ...

  10. Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)

    如前几节所述,Citus 是一个扩展,它扩展了最新的 PostgreSQL 以进行分布式执行.这意味着您可以在 Citus 协调器上使用标准 PostgreSQL SELECT 查询进行查询. Cit ...

随机推荐

  1. Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes

    接上一篇中的重定向. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-fl ...

  2. par函数pch参数-控制点的形状

    pch函数用来控制点的形状,这个参数不仅在par函数中有,在大多数的高级绘图函数中都有. 代码示例: plot(rep(1:5, times = 5), rep(5:1, each = 5), pch ...

  3. [ATL/WTL]_[中级]_[保存CBitmap到文件-保存屏幕内容到文件]

    场景: 1. 在做图片处理时,比方放大后或加特效后须要保存CBitmap(HBITMAP)到文件. 2.截取屏幕内容到文件时. 3.不须要增加第3方库时. 说明: 这段代码部分来自网上.第一次学atl ...

  4. Unity文件操作路径

    Unity3D中的资源路径: Application.dataPath:此属性用于返回程序的数据文件所在文件夹的路径.例如在Editor中就是Assets了. Application.streamin ...

  5. VS 最近打开清理bat

    VS2008RecentCleaner.bat @echo off @REG Delete HKCU\Software\Microsoft\VisualStudio\9.0\FileMRUList / ...

  6. [dubbo] dubbo 基础使用

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...

  7. 一、NHibernate配置所支持的属性

    属性名 用途 dialect 设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL 可用值: full.classname.of.Dialec ...

  8. GIS-004-Cesium版权信息隐藏

    .cesium-widget-credits { display: none; } .cesium-viewer .cesium-widget-credits { display: none; }

  9. 上传绕过WAF的tips大全

    原始默认状态: ——WebKitFormBoundary2smpsxFB3D0KbA7D Content-Disposition: form-data; name=”filepath”; filena ...

  10. 查看用户信息:w

    w命令有两个用途: (1) 用于查看当前系统负载(2) 用于查看当前登录用户的行为和信息,执行这个命令可以得知当前登入系统的用户有哪些人,以及他们正在执行哪些程序 [root@localhost ~] ...