SqlServer.no

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:

Fornavn
Ola
Kari
Erik

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:

FornavnEtternavn
OlaNormann
KariTraa
ErikSturlason
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
BETWEENMellom to verdier
LIKESøk
INKommaseparerte 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.
Template World
06.02.2012 Faktura1
Desgin by:
Sist oppdatert:
Vi fakturerer med: