SQL Syntax
SQL er et standard språk for å akksessere og manipulere databaser. Selv om det er en standard på kryss av ulike databaseprogrammer
(som MS SQL, Oracle, MySQL osv) er det en del forskjellige versjoner av SQL som språk. Dette gjelder først og fremst funksjonene i
språket, men felles for alle er nøkkelordene som SELECT, UPDATE, DROP, INSERT med flere.
SELECT
Syntax
SELECT kolonner FROM tabell
Nøkkelordet SELECT brukes når man skal hente data fra en tabell. En tabell består av flere kolonner og gjerne flere rader med data.
Dersom vi for eksempel har en tabell "Personer" med fire kolonner: Fornavn, Etternavn, Adresse og Alder kan vi gjøre en spørring for å ta ut de dataene vi trenger.
SELECT Fornavn FROM Personer. Den spørringen vil returnere alle fornavnene i tabellen:
Man kan altså vha SELECT ta ut de kolonnene man vil (kolonner adskilt med ,) fra en hvilken som helst tabell. Dersom vi vil ha ut
mer enn kun fornavn kan vi angi dette med feks SELECT Fornavn, Etternavn FROM Personer og får tilbake resultatet:
| Fornavn | Etternavn |
| Ola | Normann |
| Kari | Traa |
| Erik | Sturlason |
Man kan gjøre en SELECT på alle kolonner vha av SELECT * FROM Personer men gjør det til en god vane å alltid anngi hvilke kolonner
du vil ta ut. Det er sjelden man egentlig trenger alle kolonnene. Ikke ta ut mer data enn du trenger.
I tillegg til å begrense kolonner kan man begrense rader ved å angi noen kriterier i spørringen. Vha av WHERE kan man angi
så mange kriterier man ønsker som feks
SELECT Fornavn,Etternavn FROM Personer
WHERE (Fornavn = 'Ola')
Denne spørringen vil returnere alle med fornavnet "Ola". Man kan legge til så mange kriterier man ønsker vha AND og OR.
SELECT Fornavn FROM Personer
WHERE (Fornavn = 'Ola') OR (Etternavn = 'Traa')
Returnerer alle som har fornavnet "Ola" eller etternavnet "Traa"
SELECT Fornavn FROM Personer
WHERE (Fornavn = 'Ola') AND (Etternavn = 'Traa')
Returnerer alle som har fornavnet "Ola" og etternavnet "Traa"
Hvis man har mange kriterier er det viktig å bruke paranteser riktig. Dette er som i matte der man grupperer kriteriene.
SELECT Fornavn FROM Personer WHERE (Fornavn='Kari' OR Fornavn='Ola') AND (Etternavn='Traa')
Man kan bruke operatører sammen med bokstaver også. "Fornavn > 'G'" vil gi deg alle som
har fornavn som alfabetisk er høyere enn 'G'
Syntax
SELECT kolonner FROM tabell WHERE kriterier
Man kan bruke en rekke operatører for å selektere data. Her er en liste:
| Operatør |
Forklaring |
| = | Er lik |
| <> | Er ikke lik |
| > | Er høyere enn |
| < | Er lavere enn |
| >= | Høyere enn eller lik |
| <= | Lavere enn eller lik |
| BETWEEN | Mellom to verdier |
| LIKE | Søk |
| IN | Kommaseparerte verdier |
Eksempler på alle operatørene:
Rader hvor navn er lik spesifikk verdi:
SELECT Fornavn FROM Personer WHERE (Fornavn = 'Ola')
Rader hvor etternavn er ulik en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Etternavn <> 'Traa')
Rader hvor alder er høyere enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Alder > 20)
Rader hvor alder er lavere enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Alder < 40)
Rader hvor alder er høyere eller lik enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Alder >= 20)
Rader hvor alder er lavere eller lik enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Alder <= 40)
Rader hvor alder er mellom to verdier
SELECT Fornavn FROM Personer WHERE (Alder BETWEEN 20 AND 40)
Rader hvor fornavn starter med enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Fornavn LIKE 'K%')
Rader hvor fornavn slutter med enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Fornavn LIKE '%k')
Rader hvor fornavn inneholder med enn en spesifikk verdi
SELECT Fornavn FROM Personer WHERE (Fornavn LIKE '%ar%')
Rader hvor alder er en av flere verdier
SELECT Fornavn FROM Personer WHERE (ALDER IN (20,22,23,41,55))
MS SQL Server er ikke case sensitiv som standard, men man kan konfigurere databasen til å være det.
En annen måte å begrense uttaket på er å bruke ordet DISTINCT. Da tar man kun ut unike oppføringer.
SELECT DISTINCT Fornavn FROM Personer
Her vil man få ut alle unike fornavn. Selv om tabellen skulle inneholde flere personer med fornavnt "Ola" vil det kun
komme en rad med dette navnet.
I mange tilfeller ønsker man å sortere dataene etter en bestemt kolonne. Det gjøres enkelt med ORDER BY. Ved å legge til
ORDER BY kan man angi hvilken kolonne man vil sortere etter og hvilken vei man vil soretere (ASC Ascending (stigende> / DESC Descending (synkende))
Liste med fornavn sortert etter alder (yngste først)
SELECT Fornavn FROM Personer ORDER BY Alder ASC
Liste med fornavn sortert etter alder (eldste først)
SELECT Fornavn FROM Personer ORDER BY Alder DESC
Man trenger ikke å skrive ASC når man sorterer stigende siden ASC er standard sortering. Hvis man vil sortere etter flere kolonner angir
man hver kolonne adskilt med komma i den rekkefølgen man vil at sorteringen skal følge.
SELECT Fornavn FROM Personer ORDER BY Alder, Fornavn, Etternavn
INSERT
Syntax
INSERT INTO tabell (kolonner) VALUES (verdier)
For å lagre data i tabellen brukes nøkkelordet INSERT. Med dette nøkkelordet kan vi sette inn rader med data i tabellene våre.
Vi må angi hvilken tabell vi vil sette data inn i, hvilke kolonner vi vil putte data i og selvfølgelig dataene våre:
INSERT INTO Personer
(Fornavn, Etternavn, Addresse, Alder)
VALUES
('Rune', 'Iversen', 'Vinkelveien 7', 32)
Denne koden vil sette inn en ny rad i tabellen Personer med de data som er angitt eter VALUES. Hvis du ikke setter data inn i alle
kolonnene vil det settes inn en nullverdi NULL.
UPDATE
For å oppdatere data i tabellen bruker vi nøkkelordet UPDATE. Vi kan da ved hjelp av kriterier angi hvilke rader som
skal oppdateres og hva som skal oppdateres.
Syntax:
UPDATE tabell SET kolonnenavn = ny_verdi WHERE kriterie
Dersom man vil oppdatere addressen til Ola Normann kan man gjøre det på følgende måte:
UPDATE Personer
SET Addresse = 'Vinkelveien 19'
WHERE (Fornavn='Ola') AND (Etternavn='Normann')
Hvis du ikke oppgir noen kriterier vil den nye verdien settes i alle rader!
Det er kriteriene som bestemmer hvilke rader som skal oppdateres.
Når man oppdaterer data er det viktig å ikke bomme på kriteriene. Når du gjør dette manuelt er det lurt å gjøre en SELECT
først slik at man ser hvilke rader kriteriene treffer på.
DELETE
Syntax
DELETE FROM tabell WHERE kriterier
Nøkkelordet DELETE sletter data. Som med UPDATE er det viktig å angi riktige kriterier så man ikke sletter
mer data enn man hadde tenkt. Dersom jeg ønsker å slette alle som er eldre enn 30 år fra min tabell kan jeg bruke:
DELETE FROM Personer WHERE (Alder > 30)
Hvis du ikke oppgir noen kriterier vil alle radene i tabellen slettes!
DELETE FROM Personer
Det kan være lurt å opprette en kolonne som angir om dataene er slettet og oppdatere den verdien i stedet for å slette hele raden.
Da kan man reversere en DELETE dersom man trenger.