Le clausole che Sql contempla sono:
- Where
- Group By
- Order By
- Having
La clausola Where verifica che ci siano delle condizioni solo a livello di singole righe. Ecco un esempio, in cui dalla tabella che interroghiamo, poniamo la clausola Where ‘Importo<150000′; tale condizione è stata posta a tutte le righe per poi ottenere solo quelle che la soddisfano:
|
ASSEGNI
|
|||
|
ASSEGNO |
BENEFICIARIO
————————————— |
IMPORTO
——————- |
NOTE
————————————— |
| 1 | COMPUTER SHOP |
50 000
|
DISCHETTI E CD-ROM |
| 2 | LIBRERIE CULTURA |
245 000
|
LIBRI, CANCELLERIA |
| 3 | COMPUTER SHOP |
200 000
|
TELEFONO CELLULARE |
| 4 | BIOGAS SRL |
88 000
|
GAS |
| 5 | SUPERMARCHET GS |
150 000
|
ALIMENTARI |
| 16 | ASSICURAZIONI ASSO |
425 000
|
ASSICURAZIONE CASA |
| 17 | GAS S.P.A. |
25 000
|
GAS |
| 21 | COMPUTER SHOP |
34 000
|
CONTROLLER |
| 20 | ABITI BELLA |
110 000
|
PANTALONI |
| 9 | ABITI BELLA |
224 000
|
COMPLETO DONNA |
| 8 | COMPUTER SHOP |
134 000
|
JOYSTICK |
SELECT * FROM ASSEGNI
WHERE IMPORTO < 150000;
|
ASSEGNO |
BENEFICIARIO
————————————— |
IMPORTO
——————- |
NOTE
————————————— |
| 1 | COMPUTER SHOP |
50 000
|
DISCHETTI E CD-ROM |
| 4 | BIOGAS SRL |
88 000
|
GAS |
| 17 | GAS S.P.A. |
25 000
|
GAS |
| 21 | COMPUTER SHOP |
34 000
|
CONTROLLER |
| 20 | ABITI BELLA |
110 000
|
PANTALONI |
| 8 | COMPUTER SHOP |
134 000
|
JOYSTICK |
La clausola Group By consente di interrogare le colonne di una tabella per formare dei sottoinsiemi.
Ad esempio, se per ogni beneficiario vogliamo sapere quanto è stato elargito, abbiamo la segunete espressione:
SELECT BENEFICIARIO, SUM(IMPORTO)
FROM ASSEGNI
GROUP BY BENEFICIARIO;
Da cui otterremo questo risultato:
|
BENEFICIARIO
————————————— |
SUM(IMPORTO)
————————— |
| ABITI BELLA |
334 000
|
| ASSICURAZIONI ASSO |
425 000
|
| BIOGAS SRL |
88 000
|
| COMPUTER SHOP |
418 000
|
| GAS S.P.A. |
25 000
|
| LIBRERIE CULTURA |
245 000
|
| SUPERMARCHET GS |
150 000
|
La clausola Having viene utilizzata in sostituzione di Where quando nella condizione appaiono funzioni di gruppo o quando la condizione deve verificarsi per un sottoinsieme di righe.
SELECT DIVISIONE, AVG(STIPENDIO)
FROM DIPENDENTI
GROUP BY DIVISIONE
HAVING DIVISIONE = ‘VENDITE’;
|
DIVISIONE
——————————- |
AVG(STIPENDIO)
————————— |
| VENDITE | 2033333,3 |
Qui vediamo che la media degli stipendi è stata estrapolata dalla sola divisione vendite.