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.