SQL
SELECT - hent data
SELECT er den forespørgsel, du bruger mest. Du angiver hvilke kolonner du vil have, hvilken tabel de kommer fra, og eventuelt hvordan resultatet skal sorteres og begrænses. Databasen svarer med rækker og kolonner, uanset hvor mange der er.
Grundformen
SELECT navn, email
FROM kunde
ORDER BY navn;
Tre dele: hvilke kolonner, hvilken tabel, hvilken rækkefølge. Resultatet er altid en tabel, også når der kun er én række eller ingen.
Skriv nøgleordene med store bogstaver. SQL er ligeglad, men det gør en lang forespørgsel meget lettere at læse, og det er det, der bliver bedømt.
Vælg kolonner, ikke stjerner
SELECT * FROM kunde;
* betyder alle kolonner. Det er fint, mens du undersøger en tabel, du ikke
kender. I den kode, du afleverer, skriver du kolonnerne ud: så ved læseren, hvad
du bruger, og forespørgslen går ikke i stykker, hvis nogen tilføjer en kolonne.
Aliasser gør resultatet læsbart
SELECT
navn AS kundenavn,
pris * 1.25 AS pris_med_moms
FROM produkt;
AS giver kolonnen et andet navn i resultatet. Det bruges især til beregnede
kolonner, som ellers får et ubrugeligt navn.
Tabeller kan også få et kort alias, hvilket er nødvendigt, så snart du joiner:
SELECT k.navn, o.dato
FROM kunde AS k
JOIN ordre AS o ON o.kunde_id = k.id;
Kun de forskellige
SELECT DISTINCT by FROM kunde;
DISTINCT fjerner dubletter i resultatet. Bruger du den ofte, er det tit et tegn
på, at der er et join, som giver flere rækker end forventet. Se
JOIN. Kig altid på årsagen, før du lægger
DISTINCT på.
Begræns antallet
Her adskiller dialekterne sig, og det er værd at kende begge:
-- MS SQL Server (det, kurset bruger)
SELECT TOP 10 navn FROM kunde ORDER BY oprettet DESC;
-- MySQL, PostgreSQL, SQLite
SELECT navn FROM kunde ORDER BY oprettet DESC LIMIT 10;
ORDER BY … DESC sorterer faldende, ASC (standard) stigende. Uden ORDER BY er
rækkefølgen ikke garanteret, heller ikke selvom den ser stabil ud, mens du
tester.
Beregninger i SELECT
SELECT
navn,
pris,
pris * 0.8 AS tilbudspris,
UPPER(navn) AS navn_store_bogstaver
FROM produkt;
Alt, hvad der kan regnes ud pr. række, kan stå i SELECT. Skal der derimod regnes
på tværs af flere rækker, summer, gennemsnit, antal, skal du bruge
GROUP BY.
Kort opsamling
SELECT kolonner FROM tabel ORDER BY kolonne;- Skriv kolonnenavne frem for
*i afleveret kode. ASnavngiver beregnede kolonner og forkorter tabelnavne.- Uden
ORDER BYer rækkefølgen tilfældig.
Læs videre
- WHERE - filtrér rækker WHERE i SQL forklaret på dansk: sammenligninger, AND og OR, LIKE, IN, BETWEEN og hvorfor NULL aldrig er lig med noget som helst.
- JOIN forklaret SQL JOIN forklaret på dansk: inner join, left join og forskellen på dem. Hvorfor du pludselig får flere rækker, end du forventede, og hvordan du undgår det.
- GROUP BY og aggregering GROUP BY i SQL forklaret på dansk: COUNT, SUM og AVG, forskellen på WHERE og HAVING, og hvorfor du får en fejl om kolonner der ikke er i gruppen.
Senest gennemgået .