ITPub博客

首页 > IT职业 > > PostgreSQL子句

PostgreSQL子句

作者:格伯纳 时间:2020-05-08 11:15:44 0 删除 编辑

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

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

语法

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

SELECT column1,column2,columnN
FROM table_name
在[条件1]

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

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

runoobdb#select * 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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3127674/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    983859