Denne artikel indeholder grundlæggende SQL INSERT
sætninger, som begyndere kan bruge til at indsætte data i deres databasetabeller.
Grundlæggende syntaks
Den grundlæggende syntaks for at indsætte data i SQL ser sådan ud:
INSERT INTO TableName (Column1, Column2, Column3, ...)
VALUES (Value1, Value2, Value3, ...);
Hvor:
TableName
er navnet på den tabel, du vil indsætte data iColumn1
osv. er navnene på de kolonner, du vil indsætte data iValue1
osv. er de værdier, du indsætter i disse kolonner. Rækkefølgen af disse værdier skal matche rækkefølgen, som du angav kolonnerne (dvs.Value1
går ind iColumn1
osv.).
Du kan udelade kolonnenavnene, hvis du indsætter værdier i alle kolonner. I så fald kan du bruge følgende syntaks:
INSERT INTO TableName
VALUES (Value1, Value2, Value3, ...);
Bemærk, at nogle DBMS'er bruger en mere kompleks syntaks end dette (dvs. de tilbyder flere muligheder), men dette er generelt den grundlæggende syntaks, der kræves for at indsætte data i en tabel.
Indsæt i alle kolonner
Her er et grundlæggende eksempel, der indsætter data i alle kolonner i tabellen:
INSERT INTO PetTypes
VALUES( 1, 'Bird' );
I dette tilfælde er der to kolonner i PetTypes
tabel, og vi indsætter værdier i begge kolonner, derfor behøver vi ikke at angive kolonnenavnene.
Ovenstående udsagn er det samme som at gøre dette:
INSERT INTO PetTypes( PetTypeId, PetType )
VALUES( 1, 'Bird' );
Vi kan tjekke vores data ved at køre en SELECT
erklæring.
SELECT * FROM PetTypes;
Resultat:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | +-------------+-----------+
Indsæt i nogle kolonner
Her er et grundlæggende eksempel, der indsætter data i nogle af kolonnerne i tabellen:
INSERT INTO Users( UserId, FirstName, LastName )
VALUES( 1, 'Lansell', 'Letterman' );
Denne tabel har faktisk fire kolonner, men vi indsætter kun data i tre af disse kolonner. Det kan vi se, når vi kører en SELECT
sætning mod tabellen efter indsættelse af data.
SELECT * FROM Users;
Resultat:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | +----------+-------------+------------+-----------------------------+
Sådan indsætter du værdier i den forkerte rækkefølge
Kolonnelistemetoden giver dig mulighed for at indsætte data, der ikke er i samme rækkefølge:
INSERT INTO Users( LastName, FirstName, UserId )
VALUES( 'Pitt', 'Bart', 2 );
I dette eksempel har jeg omarrangeret rækkefølgen af kolonnerne og deres respektive værdier. Heldigvis giver kolonnelisten DBMS vejledning om, hvor hver værdi skal indsættes.
Så nu, hvis vi vælger vores data, vil vi se, at de er blevet indsat i de korrekte kolonner.
SELECT * FROM Users;
Resultat:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | | 2 | Bart | Pitt | 2020-11-21 05:30:07.4456867 | +----------+-------------+------------+-----------------------------+
Indsæt resultatet af en forespørgsel
Det er også muligt at indsætte resultatsættet af en forespørgsel i en tabel. Der er et par tilgange, du kan tage med dette.
- Brug koden
INSERT INTO... SELECT
udmelding. I dette tilfælde skal du først oprette tabellen, før du indsætter et forespørgselsresultatsæt i den. - Brug CREATE TABLE … SOM SELECT-sætning. Denne metode opretter automatisk en ny tabel baseret på resultatsættet af forespørgslen, og indsætter derefter disse resultater i tabellen. Selvom denne metode er i overensstemmelse med SQL-standarden, understøttes den ikke af alle DBMS'er.
- Brug
SELECT INTO
udmelding. Dette svarer til den tidligere mulighed. Den opretter automatisk en ny tabel baseret på resultatsættet af forespørgslen, og indsætter derefter disse resultater i tabellen. Hvis den forrige metode (CREATE TABLE ... AS SELECT
) ikke understøttes af dit DBMS, prøv denne metode.