SQLite - Operatori logici
Esempio
Considera la tabella AZIENDA con i seguenti record:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Di seguito sono riportati semplici esempi che mostrano l'utilizzo degli operatori logici SQLite. La seguente istruzione SELECT elenca tutti i record in cui AGE è maggiore o uguale a 25 e lo stipendio è maggiore o uguale a 65000,00.
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
La seguente istruzione SELECT elenca tutti i record in cui AGE è maggiore o uguale a 25 OR lo stipendio è maggiore o uguale a 65000,00.
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
La seguente istruzione SELECT elenca tutti i record in cui AGE non è NULL, il che significa che tutti i record perché nessuno dei record ha AGE uguale a NULL.
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
La seguente istruzione SELECT elenca tutti i record in cui NAME inizia con "Ki", non importa cosa viene dopo "Ki".
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
La seguente istruzione SELECT elenca tutti i record in cui NAME inizia con "Ki", non importa cosa viene dopo "Ki".
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
La seguente istruzione SELECT elenca tutti i record in cui il valore AGE è 25 o 27.
sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
La seguente istruzione SELECT elenca tutti i record in cui il valore AGE non è né 25 né 27.
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
3 Teddy 23 Norway 20000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
La seguente istruzione SELECT elenca tutti i record in cui il valore AGE è compreso tra 25 e 27.
sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
La seguente istruzione SELECT utilizza la sottoquery SQL in cui la sottoquery trova tutti i record con il campo AGE con SALARY> 65000 e successiva viene utilizzata la clausola WHERE insieme all'operatore EXISTS per elencare tutti i record in cui esiste la query AGE dall'esterno il risultato restituito dalla sottoquery.
sqlite> SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24
La seguente istruzione SELECT utilizza la sottoquery SQL in cui la sottoquery trova tutti i record con il campo AGE con SALARY> 65000 e successivamente viene utilizzata la clausola WHERE insieme all'operatore> per elencare tutti i record in cui AGE dalla query esterna è maggiore del età nel risultato restituito dalla sottoquery.
sqlite> SELECT * FROM COMPANY
WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0