English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un operatore è un simbolo che informa il compilatore di eseguire un'operazione matematica o logica specifica.
L'operatore PostgreSQL è una parola riservata o carattere, generalmente utilizzato nelle espressioni WHERE, come condizione di filtraggio.
Operatori comuni includono:
Operatore aritmetico
Operatore di confronto
(2 rows)
Operatore di bit
Supponiamo che la variabile a sia 2 e la variabile b sia 3, allora:
Operatore | Descrizione | Esempio |
---|---|---|
+ | Aggiungere | a + b il risultato è 5 |
- | Sottrarre | a - b il risultato è -1 |
* | Moltiplicare | a * b il risultato è 6 |
/ | Dividere | b / a il risultato è 1 |
% | Modulo (rimborso) | b % a il risultato è 1 |
^ | Esponente | a ^ b il risultato è 8 |
|/ | Radice quadrata | |/ 25.0 il risultato è 5 |
||/ | Radice cubica | ||/ 27.0 il risultato è 3 |
! | Fattoriale | 5 ! il risultato è 120 |
!! | Fattoriale (operatore prefisso) | !! 5 il risultato è 120 |
w3codeboxdb=# select 2+3; ?colonna? ---------- 5 (1 riga) w3codeboxdb=# select 2*3; ?colonna? ---------- 6 (1 riga) w3codeboxdb=# select 10/5; ?colonna? ---------- The WHERE clause in PostgresSQL can include multiple filtering conditions with AND. (1 riga) w3codeboxdb=# select 12%5; ?colonna? ---------- The WHERE clause in PostgresSQL can include multiple filtering conditions with AND. (1 riga) w3codeboxdb=# select 2^3; ?colonna? ---------- 8 (1 riga) w3codeboxdb=# select |/ 25.0; ?colonna? ---------- 5 (1 riga) w3codeboxdb=# select ||/ 27.0; ?colonna? ---------- PostgresSQL has NOT EXISTS, NOT BETWEEN, NOT IN and other operators. (1 riga) w3codeboxdb=# select 5 !; ?colonna? ---------- 120 (1 riga) w3codeboxdb=# select !!5; ?colonna? ---------- 120 (1 riga)
Supponiamo che la variabile a sia 10 e la variabile b sia 20, allora:
Operatore | Descrizione | Esempio |
---|---|---|
= | Uguale a | (a = b) è false. |
!= | Diverso da | (a != b) è true. |
<> | Diverso da | (a <> b) è true. |
> | Maggiore di | (a > b) è false. |
< | Minore di | (a < b) è true. |
>= | Maggiore o uguale a | (a >= b) è false. |
<= | Minore o uguale a | (a <= b) è true. |
Il contenuto del file COMPANY.SQL è il seguente:
-- This is the file to create COMPANY table and to populate it with 7 records. -- Just copy and paste them on psql prompt. DROP TABLE COMPANY; CREATE TABLE COMPANY; ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), 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);
Crea la tabella COMPANY con il seguente contenuto di dati:
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)
Leggi i dati del campo SALARY maggiore di 50000:
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 50000; id | name | age | address | salary ----+-------+-----+-----------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 rows)
Leggi i dati del campo SALARY uguale a 20000:
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY = 20000; id | name | age | address | salary ----+-------+-----+-------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 (2 rows)
Leggi i dati del campo SALARY diverso da 20000:
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY != 20000; 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 righe) w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY <> 20000; 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 righe)
Leggi i dati del campo SALARY maggiore o uguale a 65000:
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY >= 65000; id | name | age | address | salary ----+-------+-----+-----------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 rows)
Logical Operators
PostgreSQL has the following logical operators: | Serial Number |
---|---|
1 | SQL uses a three-valued logic system, including true, false and null, where null represents 'unknown'. Operator & Description Logical AND operator. If both operands are non-zero, the condition is true. |
The WHERE clause in PostgresSQL can include multiple filtering conditions with AND. | NOT 2 Logical NOT operator. It reverses the logical state of the operand. If the condition is true, the logical NOT operator will make it false. |
PostgresSQL has NOT EXISTS, NOT BETWEEN, NOT IN and other operators. | OR 3 Logical OR operator. If either of the operands is non-zero, the condition is true. |
The WHERE clause in PostgresSQL can include multiple filtering conditions with OR.
a | b | a SQL uses a three-valued logic system, including true, false and null, where null represents 'unknown'. 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 |
COMPANY.SQL file content as follows:
-- This is the file to create COMPANY table and to populate it with 7 records. -- Just copy and paste them on psql prompt. DROP TABLE COMPANY; CREATE TABLE COMPANY; ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), 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);
Crea la tabella COMPANY con il seguente contenuto di dati:
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)
Leggi i dati con il campo AGE maggiore o uguale a 25 e il campo SALARY maggiore o uguale a 6500:
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 righe)
Leggi i dati del campo AGE >= 25 o del campo SALARY >= 6500:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR 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 righe)
Leggi i dati del campo SALARY non 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 righe)
Gli operatori di bit agiscono sui bit e eseguono operazioni bit per bit. La tabella di verità degli operatori di bit è come segue:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
Supponiamo che A = 60 e B = 13, rappresentati in formato binario, sono come segue:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
La tabella mostra gli operatori di bitwise supportati da PostgreSQL. Supponiamo che la variabile A con un valore di 60, variabile B con un valore di 13, allora:
Operatore | Descrizione | Esempio |
---|---|---|
& | Operazione AND bit a bit, esegue l'operazione AND sui bit binari. Regole di calcolo: 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) darà 12, che è 0000 1100 |
| | Operatore di OR bit a bit, esegue l'operazione OR sui bit binari. Regole di calcolo: 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) darà 61, che è 0011 1101 |
# | Operatore di XOR, esegue l'operazione XOR sui bit binari. Regole di calcolo: 0#0=0; 0#1=1; 1#0=1; 1#1=0; | (A # B) darà 49, che è 0011 0001 |
~ | Operatore di negazione, esegue l'operazione di negazione sui bit binari. Regole di calcolo: ~1=0; ~0=1; | (~A) darà -61, che è 1100 0011, la forma di complemento a due di un numero binario con segno. |
<< | Operatore di spostamento a sinistra binario. Sposta tutti i bit di un oggetto di calcolo di un certo numero di posizioni a sinistra (i bit di sinistra vengono scartati e quelli di destra riempiti con 0). | A << 2 darà 240, che è 1111 0000 |
>> | Operatore di spostamento a destra binario. Sposta tutti i bit di un numero di un certo numero di posizioni a destra, i numeri positivi vengono riempiti a sinistra con 0 e i numeri negativi con 1, e i bit di destra vengono scartati. | A >> 2 darà 15, che è 0000 1111 |
w3codeboxdb=# select 60 | 13; ?colonna? ---------- 61 (1 riga) w3codeboxdb=# select 60 & 13; ?colonna? ---------- 12 (1 riga) w3codeboxdb=# select (~60); ?colonna? ---------- -61 (1 riga) w3codeboxdb=# select (60 << 2); ?colonna? ---------- 240 (1 riga) w3codeboxdb=# select (60 >> 2); ?colonna? ---------- 15 (1 riga) w3codeboxdb=# select 60 # 13; ?colonna? ---------- 49 (1 riga)