Insert (SQL)
INSERT er et SQL-uttrykk som legger en eller flere poster til en tabell i en relasjonell database. En INSERT-setning kan kun sette inn data i én tabell.
Grunnleggende form
Insert uttrykk har den følgende formen:
INSERT INTO tabell (kolonne1, [kolonne2, ... ]) VALUES (verdi1, [verdi2, ...])
Antall kolonner og verdier må være det samme. Hvis en kolonne ikke er spesifisert, vil en forhåndsdefinert verdi for kolonnen bli benyttet. Verdiene spesifiser 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.
Eksempel:
INSERT INTO telefonbok (fornavn, etternavn, telefonnummer) VALUES ('Jens', 'Jensen', '5511223344');
Når verdier for alle kolonner i tabellen er spesifisert er det mulig å bruke en kortversjon av utsagnet ved å ta i bruk kolonnerekkefølgen tabellen ble opprettet i:
INSERT INTO tabell VALUES (verdi1, [verdi2, ...])
Avansert form
Innsetting i flere rader
En egenskap ved SQL er bruken av radverdibegrensninger til å sette inn flere rader ved hjelp av ett SQL uttrykk:
INSERT INTO tabell (kolonne1, [kolonne2, ... ]) VALUES (verdi1a, [verdi1b, ...]), (verdia, [verdi2b, ...]), ...
Denne egenskaper er støttet av ((DB2)), ((PostgreSQL)) og ((MySQL)).
Eksempel:
INSERT INTO telefonbok VALUES ('John Doe', '555-1212'), ('Peter Doe', '555-2323');
vil være en kortversjon av de to følgende uttrykkene
INSERT INTO phone_book VALUES ('John Doe', '555-1212'); INSERT INTO phone_book VALUES ('Peter Doe', '555-2323');
Merk at de to separate utsagnene kan ha ulike semantikk, og vil ikke nødvendigvis oppny like høy ytelse som et enkelt flerrads INSERT uttrykk.
Kopiering av rader fra andre tabeller
Et INSERT uttryk kan også brukes for å hente ut data fra andre tabeller, endre det hvis ønskelig, og sette det inn i en ny tabhell. Dette kan gjøres ved hjelp av et enkelt SQL uttryk som ikke involverer noen mellomprosessering i klientapplikasjonen. En nøstet select spørring brukes istedenfor VALUES deler. Det nøstede uttrykket kan inneholde JOIN, funksjonskall, og kan referere til den samme tabellen som data skal settes inn i.
Eksempel:
INSERT INTO telefonbok2 SELECT * FROM telefonbok WHERE navn IN ('Jens Jensen', 'Hans Jensen')
SELECT uttrykker produserer en (midlertidig) tabell, og skjemaet til den midlertidige tabellen må være likt til skjemaet i tabellen som skal motta data.
![]() | Opprydning: Denne artikkelen trenger en opprydning for å oppfylle Wikipedias kvalitetskrav. Du kan hjelpe Wikipedia ved å forbedre den. |
Forbedringspotensial: Denne artikkelen har forbedringspotensial. Hvis ingen begrunnelse er oppgitt i malen eller på artikkelens diskusjonsside, kan malen fjernes uten videre. |