asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 4527
ASPCode.it - Store
<< lezione precedente lezione successiva >>

Corso di SQL - Istruzione SELECT - prima parte

La sintassi completa di questa istruzione è una delle più complicate di questo linguaggio ma è anche la più utilizzata, ragione per cui la analizzeremo punto per punto.

L'istruzione SELECT permette di effettuare delle interrogazioni al notro database e di selezionare le informazioni che ci interessano (nota: le parti tra < > sono opzionali).

select <distinct> espr1,espr2.... from tab <where condizione>

Ogni espressione può essere un campo (colonna) di una tabella o uno degli attributi particolari che vedremo in seguito che verranno estratti dalla tabella o dall'unione di più tabelle (tab). La condizione ci permetti di selezionare solo i record (le righe) che ci interessano. L'istruzione praticamente procede con tre punti:

  • unisce le tabelle e ne crea una unica (possiamo vederlo come un prodotto)
  • elimina da questa unica tabella le righe che non soddisfano la o le condizioni
  • crea una proiezione della tabella rispetto agli attributi espr1,espr2.... (possiamo pensare che vegano eliminate le colonne non specificate e vengano create quelle derivanti da espressioni particolari)

La clausola distinct permette di eliminare dall'interrogazione i record uguali che si ripetono. Questo può sembrare strano, ma se abbiamo una tabella con, per esempio, la lista degli abitanti di una città contenente i nomi, i cognomi, gli indirizzi, ecc... e decidiamo di vedere solo i nomi presenti:

select NOME from CITTA

avremo come risultato un'interrogazione con una moltitudine di righe che si ripetono mentre se inseriamo:

select distinct NOME from CITTA

avremo un nome diverso per ogni riga.

Se si vogliono visualizzare tutti i campi di una tabella si può usare il simbolo * o nometab.* ; nel caso in cui due campi di due tabelle diverse abbiano lo stesso nome si può usare la forma nometab.nomeattr .

Condizioni

Si possono ovviamente inserire più condizioni in una interrogazione concatenando con AND o OR in base all'esigenza.

select distinct NOME from CITTA where (ETA>20) AND (SEX='M')

Un altro modo per creare una condizione è usare l'operatore like, per esempio se vogliamo trovare tutti i nomi che contengono una 'A' e una 'R' useremo:

select distinct NOME from CITTA where NOME like '%A%R%'

L' % è un carattere jolly che indica una qualsiasi stringa mentre, se vogliamo indicare un solo carattere, useremo _ . Per esempio cerchiamo tutti i nomi di 4 lettere che cominciano per A:

select distinct NOME from CITTA where NOME like 'A___'

Osserviamo ora le funzioni particolari che l'SQL ci mette a disposizione; contiamo, ad esempio, quante persone hanno come nome Andrea e poi la media delle età di tali persone:

select count (NOME) from CITTA where NOME='Andrea'
    oppure
select count(*) as N_NOMI from CITTA where NOME='Andrea'


select avg (ETA) from CITTA where NOME='Andrea'

Elenchiamo ora tutte le funzioni disponibili:

  • count :conta gli elementi
  • min : valore minimo
  • max : valore massimo
  • sum : somma i valori
  • avg : esegue la media dei valori

Nell'esempio compare anche la parola as che permette di ridenominare un campo dell' interrogazione.

Giunzioni tra tabelle

Il select permette di interrogare più tabelle contemporaneamente unendole tramite un join; se ad esempio, oltre alla tabella CITTA, abbiamo una tabella OCCUPAZIONI che contiene il nome e il lavoro di ogni abitante, per sapere il lavoro e l'età delle persone con nome Carlo faremo:

select LAVORO, ETA from CITTA inner join OCCUPAZIONI on CITTA.NOME=OCCUPAZIONI.NOME where NOME='Carlo'


o negli SQL dove è permesso (in Access non mi risulta):

select LAVORO, ETA from CITTA natural join OCCUPAZIONI where NOME='Carlo'

<< lezione precedente lezione successiva >>


Utenti connessi: 4527