Insert (SQL)
Kildeløs: Denne artikkelen mangler kildehenvisninger, og opplysningene i den kan dermed være vanskelige å verifisere. Kildeløst materiale kan bli fjernet. Helt uten kilder.
  (10. okt. 2015)  | 
INSERT er et SQL-uttrykk som legger til rader i en tabell i en relasjonell database. En INSERT-setning kan kun sette inn data i én tabell.
Syntaks
[rediger | rediger kilde]INSERT-spørringer består av spesifikasjonene INSERT INTO og VALUES. INSERT INTO bestemmer hvilken tabell og hvilke kolonner verdiene skal settes inn i, og VALUES spesifiserer verdiene som skal settes inn.
For å sette inn verdier i alle kolonnene, benyttes en slik spørring:
INSERT INTO tabell
VALUES
	(
		"Verdi 1 i rad 1",
		"Verdi 2 i rad 1",
		"Verdi 3 i rad 1"
	),
	(
		"Verdi 1 i rad 2",
		"Verdi 2 i rad 2",
		"Verdi 3 i rad 2"
	),
	(
		"Verdi 1 i rad 3",
		"Verdi 2 i rad 3",
		"Verdi 3 i rad 3"
	)
For å sette inn verdier i noen av kolonnene, benyttes en slik spørring:
INSERT INTO tabell (
	kolonne1,
	kolonne3
)
VALUES
	(
		"Verdi 1 i rad 1",
		"Verdi 3 i rad 1"
	),
	(
		"Verdi 1 i rad 2",
		"Verdi 3 i rad 2"
	),
	(
		"Verdi 1 i rad 3",
		"Verdi 3 i rad 3"
	)
Antallet kolonner og verdier må være det samme. Hvis en kolonne ikke er spesifisert, vil en forhåndsdefinert verdi for kolonnen bli benyttet. Verdiene spesifisert av INSERT-utsagnet må tilfredsstille alle begrensningene for tabellen, for eksempel primærnøkler eller NOT NULL-begrensninger. Hvis en syntaksfeil oppstår, eller noen av begrensningene er brutt, vil ikke den nye raden legges til i tabellen og en feilmelding vil bli returnert.
En INSERT-spørring kan også brukes til å hente ut data fra andre tabeller, endre det hvis ønskelig, og sette det inn i en ny tabell. Dette kan gjøres ved hjelp av en enkelt spørring som ikke involverer noen mellomprosessering i klientapplikasjonen. En nøstet SELECT-spørring brukes i stedet for VALUES. Den nøstede spørringen kan inneholde JOIN, funksjonskall, og kan referere til den samme tabellen som data skal settes inn i.
INSERT INTO tabell2
SELECT *
FROM tabell1
WHERE kolonne IN ("Verdi1", "Verdi2")
SELECT-uttrykket produserer en midlertidig tabell, og skjemaet til den midlertidige tabellen må være likt skjemaet i tabellen som skal motta data.
Eksempel
[rediger | rediger kilde]Tabellen telefonbok ser slik ut:
| fornavn | etternavn | bosted | telefonnummer | 
|---|---|---|---|
| Ola | Nordmann | Oslo | 01234567 | 
| Navn | Navnesen | Bergen | 88765432 | 
Denne spørringen blir sendt:
INSERT INTO telefonbok (
	fornavn,
	etternavn,
	telefonnummer
)
VALUES
	(
		"Jens",
		"Jensen",
		11223344
	),
	(
		"Kari",
		"Nordmann",
		99887766
	)
Tabellen ser da slik ut:
| fornavn | etternavn | bosted | telefonnummer | 
|---|---|---|---|
| Ola | Nordmann | Oslo | 01234567 | 
| Navn | Navnesen | Bergen | 88765432 | 
| Jens | Jensen | 11223344 | |
| Kari | Nordmann | 99887766 |