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.
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.
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 |