English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Operadores são símbolos que informam ao compilador a execução de operações matemáticas ou lógicas específicas.
Operadores PostgreSQL são palavras-chave ou caracteres reservados, geralmente usados em consultas WHERE, como condições de filtro.
Operadores comuns incluem:
operadores aritméticos
operadores de comparação
id | nome | idade | endereço | salário
operadores de operação bit a bit
Supondo a variável a ser 2a variável b é 3então:
Operador | Descrição | Exemplo |
---|---|---|
+ | adição | um + b: resultado é 5 |
- | subtração | um - b: resultado é -1 |
* | multiplicação | um * b: resultado é 6 |
/ | divisão | b / a: resultado é 1 |
% | módulo (resto da divisão) | b % a: resultado é 1 |
^ | exponencial | a ^ b: resultado é 8 |
|/ | raiz quadrada | |/ 25.0: resultado é 5 |
||/ | raiz cúbica | ||/ 27.0: resultado é 3 |
! | fatorial | 5 fatorial: resultado é 120 |
!! | fatorial (operador prefixo) | !! 5 O resultado é 120 |
w3codeboxdb=# select 2+3; ?column? ---------- 5 (1 row) w3codeboxdb=# select 2*3; ?column? ---------- 6 (1 row) w3codeboxdb=# select 10/5; ?column? ---------- 2 (1 row) w3codeboxdb=# select 12%5; ?column? ---------- 2 (1 row) w3codeboxdb=# select 2^3; ?column? ---------- 8 (1 row) w3codeboxdb=# select |/ 25.0; ?column? ---------- 5 (1 row) w3codeboxdb=# select ||/ 27.0; ?column? ---------- 3 (1 row) w3codeboxdb=# select 5 !; ?column? ---------- 120 (1 row) w3codeboxdb=# select !!5; ?column? ---------- 120 (1 row)
Supondo a variável a ser 10a variável b é 20, então:
Operador | Descrição | Exemplo |
---|---|---|
= | igual a | (a = b) é falso. |
!== | diferente de | (a != b) é verdadeiro. |
<> | diferente de | (a <> b) é verdadeiro. |
> | maior | (a > b) é falso. |
< | menor | (a < b) é verdadeiro. |
>= | maior ou igual a | (a >= b) é falso. |
<= | menor ou igual a | (a <= b) é verdadeiro. |
Conteúdo do arquivo COMPANY.SQL como segue:
-- Este é o arquivo para criar a tabela COMPANY e preenchê-la com 7 registros. -- Apenas copie e cole nele no prompt do psql. APAGAR TABELA COMPANY CRIAR TABELA COMPANY ID INT PRIMÁRIA CHAVE NOME IDADE ADDRESS50),} SALARY REAL ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 ); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
Criar tabela COMPANY, conteúdo de dados conforme abaixo:
w3codeboxdb=# 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)
Ler o campo SALARY maior que 5Ler o campo SALARY diferente de
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 5FROM COMPANY WHERE SALARY <> id | name | age | address | salary ----+-------+-----+-----------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 rows)
Ler o campo SALARY igual a 2Ler o campo SALARY diferente de
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY = 2FROM COMPANY WHERE SALARY <> id | name | age | address | salary ----+-------+-----+-------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 (2 rows)
FROM COMPANY WHERE SALARY = 2Ler o campo SALARY diferente de
w3codeboxdb=# SELECT * 0000 de dados: 2FROM COMPANY WHERE SALARY <> 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) w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY != 2FROM COMPANY WHERE SALARY <> 0000; ----+-------+-----+------------+-------- 2 | Allen | 25 Mond 15000 4 | Mark | 25 | Rich-id | nome | idade | endereço | salário 65000 5 | David | 27 Mond 85000 6 | Kim | 22 | South-| Texas 45000 7 | James | 24 Hall 10000 (5 rows)
| Houston 65Ler o campo SALARY maior ou igual a
w3codeboxdb=# SELECT * 000 de dados: 65FROM COMPANY WHERE SALARY >= 000; ----+-------+-----+-----------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 rows)
Operador lógico
Os operadores lógicos do PostgreSQL são os seguintes: | Número |
---|---|
1 | SQL usa um sistema lógico de três valores, incluindo verdadeiro, falso e null, null representa "desconhecido". Operador & Descrição Operador lógico E. Se ambos os operandos não forem zero, a condição é verdadeira. |
2 | NÃO A cláusula WHERE no PostgresSQL pode incluir múltiplas condições com AND. Operador lógico NÃO. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico NÃO a tornará falsa. |
3 | OU O PostgresSQL possui operadores como NOT EXISTS, NOT BETWEEN, NOT IN, etc. Operador lógico OU. Se qualquer um dos operandos não for zero, a condição é verdadeira. |
A cláusula WHERE no PostgresSQL pode incluir múltiplas condições com OR.
um | b | um SQL usa um sistema lógico de três valores, incluindo verdadeiro, falso e null, null representa "desconhecido". b | um OU b |
---|---|---|---|
VERDADEIRO | VERDADEIRO | VERDADEIRO | VERDADEIRO |
VERDADEIRO | FALSO | FALSO | VERDADEIRO |
VERDADEIRO | NULL | NULL | VERDADEIRO |
FALSO | FALSO | FALSO | FALSO |
FALSO | NULL | FALSO | NULL |
NULL | NULL | NULL | NULL |
um | NÃO um |
---|---|
VERDADEIRO | FALSO |
FALSO | VERDADEIRO |
NULL | NULL |
Conteúdo do arquivo COMPANY.SQL如下:
-- Este é o arquivo para criar a tabela COMPANY e preenchê-la com 7 registros. -- Apenas copie e cole nele no prompt do psql. APAGAR TABELA COMPANY CRIAR TABELA COMPANY ID INT PRIMÁRIA CHAVE NOME IDADE ADDRESS50),} SALARY REAL ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 ); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
Criar tabela COMPANY, conteúdo de dados conforme abaixo:
w3codeboxdb=# 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)
Ler campo AGE maior ou igual a 25 e campo SALARY maior ou igual a 6500 de dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500; id | name | age | address | salary ----+-------+-----+-----------------------------------------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (4 rows)
Ler campo AGE maior ou igual a 25 ou campo SALARY maior que 6500 de dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OU SALARY >= 6500; 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)
Ler dados do campo SALARY que não seja NULL:
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY IS NOT NULL; 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)
Os operadores de bit operam em bits e executam operações bit a bit. As tabelas de verdade de &、 | e ^ são como follows:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
Supondo se A = 60, e B = 13agora representados em formato binário, eles são como follows:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
A tabela a seguir mostra os operadores de bit suportados pelo PostgreSQL. Supondo a variável A o valor é 60, variável B o valor é 13então:
Operador | Descrição | Exemplo |
---|---|---|
& | Operação de AND bit a bit, realiza operação de "AND" de bits. Regras de operação: 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) será 12,é 0000 1100 |
| | Operador de OU bit a bit, realiza operação de "OU" de bits. Regras de operação: 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) será 61,é 0011 1101 |
# | Operador de XOR, realiza operação de "XOR" de bits. Regras de operação: 0#0=0; 0#1=1; 1#0=1; 1#1=0; | (A # B) será 49,é 0011 0001 |
~ | Operador de negação, realiza operação de "inversão" de bits. Regras de operação: ~1=0; ~0=1; | (~A ) será -61,é 1100 0011,a forma de complemento à esquerda de um número binário signed. |
<< | Operador de deslocamento à esquerda binário. Desloca todos os bits de um operando para a esquerda por alguns bits (os bits à esquerda são descartados e preenchidos com 0 à direita). | A << 2 Será 240,é 1111 0000 |
>> | Operador de deslocamento à direita binário. Desloca todos os bits de um número para a direita por alguns bits, preenchendo com 0 à esquerda para números positivos e preenchendo com1,descartando os bits à direita. | A >> 2 Será 15,é 0000 1111 |
w3codeboxdb=# select 60 | 13; ?column? ---------- 61 (1 row) w3codeboxdb=# select 60 & 13; ?column? ---------- 12 (1 row) w3codeboxdb=# select (~60); ?column? ---------- -61 (1 row) w3codeboxdb=# select (60 << 2); ?column? ---------- 240 (1 row) w3codeboxdb=# select (60 >> 2); ?column? ---------- 15 (1 row) w3codeboxdb=# select 60 # 13; ?column? ---------- 49 (1 row)