English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operadores PostgreSQL

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

operadores aritméticos

Supondo a variável a ser 2a variável b é 3então:

OperadorDescriçãoExemplo
+ adiçãoum + b: resultado é 5
-subtraçãoum - b: resultado é -1
*multiplicaçãoum * b: resultado é 6
/divisãob / a: resultado é 1
%módulo (resto da divisão)b % a: resultado é 1
^exponenciala ^ b: resultado é 8
|/raiz quadrada|/ 25.0: resultado é 5
||/raiz cúbica||/ 27.0: resultado é 3
!fatorial5 fatorial: resultado é 120
!!fatorial (operador prefixo)!! 5 O resultado é 120

Exemplo online

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)

operadores de comparação

Supondo a variável a ser 10a variável b é 20, então:

OperadorDescriçãoExemplo
=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.

Exemplo online

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)

id | nome | idade | endereço | salário

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.

umbum SQL usa um sistema lógico de três valores, incluindo verdadeiro, falso e null, null representa "desconhecido". bum OU b
VERDADEIROVERDADEIROVERDADEIROVERDADEIRO
VERDADEIROFALSOFALSOVERDADEIRO
VERDADEIRONULLNULLVERDADEIRO
FALSOFALSOFALSOFALSO
FALSONULLFALSONULL
NULLNULLNULLNULL
umNÃO um
VERDADEIROFALSO
FALSOVERDADEIRO
NULLNULL

Exemplo online

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)

Operadores de bit

Os operadores de bit operam em bits e executam operações bit a bit. As tabelas de verdade de &、 | e ^ são como follows:

pqp & qp | q
0000
0101
1111
1001

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:

OperadorDescriçãoExemplo
&

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

Exemplo online

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)