首页 > 数据库 >无涯教程-PostgreSQL - 运算符

无涯教程-PostgreSQL - 运算符

时间:2023-12-24 13:32:27浏览次数:48  
标签:25 PostgreSQL 无涯 运算符 testdb 20000 Texas

运算符是保留字或字符,主要用于PostgreSQL语句的WHERE子句中以执行操作,如比较和算术运算。

运算符用于指定PostgreSQL语句中的条件,并用作语句中多个条件的结合。

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 按位运算符

PostgreSQL算术运算符

假设变量 a =2,变量 b =3,则-

运算符 描述
示例
+ 相加 a + b=5
- 相减 a-b=-1
* 相乘 a * b=6
/ 相除 b/a=1
取模(相除后的余数) b%a=1
^ a ^ b=8
|/ 平方根 |/25.0=5
||/ 立方根 ||/27.0=3
! 阶乘 5!=120
!! 阶乘(前缀运算符) !!5=120

这是显示PostgreSQL算术运算符用法的简单示例-

testdb=# select 2+3;
 ?column?
----------
        5
(1 row)


testdb=# select 2*3;
 ?column?
----------
        6
(1 row)


testdb=# select 10/5;
 ?column?
----------
        2
(1 row)


testdb=# select 12%5;
 ?column?
----------
        2
(1 row)


testdb=# select 2^3;
 ?column?
----------
        8
(1 row)


testdb=# select |/ 25.0;
 ?column?
----------
        5
(1 row)


testdb=# select ||/ 27.0;
 ?column?
----------
        3
(1 row)


testdb=# select 5 !;
 ?column?
----------
      120
(1 row)


testdb=# select !!5;
 ?column?
----------
      120
(1 row)

PostgreSQL比较运算符

假设变量a=10,变量b=20,则-

运算符 描述 示例
= 相等 (a=b) is not true.
!= 不相等 (a != b) is true.
<> 不相等 (a <> b) is true.
> 大于 (a > b) is not true.
< 小于 (a < b) is true.
>= 大于或等于 (a >= b) is not true.
<= 小于或等于 (a <= b) is true.

考虑具有以下记录的表COMPANY-

testdb=# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

以下SELECT语句列出了SALARY大于50,000.00的所有记录-

testdb=# SELECT * FROM COMPANY WHERE SALARY > 50000;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |address    | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

以下SELECT语句列出了SALARY等于20,000.00的所有记录-

testdb=#  SELECT * FROM COMPANY WHERE SALARY = 20000;

上面给出的PostgreSQL语句将产生以下结果-

  id | name  | age |  address    | salary
 ----+-------+-----+-------------+--------
   1 | Paul  |  32 | California  |  20000
   3 | Teddy |  23 | Norway      |  20000
(2 rows)

以下SELECT语句列出了SALARY不等于20,000.00的所有记录-

testdb=#  SELECT * FROM COMPANY WHERE SALARY != 20000;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | Texas       |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
(5 rows)

以下SELECT语句列出了SALARY不等于20,000.00的所有记录-

testdb=# SELECT * FROM COMPANY WHERE SALARY <> 20000;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
(5 rows)

以下SELECT语句列出了SALARY大于或等于65,000.00的所有记录-

testdb=# SELECT * FROM COMPANY WHERE SALARY >= 65000;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |  address  | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

PostgreSQL逻辑运算符

这是PostgresQL中可用的所有逻辑运算符的列表。

S. No. 运算符& 描述
1

AND

AND运算符允许PostgresSQL语句的WHERE子句中存在多个条件。

2

NOT

NOT运算符颠倒了使用它的逻辑运算符的含义。

3

OR

OR运算符用于在PostgresSQL语句的WHERE子句中组合多个条件。

考虑具有以下记录的表COMPANY-

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

这是显示PostgreSQL LOGICAL运算符用法的简单示例,以下SELECT语句列出了AGE大于或等于25且(AND)薪金大于或等于65000.00的所有记录。

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  3 | Teddy |  23 | Norway      |  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
  8 | Paul  |  24 | Houston     |  20000
  9 | James |  44 | Norway      |   5000
 10 | James |  45 | Texas       |   5000
(10 rows)

以下SELECT语句列出了AGE大于或等于25或(OR)工资大于或等于65000.00的所有记录-

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 6500;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  3 | Teddy |  23 | Norway      |  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
  8 | Paul  |  24 | Houston     |  20000
  9 | James |  44 | Norway      |   5000
 10 | James |  45 | Texas       |   5000
(10 rows)

以下SELECT语句列出了AGE不为NULL的所有记录,这意味着所有记录,因为没有记录的AGE等于NULL-

testdb=#  SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;

上面给出的PostgreSQL语句将产生以下结果-

 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  3 | Teddy |  23 | Norway      |  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
  8 | Paul  |  24 | Houston     |  20000
  9 | James |  44 | Norway      |   5000
 10 | James |  45 | Texas       |   5000
(10 rows)

PostgreSQL位串运算符

按位运算符对位进行运算并执行逐位操作。&和|的真值表如下-

p q p & q p | q
0 0 0 0
0 1 0 1
1 1 1 1
1 0 0 1

假设A=60;和B=13;现在以二进制格式,它们将如下所示-

A=0011 1100

B=0000 1101

-----------------

A&B=0000 1100

A | B=0011 1101

〜A=1100 0011

