Microsoft SQL Server
SELECT statement
Ricerca…
introduzione
In SQL, le istruzioni SELECT
restituiscono insiemi di risultati da raccolte di dati come tabelle o viste. SELECT
istruzioni SELECT
possono essere utilizzate con varie altre clausole come WHERE
, GROUP BY
o ORDER BY
per perfezionare ulteriormente i risultati desiderati.
SELEZIONA di base dalla tabella
Seleziona tutte le colonne da una tabella (tabella di sistema in questo caso):
SELECT *
FROM sys.objects
Oppure seleziona solo alcune colonne specifiche:
SELECT object_id, name, type, create_date
FROM sys.objects
Filtra le righe usando la clausola WHERE
La clausola WHERE filtra solo le righe che soddisfano alcune condizioni:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Ordina i risultati utilizzando ORDER BY
La clausola ORDER BY ordina le righe nel set di risultati restituito da alcune colonne o espressioni:
SELECT *
FROM sys.objects
ORDER BY create_date
Raggruppa i risultati utilizzando GROUP BY
La clausola GROUP BY raggruppa le righe in base a qualche valore:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
È possibile applicare alcune funzioni su ciascun gruppo (funzione di aggregazione) per calcolare la somma o il conteggio dei record nel gruppo.
genere | c |
---|---|
SQ | 3 |
S | 72 |
IT | 16 |
PK | 1 |
U | 5 |
Filtra i gruppi usando la clausola HAVING
La clausola HAVING rimuove i gruppi che non soddisfano la condizione:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
genere | c |
---|---|
SQ | 3 |
PK | 1 |
U | 5 |
Restituzione solo delle prime N righe
La clausola TOP restituisce solo le prime N righe nel risultato:
SELECT TOP 10 *
FROM sys.objects
Impaginazione utilizzando OFFSET FETCH
La clausola OFFSET FETCH è la versione più avanzata di TOP. Ti permette di saltare le righe N1 e prendere le prossime righe N2:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
Puoi utilizzare OFFSET senza recupero per saltare solo le prime 50 righe:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
SELEZIONA senza FROM (nessuna fonte di dati)
L'istruzione SELECT può essere eseguita senza la clausola FROM:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
In questo caso, viene restituita una riga con valori / risultati di espressioni.