Microsoft SQL Server
SELECT-verklaring
Zoeken…
Invoering
In SQL retourneren SELECT
instructies sets resultaten uit gegevensverzamelingen zoals tabellen of weergaven. SELECT
instructies kunnen worden gebruikt met verschillende andere clausules zoals WHERE
, GROUP BY
of ORDER BY
om de gewenste resultaten verder te verfijnen.
Basic SELECT uit tabel
Selecteer alle kolommen uit een tabel (in dit geval systeemtabel):
SELECT *
FROM sys.objects
Of selecteer slechts enkele specifieke kolommen:
SELECT object_id, name, type, create_date
FROM sys.objects
Filter rijen met de WHERE-component
WAAR clausule filtert alleen die rijen die aan een voorwaarde voldoen:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Sorteer resultaten met BESTELLEN OP
ORDER BY-clausule sorteert rijen in het geretourneerde resultaat ingesteld door een kolom of expressie:
SELECT *
FROM sys.objects
ORDER BY create_date
Groepsresultaat met GROUP BY
GROUP BY-component groepeert rijen op een bepaalde waarde:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
U kunt een functie op elke groep toepassen (aggregatiefunctie) om de som of het aantal van de records in de groep te berekenen.
type | c |
---|---|
SQ | 3 |
S | 72 |
HET | 16 |
PK | 1 |
U | 5 |
Filter groepen met de clausule HAVING
HAVING-clausule verwijdert groepen die niet aan de voorwaarde voldoen:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
type | c |
---|---|
SQ | 3 |
PK | 1 |
U | 5 |
Retourneert alleen de eerste N rijen
TOP-clausule retourneert alleen de eerste N rijen in het resultaat:
SELECT TOP 10 *
FROM sys.objects
Paginering met OFFSET FETCH
OFFSET FETCH-clausule is een meer geavanceerde versie van TOP. Hiermee kunt u N1-rijen overslaan en de volgende N2-rijen nemen:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
U kunt OFFSET zonder ophalen gebruiken om de eerste 50 rijen over te slaan:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
SELECTEER zonder FROM (geen data souce)
SELECT-instructie kan worden uitgevoerd zonder clausule FROM:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
In dit geval wordt één rij met waarden / resultaten van expressies geretourneerd.