Solitamente siamo abituati ad utilizzare l'istruzione SELECT per recuperare i dati dalle tabelle di SQL Server, ma questo non è il solo compito che possiamo svolgere, difatti nell'ambito del Transact SQL diventano molteplici i campi di utilizzo di questa istruzione.
1) Assegnare il valore ad una variabile
Dentro un batch Transact SQL l'istruzione SELECT è utilizzata per assegnare valori ad una o più variabili vediamo un esempio:
/* Assegnazione singola di una variabile*/
DECLARE @miavar VARCHAR(255)
SELECT @miavar = 'una piccola variabile stringa'
Per assegnare valori a più variabili è sufficiente separarle con
una virgola:
/* Assegnazione multipla delle variabili*/
DECLARE @miavar VARCHAR(255), @miavar2 VARCHAR(255)
SELECT @miavar = 'una piccola variabile stringa', @miavar2
= 'altra piccola variabile stringa'
2) Rimuovere le righe duplicate da una tabella
La parola chiave DISTINCT ci permette di estrarre solamente le righe uniche
da una tabella (filtra le righe senza considerare i duplicati) e grazie alla SELECT INTO possiamo inserirli in una tabella temporanea:
SELECT DISTINCT * INTO #tabella_record_unici FROM tabella_con_duplicati
3) Selezionare dati da ACCESS o EXCEL
Possiamo recuperare dati da un file ACCESS presente sul nostro PC, semplicemente accedendo alla funzione OPENROWSET. Nel nostro caso selezioniamo tutti i record della tabella Anagrafica dal file ACCESS.
SELECT *
FROM OpenRowset('Microsoft.Jet.OLEDB.4.0', 'C:contenuti.mdb';'admin';'',
Anagrafica)
Oppure facciamo una query ad un foglio Excel di nome categorie:
SELECT *
FROM OpenRowset('MSDASQL', 'Driver=Microsoft Excel Driver (*.xls);DBQ=c:Categorie','SELECT
* FROM [Results]')
4) Creare una nuova tabella
Grazie alla parola chiave INTO possiamo clonare una tabella creandone una copia identica sia nella struttura che nei contenuti.
SELECT * INTO copia_titles FROM titles
5) Limitare il numero di righe ritornate da una query
Grazie alla clausola TOP implementata dalla versione 7.0 di SQL Server possiamo definire con precisione il numero di righe ritornate da una SELECT. La clausola TOP può essere utilizzata in due modi, in valore assoluto:
SELECT TOP 5 * FROM titles
Oppure in valore percentuale come in questo caso, verranno ritornato solo
un numero corrispondente il 10 percento delle righe presenti nella tabella titles:
SELECT TOP 10 PERCENT * FROM titles
6) Avere informazioni di sistema sul database
SQL Server ci fornisce numerose funzioni scalari che ritornano numerose informazioni sul database e sugli oggetti del database. L'istruzione SELECT anche in questo caso ci è utile per recuperare queste informazioni, come esempio esaminiamo e funzioni molto comuni come DB_NAME() e USER_NAME().
SELECT
DB_NAME() AS [Nome database corrente],
USER_NAME() AS [Nome username corrente]