📁
Forum per Webmaster
SQL

Comando Select

L’aspetto più importante del linguaggio SQL è costituito dalla possibilità di porre interrogazioni in modo molto semplice alla base di dati per ritrovare le informazioni che interessano.
Queste prestazioni sono fornite dal comando SELECT, che è nello stesso tempo molto potente e molto semplice da usare. Con il comando Select vengono attivate le interrogazioni sulle relazioni e le operazioni relazionali per ottenere nuove tabelle. Inoltre l'utente viene liberato da tutti problemi che riguardano le modalità e i percorsi per ritrovare i dati, cioè la loro collocazione fisica nelle memoria di massa: deve solo specificare al sistema quali dati vuole ottenere.
La struttura generale del comando Select è la seguente:

SELECT .....
 FROM .....
 WHERE .....

Accanto alla parola Select vengono indicati i nomi degli attributi (le colonne) da elencare (se è necessario elencare tutti gli attributi basta scrivere il segno di asterisco * dopo la parola Select); dopo From vengono indicati i nomi delle tabelle su cui deve operare il comando Select; dopo la clausola Where si specifica la condizione che deve essere soddisfatta dai campi delle righe:
possono comparire anche più condizioni combinate con gli operatori AND, OR e NOT.
Per esempio l'elenco con cognome, nome e codice fiscale dei dipendenti con funzione di Impiegato si ottiene con il comando Select nella forma:

SELECT Cognome, Nome, CodFisc
 FROM Personale
 WHERE Funzione 'Impiegato' ;

In questo primo esempio accanto alla parola Select sono stati specificati solo alcuni attributi tra quelli presenti nella tabella. Per richiedere tutti i dati dei dipendenti che abitano in provincia di Milano, si usa il comando Select nella forma:

SELECT *
 FROM Personale
 WHERE Prov 'MI' ;

Nel secondo esempio il simbolo * sostituisce l'elencazione di tutti gli attributi della tabella Personale. Il comando Select possiede due predicati ALL e DISTINCT. Il predicato ALL indica la richiesta di ottenere come risultato dell'interrogazione tutte le righe che soddisfano alle condizioni contenute nel comando. Questo predicato è di default, cioè se non viene fatta nessuna specificazione vengono visualizzate tutte le righe della tabella che rispondono alle condizioni poste. Pertanto le due seguenti istruzioni Select sono equivalenti:

SELECT ALL *
 FROM Personale
 WHERE Prov 'MI' ;

SELECT *
 FROM Personale
 WHERE Prov 'MI' ;

Se viene specificato il predicato DISTINCT le righe duplicate nella tabella risultante vengono ridotte a una. Per esempio se si desidera ottenere l'elenco di tutte le professioni presenti tra i dipendenti della tabella Personale, specificando una sola volta il tipo di professione anche quando è riferita a più dipendenti, si deve usare la clausola Distinct prima dell'indicazione dell'attributo:

SELECT DISTINCT Funzione
 FROM Personale;

Il comando Select nella forma senza Distinct

SELECT Funzione
 FROM Personale;

produrrebbe l'elenco di tutte le professioni dei dipendenti ripetendo tante volte la stessa professione in righe diverse, tante quanti sono i dipendenti che svolgono quella funzione. In presenza del predicato Distinct in un'interrogazione con Select che contiene più attributi, una riga pu essere inclusa nella tabella risultante solo se la combinazione di valori provenienti da tutti gli attributi è univoca. La tabella che si ottiene come risultato dell'interrogazione con Select normalmente possiede un'intestazione delle colonne che riporta i nomi degli attributi; se si vuole modificare tale intestazione, occorre dichiarare la stringa della nuova intestazione insieme alla clausola AS. Per esempio per ottenere l'elenco delle diverse province da cui provengono i dipendenti della tabella Personale, intestando la colonna del risultato con il titolo Provincia, si deve scrivere il comando Select secondo la seguente sintassi:

SELECT DISTINCT Prov AS Provincia
 FROM Personale;

Con il comando Select si pu anche richiedere il calcolo di espressioni sugli attributi presenti nella tabella; la tabella risultante contiene una colonna aggiuntiva con i risultati del calcolo per ogni riga. Questa nuova colonna viene intestata con una descrizione opportuna utilizzando la parola As. Per esempio il comando seguente visualizza, accanto agli stipendi attuali, quali sarebbero i nuovi stipendi base dei dipendenti aumentati del 5%, senza modifica dell'importo di ciascuno stipendio nelle righe della tabella:

SELECT Cognome, Nome, StipBase AS Attuale,StipBase*l.05 AS Nuovo
 FROM Personale;

In alcuni degli esempi precedenti e in quelli presentati nei paragrafi successivi, per rendere più semplice l'illustrazione dei comandi di SQL, vengono utilizzati valori costanti nelle condizioni scritte dopo Where, come nel caso dell'interrogazione di inizio paragrafo:

SELECT Cognome, Nome, CodFisc
 FROM Personale
 WHERE Funzione 'Impiegato';

In realtà il tipo di funzione del dipendente da utilizzare nell'operazione di confronto, anziché essere uguale alla costante Impiegato, dovrebbe essere indicato in modo parametrico, per poter usare la stessa interrogazione più volte per funzioni diverse dei dipendenti. Per esempio, in Access per Windows questo può essere fatto indicando tra parentesi quadre il nome del parametro:
al momento dell'esecuzione del comando Select viene richiesto all'utente di inserire, in modo interattivo attraverso una finestra di dialogo, il tipo di funzione che si vuole controllare per i dipendenti.

SELECT Cognome, Nome, CodFisc
 FROM Personale
 WHERE Funzione [TipoFunzione];

Argomenti nella stessa categoria