下表列出了PostgreSQL支持的按位运算符-

运算符 描述 示例
& 位 AND 操作 (A & B)=12  =》  0000 1100
| 位 OR 操作 (A | B)=61 =》0011 1101
~ 位补码操作 (~A )=-61 
<< 位左移 A << 2=240 =》 1111 0000
>> 位右移 A >> 2=15 =》 0000 1111
# 按位异或。 A # B =49 =》 0100 1001

这是显示PostgreSQL按位运算符用法的简单示例。假设变量A=60,变量B=13,然后-

testdb=# select 60 | 13;
 ?column?
----------
       61
(1 row)


testdb=# select 60 & 13;
 ?column?
----------
       12
(1 row)


testdb=#  select  (~60);
 ?column?
----------
      -61
(1 row)


testdb=# select  (60 << 2);
 ?column?
----------
      240
(1 row)


testdb=# select  (60 >> 2);
 ?column?
----------
       15
(1 row)


testdb=#  select 60 # 13;
 ?column?
----------
       49
(1 row)

参考链接

https://www.learnfk.com/postgresql/postgresql-operators.html

标签:25,PostgreSQL,无涯,运算符,testdb,20000,Texas
From: https://blog.51cto.com/u_14033984/8955428

相关文章

  • 无涯教程-PostgreSQL - 插入数据(Insert)
    PostgreSQLINSERTINTO语句允许将新行插入表中,一个查询可以一次插入一行或几行。INSERTINTO语句的基本语法如下-INSERTINTOTABLE_NAME(column1,column2,column3,...columnN)VALUES(value1,value2,value3,...valueN);在这里,columnN,column1,columnN是要在其中插入数......
  • 无涯教程-PostgreSQL - 删除表(Drop)
    PostgreSQLDROPTABLE语句用于删除表定义以及该表的所有关联数据,索引,规则,触发器和约束。DROPTABLE语句的基本语法如下-DROPTABLEtable_name;在上一章中,无涯教程已经创建了表DEPARTMENT和COMPANY。首先,验证这些表(使用\d列出表)-testdb-#\d这将产生以下输出-......
  • 无涯教程-PostgreSQL - 创建表(Create)
    PostgreSQLCREATETABLE语句用于在任何给定数据库中创建一个新表。CREATETABLE语句的基本语法如下-CREATETABLEtable_name(column1datatype,column2datatype,column3datatype,.....columnNdatatype,PRIMARYKEY(oneormorecolumns));CRE......
  • 无涯教程-PostgreSQL - 创建数据库
    本章讨论如何在PostgreSQL中创建新数据库,PostgreSQL提供了两种创建新数据库的方式-使用SQL命令CREATEDATABASE。使用createdb一个命令行可执行文件。使用CREATE命令该命令将从PostgreSQLShell提示符创建数据库,但是您应该具有创建数据库的适当特权。CREATEDATABASE语句......
  • 无涯教程-PostgreSQL - 删除数据库
    在本章中,无涯教程将讨论如何在PostgreSQL中删除数据库。删除数据库有两个选项-使用DROPDATABASE,这是一个SQL命令。使用dropdb是命令行可执行文件。使用DROP命令此命令删除数据库,它删除数据库的目录条目,并删除包含数据的目录,它只能由数据库所有者执行,当您或其他任何人连接到......
  • 无涯教程-PL/SQL - GOTO函数
    PL/SQL编程语言中的GOTO语句提供了从GOTO到同一子程序中带标签的语句的无条件跳转。注意-在任何编程语言中均不建议使用GOTO语句,因为它会使跟踪程序的控制流变得困难,从而使程序难以理解且难以修改。GOTO-语法PL/SQL中的GOTO语句的语法如下-GOTOlabel;....<<label>>......
  • 无涯教程-PostgreSQL - 环境设置
    要开始了解PostgreSQL基础,首先让无涯教程安装PostgreSQL,本章说明有关在Linux,Windows和MacOS平台上安装PostgreSQL的信息。在Linux/Unix上安装请按照给定的步骤在Linux机器上安装PostgreSQL,在继续安装之前,请确保您以root身份登录。从中选择所需的PostgreSQL版本号,并尽可能精......
  • 无涯教程-PL/SQL - CONTINUE函数
    CONTINUE语句会强制执行循环的下一次迭代,从而跳过两者之间的任何代码。CONTINUE-语法CONTINUE语句的语法如下-CONTINUE;CONTINUE-流程图CONTINUE-示例DECLAREanumber(2):=10;BEGIN--whileloopexecutionWHILEa<20LOOPdbms_outp......
  • 无涯教程-PL/SQL - EXIT函数
    PL/SQL编程语言中的EXIT语句具有以下两种用法-在循环内遇到EXIT语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。如果您使用的是嵌套循环,则EXIT语句将停止执行最里面的循环,并开始执行该块之后的下一行代码。EXIT-语法PL/SQL中EXIT语句的语法如下-EXIT;EXIT-......
  • 无涯教程-PL/SQL - 嵌套循环函数
    PL/SQL允许在另一个循环中使用一个循环,以下部分显示了一些示例来说明这一概念。PL/SQL中嵌套的基本LOOP语句的语法如下-LOOPSequenceofstatements1LOOPSequenceofstatements2ENDLOOP;ENDLOOP;PL/SQL中嵌套的FORLOOP语句的语法如下-FORcount......