picoSQL - Manuale di riferimento |
Le condizioni di ricerca sono formate da uno o più predicati, combinati tra loro tramite gli operatori logici AND, OR e NOT. Esse sono usate per scegliere un sottoinsieme di righe da una tabella o da un insieme di più tabelle.
I predicati di una condizione di ricerca vengono valutati ogni volta che viene letta una riga dal database e se il risultato della valutazione risulta soddisfatto allora la riga viene restituita come valida, altrimenti viene ignorata.
(*) SQL standard usa una logica a tre stati, VERO, FALSO e SCONOSCIUTO dove quest'ultimo valore viene assegnato ogni volta si esegue un confronto dove compare un valore NULL. Le tabelle di verità di questo tipo di logica per gli operatori logici menzionati sono le seguenti:
AND |
VERO |
FALSO |
SCON. |
VERO |
VERO |
FALSO |
SCON. |
FALSO |
FALSO |
FALSO |
FALSO |
SCON. |
SCON. |
FALSO |
SCON. |
OR |
VERO |
FALSO |
SCON. |
VERO |
VERO |
VERO |
VERO |
FALSO |
VERO |
FALSO |
SCON. |
SCON. |
VERO |
SCON. |
SCON. |
NOT |
|
VERO |
FALSO |
FALSO |
VERO |
SCON. |
SCON. |
picoSQL usa una più semplice logica booleana a due valori, VERO e FALSO. Questo comporta un'unica differenza di comportamento tra lo standard SQL e picoSQL e cioè che il primo non ritiene soddisfatto un predicato che controlla se due valori NULL sono uguali mentre il secondo si.
PicoSQL permette in particolare di fare join su campi a NULL, aggirando in tal modo la necessità delle outer-join, che comunque sono implementate.
Due operandi confrontati in un predicato, direttamente o indirettamente, debbono essere di tipi comparabili.