绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
PostgreSQL子句
2020-05-08 11:15:44

在PostgreSQL中,当我们需要根据指定条件从单张表或多张表中查询数据时,就可以在SELECT语句中添加WHERE子句,从而过滤掉我们不需要的数据。

WHERE子句几乎可以用于SELECT语句中,同时也可以用于UPDATE,DELETE等等语句中。

语法

以下是SELECT语句中使用WHERE子句从数据库中读取数据的通用语法:

SELECT column1column2columnN
FROM table_name
在[条件1]

我们可以在WHERE子句中使用比较运算符或逻辑运算符,例如>,<,=,LIKE,NOT等

创建COMPANY表(下载COMPANY SQL文件),数据内容如下:

runoobdbselect * from COMPANY;
 id | 名称| 年龄| 地址| 薪水
---- + ------- + ----- + ----------- + --------
  1 | 保罗| 32 | 加利福尼亚| 20000
  2 | 艾伦| 25 | 德州| 15000
  3 | 泰迪 23 | 挪威| 20000
  4 | 马克| 25 | 富蒙德| 65000
  5 | 大卫| 27 | 德州| 85000
  6 | 金| 22 | 南厅| 45000
  7 | 詹姆斯| 24 | 休斯顿| 10000
7列)

以下几个实例我们使用逻辑运算符来读取表中的数据。

发现年龄(年龄)大于等于25,并且SALARY(薪资)大于等于65000的数据:

runoobdb =#选择*从公司年龄> = 25和薪水> = 65000;
 id | 名称| 年龄| 地址| 薪水
---- + ------- + ----- + ------------ + --------
  4 | 马克| 25 | 富蒙德| 65000
  5 | 大卫| 27 | 德州| 85000
2列)

要么

发现年龄(年龄)扩展大于等于25,或者SALARY(薪资)扩展大于等于65000的数据:

runoobdb =#选择*从公司年龄> = 25或工资> = 65000;
id | 名称| 年龄| 地址| 薪水
---- + ------- + ----- + ------------- + --------
  1 | 保罗| 32 | 加利福尼亚| 20000
  2 | 艾伦| 25 | 德州| 15000
  4 | 马克| 25 | 富蒙德| 65000
  5 | 大卫| 27 | 德州| 85000
4列)

非空

在公司表中寻求AGE(年龄)细分不为空的记录:

runoobdb =#在年龄不为空的公司中选择*;=#  SELECT * 从公司的年龄不为空
  id | 名称| 年龄| 地址| 薪水| 名称   | 年龄| 地址     | 薪水
 ---- + ------- + ----- + ------------ + ------------ + ------- + ----- + ------------ + --------
   1 | 保罗| 32 | 加利福尼亚| 200001 | 保罗| 32 | 加利福尼亚| 20000           
   2 | 艾伦| 25 | 德州| 150002 | 艾伦| 25 | 德州| 15000               
   3 | 泰迪 23 | 挪威| 200003 | 泰迪| 23 | 挪威| 20000              
   4 | 马克| 25 | 富蒙德| 650004 | 马克| 25 | Rich - Mond | 65000            
   5 | 大卫| 27 | 德州| 850005 | 大卫| 27 | 德州| 85000               
   6 | 金| 22 | 南厅| 450006 | | 22 | - 霍尔| 45000            
   7 | 詹姆斯| 24 | 休斯顿| 100007 | 詹姆斯| 24 | 休斯顿| 10000             
(7列)7 

喜欢

在COMPANY表中搜寻NAME(名字)插入中以Pa开头的数据:

runoobdb =#SELECT * FROM COMPANY WHERE NAME LIKE'Pa%';=#选择* 从公司名称类似“ Pa%”的公司
id | 名称| 年龄|住址| 薪水| 名称| 年龄| 地址     | 薪水
---- + ------ + ----- + ----------- + ------------ + ------ + ----- + ----------- + --------
  1 | 保罗| 32 | 加利福尼亚| 200001 | 保罗| 32 | 加利福尼亚| 20000         

