Il linguaggio T-SQL è il cuore di SQL Server e se vogliamo sapere operare bene con questo motore di database, bisogna conoscere questo linguaggio e saperlo sfruttare al meglio.
In questa prima sezione vediamo quali sono le principali clausole che possiamo usare per estrapolare dati da una tabella o da una vista.
SELECT
In questa clausola specifichiamo quali sono i campi della tabella, o delle tabelle, che vogliamo visualizzare.
SELECT * indica che vogliamo visualizzare tutti i campi. Se nella clausola SELECT sono presenti più tabelle, si userà la clausola NOMETABELLA.* per visualizzare tutti i campi.
Se si vuole assegnare un nuovo nome ad un campo o ad una tabella, si possono usare gli Alias, ovvero i sinonimi. SELECT CAMPO AS ALIAS, il campo si chiamerà ALIAS.
Listato 1. Comando Select
--Selezione di tutti i campi
SELECT *
--Selezione di campi mirata
SELECT [CAMPO01], [CAMPO02]
--Selezione con alias dei campi
SELECT [CAMPO01] AS NOME, [CAMPO02] AS COGNOME
FROM
Nella clausola FROM, vengono indicati i nomi delle tabelle o viste che si vuole interrogare.
Listato 2. Clausola FROM
--Selezione di tutti i campi
SELECT * FROM [TABELLA]
--Selezione di campi mirata da una o più tabelle
SELECT [TABELLA].[CAMPO01], [TABELLA02].[CAMPO02] FROM [TABELLA], [TABELLA02]
--Selezione con alias dei campi
SELECT ANAGRAFICA.[CAMPO01] AS NOME, ANAGRAFICA.[CAMPO02] AS COGNOME FROM [TABELLA] AS ANAGRAFICA
WHERE
La clausola WHERE viene usata per effettuare un vero e proprio filtraggio delle informazioni. Nella clausola WHERE possiamo indicare dei possibili valori di un determinato campo.
Se le condizioni da valutare sono più di una, la prima clausola where sarà seguita da un AND o da un OR.
Con la parola IN possiamo indicare diversi valori per i quali la clausola WHERE viene soddisfatta.
Listato 3. Clausola WHERE
--Selezione di tutti i campi con condizione semplice
SELECT * FROM [TABELLA] WHERE [CAMPO] = 'VALORE'
--Selezione con più condizioni
SELECT * FROM [TABELLA] WHERE [CAMPO01] = 'VALORE' AND [CAMPO02] = 123
--Selezione con clausola IN
SELECT * FROM [TABELLA] WHERE [PROVINCIA] IN ('VA', 'BG', 'CO', 'MI')
ORDER BY
Una volta che abbiamo filtrato i dati dobbiamo ordinarli. Nella clausola Order by, dobbiamo indicare quali sono i campi da ordinare, seguiti da virgola e dalla condizione di ordinamento (ASC ascendente o DESC discendente).
Listato 4. Clausola ORDER BY
--Selezione di tutti i campi con ordine
SELECT * FROM [TABELLA] ORDER BY [CAMPO01] ASC
--Selezione con più condizioni
SELECT * FROM [TABELLA] ORDER BY [CAMPO01] ASC,[CAMPO01] DESC
DISTINCT
Può capitare di avere a disposizione una tabella con molti dati ridondanti. Per esempio la tabella ordini denormalizzata, potrebbe contenere parecchie volte il nome Mario Rossi, perchè questa persona ha effettuato diversi ordini. Con la clausola DISTINCT, chiediamo al database di mostrarci solamente 1 riga dove quel campo contiene quel valore. Quindi la parola DISTINCT restituisce l'unicità delle righe per quelle colonne specificate nella SELECT.
Listato 5. Clausola DISTINCT
--Selezione valore unico
SELECT DISTINCT [CAMPO01], [CAMPO02] FROM [TABELLA]