Oversigt: i denne vejledning lærer du, hvordan du bruger SQL INSERT-sætning til at indsætte data i tabeller.
INSERT
sætningen indsætter en eller flere rækker i en tabel. INSERT
udsagn omtales undertiden som et INSERT INTO
udsagn.
SQL INSERT-sætning – indsæt en række i en tabel
Følgende illustrerer INSERT
udsagn, der indsætter en enkelt række i en eksisterende tabel.
1
2
|
INDSÆT I tabel (kolonne1, kolonne2, …)
VÆRDIER (værdi1, værdi2, …);
|
For at indsætte en række i en tabel skal du angiv tre ting:
- Først skal tabellen, som du vil indsætte en ny række, i
INSERT INTO
klausul. - For det andet en komma-adskilt liste over kolonner i tabellen omgivet af parenteser.
- For det tredje en komma-adskilt liste over værdier omgivet af parenteser i
VALUES
klausul.
Kolonnelisten skal have det samme antal elementer som værdilisten, ellers udsteder databasemotoren en fejl.
Lad os se på ved følgende shippers
tabel:
Følgende INSERT
sætning indsætter en ny række i shippers
tabellen:
1
2
|
INDSÆT I afsendere (selskabsnavn, telefon)
VÆRDIER (“Alliance afsendere”, “1-800-222-0451”);
|
To konstanter, "Alliance Shippers"
og "1-800-222-0451"
er specificeret i VALUES
-sætningen. Databasemotoren indsatte dem i henholdsvis companyname
og phone
-kolonnerne.
Efter udførelsen af erklæringen blev databaseserveren returnerer en besked for at angive antallet af berørte rækker. I dette tilfælde får vi beskeden “1 række berørt” informeret om, at en ny række er indsat med succes.
Bemærk, at vi ikke specificerede shipperID
kolonne i kolonnelisten, fordi shipperID
kolonnen er en AUTO INCREMENT
kolonne, databasemotoren genererer automatisk den næste sekvens for den, hver gang en ny række indsættes i tabellen.
For at hjælpe dig med at skrive mindre kode, giver SQL en kortere form af INSERT
udsagn som følger:
1
2
|
INSERT INTO table
VALUES (value1, value2, …)
|
I denne form skal værdilisten have samme rækkefølge som kolonnelisten i tabellen. Hvis du bruger denne form for udsagn, skal du angive værdier for alle kolonner undtagen AUTO INCREMENT
kolonnen.
Det er god praksis at bruge kolonnenavnene i INSERT
udsagn for at gøre koden lettere at vedligeholde.
Følgende INSERT
udsagn har samme effekt som den ovenfor:
1
2
|
INSERT INTO shippers
VALUES (” Alliance Shippers “,” 1-800-222-0451 “);
|
SQL INSERT-sætning – indsæt flere rækker i en tabel
INSERT
sætningen giver dig også mulighed for at indsætte flere rækker i en tabel ved hjælp af en enkelt sætning som følger:
1
2
3
4
|
INDSÆT I tabelnavn (kolonne1, kolonne2…)
VÆRDIER (værdi1, værdi2,…),
(værdi1, værdi2,…) ,
…
|
I dette form, skal du angive flere lister med værdier, hver liste er adskilt med et komma.
Følgende INSERT
sætning indsætter to rækker i shippers
-tabellen:
1
2
3
|
INDSÆT I afsendere (firmanavn, telefon)
VÆRDIER (“UPS”, “1-800-782-7892”),
(“DHL”, “1-800-225-5345”)
|
SQL INSERT-sætning – kopier tabeldata
I stedet for at angive en liste over værdier kan du bruge en SELECT-sætning til at vælge værdier fra en anden tabel og levere dem til INSERT
udmelding. Dette giver dig mulighed for at kopiere data fra en tabel til en anden tabel.
Følgende udsagn illustrerer, hvordan man kopierer data fra another_table
til table
:
1
2
3
4
5
6
7
|
INDSÆT I tabel (kolonne1, kolonne2, …)
VÆLG
kolonne1, kolonne2, …
FRA
en anden_tabel
HVOR
-tilstand
|
Listen over kolonner i SELECT
-sætningen skal svare til listen over kolonner i INSERT INTO
klausul. Hvis du kun vil kopiere delvise data, skal du angive en betingelse i WHERE-klausulen.
Antag at du har en midlertidig tabel med navnet shippers_tmp
, der har den samme struktur som shippers
-tabellen. For at kopiere data fra shippers
-tabellen til shippers_tmp
-tabellen bruger du følgende udsagn:
1
2
3
4
5
|
INDSÆT I shippers_tmp (afsender-id, navn, telefon)
VÆLG
afsender-id, firmanavn, telefon
FRA
afsendere
|
I denne vejledning har du lært, hvordan du bruger INSERT
udsagnet til at indsætte en eller flere rækker i en tabel. Derudover lærte du også, hvordan man kopierer data fra en tabel til en anden tabel ved hjælp af INSERT SELECT INTO
udsagn.
- Var denne tutorial nyttigt?
- JaNej