以下SELECT语句列出了AGE(年龄)细分为25或27的数据:

runoobdb =#选择*从年龄在(25,27)的公司;=#SELECT * FROM COMPANY WHERE AGE IN 25 27 );   
 id | 名称| 年龄| 地址| 薪水| 名称   | 年龄| 地址     | 薪水
---- + ------- + ----- + ------------ + ------------ + ------- + ----- + ------------ + --------
  2 | 艾伦| 25 | 德州| 150002 | 艾伦| 25 | 德州| 15000               
  4 | 马克| 25 | 富蒙德| 650004 | 马克| 25 | Rich - Mond | 65000            
  5 | 大卫| 27 | 德州| 850005 | 大卫| 27 | 德州| 85000               
(3列)3 

不在

以下SELECT语句列出了AGE(年龄)细分不为25或27的数据:

runoobdb =#从年龄不在的公司中选择*(25,27);=#SELECT * FROM COMPANY WHERE AGE NOT IN 25 27 );   
 id | 名称| 年龄| 地址| 薪水| 名称   | 年龄| 地址     | 薪水
---- + ------- + ----- + ------------ + ------------ + ------- + ----- + ------------ + --------
  1 | 保罗| 32 | 加利福尼亚| 200001 | 保罗| 32 | 加利福尼亚| 20000           
  3 | 泰迪 23 | 挪威| 200003 | 泰迪| 23 | 挪威| 20000              
  6 | 金| 22 | 南厅| 450006 | | 22 | - 霍尔| 45000            
  7 | 詹姆斯| 24 | 休斯顿| 100007 | 詹姆斯| 24 | 休斯顿| 10000             
(4列)4 

之间

以下SELECT语句列出了AGE(年龄)细分在25到27的数据:

runoobdb =#选择*从25到27岁之间的公司;=#SELECT * FROM COMPANY WHERE AGE BETWEEN 25 27 ;
 id | 名称| 年龄| 地址| 薪水| 名称   | 年龄| 地址     | 薪水
---- + ------- + ----- + ------------ + ------------ + ------- + ----- + ------------ + --------
  2 | 艾伦| 25 | 德州| 150002 | 艾伦| 25 | 德州| 15000               
  4 | 马克| 25 | 富蒙德| 650004 | 马克| 25 | Rich - Mond | 65000            
  5 | 大卫| 27 | 德州| 850005 | 大卫| 27 | 德州| 85000               
(3列)3 

子查询

以下的SELECT语句使用了SQL的子查询,子查询语句中读取SALARY(薪资)变量大于65000的数据,然后通过EXISTS运算符判断其是否返回行,如果有返回行则读取所有的AGE(年龄)主轴。

runoobdb =#从公司选择年龄
        存在的地方(从年龄在65000以上的公司中选择年龄);
 年龄
-----
  32
  25
  23
  25
  27
  22
  24
7列)

以下的SELECT语句同样使用了SQL的子查询,子查询语句中读取SALARY(薪资)变量大于65000的AGE(年龄)变量数据,然后用>运算符查询大于该AGE(年龄)变量数据:

runoobdb =#选择*来自公司
        年龄>(从公司薪水中选择年龄> 65000);
 id | 名称| 年龄| 地址| 薪水
---- + ------ + ----- + ------------ + --------
  1 | 保罗| 32 | 加利福尼亚| 20000
分享好友

分享这个小栈给你的朋友们,一起进步吧。

华山论剑
创建时间:2019-02-22 18:53:00
没了烟火气,人生就是一段孤独的旅程·····于是,在ITPUB,我们以武论英雄!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 栈栈
    栈主
  • ?
    嘉宾

小栈成员

查看更多
  • u_9a3ed7a37f8e4a
  • daisyplay
  • boss_ch
  • Jack2k
戳我,来吐槽~