Kildeløs: Denne artikkelen manglerkildehenvisninger, og opplysningene i den kan dermed være vanskelige åverifisere. Kildeløst materiale kan blifjernet. Helt uten kilder. Fiks det!Delta i konkurranse (10. okt. 2015)om tilføring av kilder! |
INSERT er etSQL-uttrykk som legger til rader i entabell i en relasjonelldatabase. EnINSERT-setning kan kun sette inn data i én tabell.
INSERT-spørringer består av spesifikasjoneneINSERT INTO ogVALUES.INSERT INTO bestemmer hvilken tabell og hvilke kolonner verdiene skal settes inn i, ogVALUES spesifiserer verdiene som skal settes inn.
For å sette inn verdier i alle kolonnene, benyttes en slik spørring:
INSERTINTOtabellVALUES("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:
INSERTINTOtabell(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 avINSERT-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.
EnINSERT-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østetSELECT-spørring brukes i stedet forVALUES. Den nøstede spørringen kan inneholdeJOIN, funksjonskall, og kan referere til den samme tabellen som data skal settes inn i.
INSERTINTOtabell2SELECT*FROMtabell1WHEREkolonneIN("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.
Tabellentelefonbok ser slik ut:
| fornavn | etternavn | bosted | telefonnummer |
|---|---|---|---|
| Ola | Nordmann | Oslo | 01234567 |
| Navn | Navnesen | Bergen | 88765432 |
Denne spørringen blir sendt:
INSERTINTOtelefonbok(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 |