runoobdb=#select*from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(7 rows)
读取 SALARY 字段大于 50000 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE SALARY >50000;
id | name | age |address | salary
----+-------+-----+-----------+--------4|Mark|25|Rich-Mond|650005|David|27|Texas|85000(2 rows)
读取 SALARY 字段等于 20000 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE SALARY =20000;
id | name | age | address | salary
----+-------+-----+-------------+--------1|Paul|32|California|200003|Teddy|23|Norway|20000(2 rows)
读取 SALARY 字段不等于 20000 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE SALARY !=20000;
id | name | age | address | salary
----+-------+-----+-------------+--------2|Allen|25|Texas|150004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(5 rows)
runoobdb=# SELECT * FROM COMPANY WHERE SALARY <>20000;
id | name | age | address | salary
----+-------+-----+------------+--------2|Allen|25|Texas|150004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(5 rows)
读取 SALARY 字段大于等于 65000 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE SALARY >=65000;
id | name | age | address | salary
----+-------+-----+-----------+--------4|Mark|25|Rich-Mond|650005|David|27|Texas|85000(2 rows)
逻辑运算符
PostgreSQL 逻辑运算符有以下几种:
序号
运算符 &
描述
1
AND
逻辑与运算符。如果两个操作数都非零,则条件为真。
PostgresSQL 中的 WHERE 语句可以用 AND 包含多个过滤条件。
2
NOT
逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。
PostgresSQL 有 NOT EXISTS, NOT BETWEEN, NOT IN 等运算符。
runoobdb=#select*from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(7 rows)
读取 AGE 字段大于等于 25 且 SALARY 字段大于等于
6500 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE AGE >=25 AND SALARY >=6500;
id | name | age | address | salary
----+-------+-----+-----------------------------------------------+--------1|Paul|32|California|200002|Allen|25|Texas|150004|Mark|25|Rich-Mond|650005|David|27|Texas|85000(4 rows)
读取 AGE 字段大于等于 25 或 SALARY 字段大于
6500 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE AGE >=25 OR SALARY >=6500;
id | name | age | address | salary
----+-------+-----+-------------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|100008|Paul|24|Houston|200009|James|44|Norway|500010|James|45|Texas|5000(10 rows)
读取 SALARY 字段不为 NULL 的数据:
runoobdb=# SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;
id | name | age | address | salary
----+-------+-----+-------------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|100008|Paul|24|Houston|200009|James|44|Norway|500010|James|45|Texas|5000(10 rows)
位运算符
位运算符作用于位,并逐位执行操作。&、 | 和 ^
的真值表如下所示:
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^B = 0011 0001
~A = 1100 0011
下表显示了 PostgreSQL 支持的位运算符。假设变量
A 的值为 60,变量 B 的值为 13,则: