PostgreSQL学习笔记5:运算符与表达式

运算符

与C/C++一样,postgreSQL也有运算符,常见运算符类型有:

  • 算数运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

算数运算符

a为3,b为5

运算符 描述 实例
+ a+b为8
- a-b为-2
* a*b为15
/ 除(取整) b/a为1
% 取余 b%a为2
^ 指数 b^a为125
|/ 平方根 |/25.0的结果为5
||/ 立方根 ||/27.0的结果为3
! 阶乘(后缀操作符) 5!为120
!! 阶乘(前缀操作符) !!5为120

示例:

postgres=# select ||/27;
 ?column?
----------
        3
(1 行记录)

比较运算符

a为2,b为3

运算符 描述 实例
= 等于 (a=b)为false
!= 不等于 (a!=b)为ture
<> 不等于 (a<>b)为ture
> 大于 (a>b)为false
< 小于 (a
>= 大于等于 (a>=b)为false
<= 小于等于 (a<=b)为ture

逻辑运算符

运算符 描述
AND 逻辑与运算符,如果两个操作数都非零,则条件为真。
NOT 逻辑非运算符,逆转操作数的真假值。
OR 如果有任意一个操作数不为零,则条件为真

在postgreSQL中,采用的是三值逻辑系统,即有TURE、FALSE、NULL

a b a AND b a OR b
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
TRUE NULL NULL TRUE
FALSE FALSE FALSE FALSE
FALSE NULL FALSE NULL
NULL NULL NULL NULL
a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL

位运算符

在postgreSQL中,数据进行位操作时都需要将十进制转换为二进制计数,再进行位操作。

在postgreSQL中支持的位运算符有如下表,假定A为60,B为13:

运算符 操作 实例
& 按位与运算符 (A&B)12,二进制为0000 1100
| 按位或运算符 (A|B)61,二进制为0011 1101
# 异或运算符 (A#B)49,二进制为0011 0001
~ 取反运算符 (~A)-61,二进制为1100 0011,带符号位的二进制数补码
<< 二进制左移运算符 A<<2240,即为1111 0000
>> 二进制右移运算符 A>>215,即为0000 1111

表达式

由一个或多个值、运算符、PostgreSQL函数组成的。

PostgreSQL的表达式类似一个公式,可以将其应用在查询语句中,用以查询指定条件的结果集。

布尔表达式

布尔表达式根据指定条件读取数据,格式为:

SELECT column1,column2,...,columnN
FROM table_name
WHERE SINGLE VALUE MATCHTING EXPRESSION;

例如,在表prodoctbk中查询售价sale_price为100的商品:

SELECT *
FROM productbk WHERE sale_price=100;

查询结果为:

 product_id | product_name	| product_type | sale_price | purchase_price | registse__datae
------------+---------------+--------------+------------+----------------+-----------------
 8          | 圆珠笔      	| 办公用品      |        100 |                | 2009-11-11
(1 行记录)

数字表达式

数字表达式常用于查询语句中的数学运算,格式为:

SELECT numerical_expression AS OPERATION_NAME
[FROM table_name WHERE CONDITION];

postgreSQL内置了一些数学函数,如:

  • avg():返回一个表达式的平均值;
  • sum():返回指定字段的总和;
  • count():返回查询的记录总数;

以productbk为例,查询productbk表的记录总数:

shop=# select count(*) as record from productbk;
 record
--------
      8
(1 行记录)

日期表达式

日期表达式返回值是当前系统的日期和时间,可用于各种数据操作,以下实例查询当前时间:

shop=# SELECT CURRENT_TIMESTAMP;
             now
-----------------------------
 2020-01-12 19:48:31.7982+08
(1 行记录)

你可能感兴趣的:(#,PostgreSQL,SQL)