SQLShack

i föregående artikel har vi skapat två tabeller, och nu är vi redo att använda kommandot SQL INSERT INTO TABLE och fylla i dessa tabeller med data. För att göra det förbereder vi uttalanden i Excel och klistrar sedan in dessa uttalanden i SQL Server och kör dem. Vi kontrollerar också innehållet i båda tabellerna före och efter dessa kommandon med select-satsen. Så, låt oss börja.

infoga i TABELLUTTALANDE

det är ingen mening att skapa databasstrukturer och inte ha några data i databasen. INSERT INTO TABLE-satsen är den vi använder för att lösa detta problem. Det är en av de fyra viktiga SQL DML (data Manipulation Language) uttalanden välj … från, Infoga i tabellen, uppdatera … SET, och ta bort från… den fullständiga syntaxen är ganska komplex eftersom insatsen i kan också vara en mycket komplex uttalande. Ta en titt på T-SQL-insatsen i tabellens fullständiga syntax här.

i den här artikeln använder vi förenklad, men också den vanligaste syntaxen:

infoga i tabellnamn (column_list) värden (column_values);

i en sådan INSERT INTO-sats måste du definiera tabellnamnet där du infogar data i, lista alla kolumner (kanske du använder dem alla, men kanske bara några av dem) och lista sedan alla värden. Observera att kolumnvärden ska matcha definitionen av kolumntyper (t.ex. kan du inte infoga ett textvärde i den numeriska kolumnen/attributet).

om du infogar alla värden i tabellen behöver du inte lista alla kolumner efter tabellnamnet och du kan använda ännu mer förenklad syntax:

infoga i tabellnamnvärden (column_values);

jag föredrar personligen att lista alla kolumnnamn, eftersom det här tillvägagångssättet skulle fungera även om vi lägger till nya kolumner i den befintliga tabellen.

  • OBS: INSERT INTO TABLE-satsen kan skrivas på ett sådant sätt att vi infogar flera rader med 1-sats eller till och med kombinerat med SELECT-satsen.

den förenklade syntaxen för ett sådant fall där infoga och välj satser kombineras ges nedan:

infoga i destination_table (column_list, …)
välj column_list
från source_table
där villkor;

infoga i TABELLEXEMPEL

innan vi gör något, låt oss kolla vad som lagras i våra tabeller. Detta är den modell vi har skapat i föregående artikel. Du kan se att vi har en tabell där vi lagrar data relaterade till länder och en annan för data relaterade till städer. De är också relaterade till varandra, men vi kommer att prata om det i följande artikel:

infoga i tabell-datamodell

infoga i tabell-datamodell

för att kontrollera innehållet i dessa två tabeller använder vi två enkla SELECT-uttalanden:

1
2

välj * från land;
välj * från stad;

medan SELECT inte är ämnet för den här artikeln, bör det nämnas att dess grundläggande syntax är:

välj 1 eller fler attribut från tabellen;

stjärnan (*) efter SELECT representerar att vi vill visa värdena för alla attribut/kolumner från den tabellen i frågeresultatet.

som förväntat finns det inget i dessa två tabeller, och SQL Server returnerar resultatet, som visas på bilden nedan. Satser returnerar namnen på kolumnerna från tabellerna vi använde i SELECT-frågan, men det finns inget under dessa kolumnnamn. Du kan titta på detta som ett tomt Excel-ark med definierade kolumnnamn (rubriker). Du vet vilken typ av data som ska finnas där, men det finns ingenting:

nu måste vi ändra på det.

först fyller vi landstabellen med följande insats i TABELLSATSER:

1
2
3
4
5

infoga i land (country_name, country_name_eng, country_code) värden (’Deutschland’, ’Germany’, ’DEU’);
infoga i land (country_name, country_name_eng, country_code) värden (’Srbija’, ’Serbien’, ’SRB’);
infoga i land (country_name, country_name_eng, country_code) värden (’Hrvatska’, ’Kroatien’, ’HRV’);
infoga i land (country_name, country_name_eng, country_code) värden (’United anges of America’, ’United anges of America’, ’USA’);
infoga i land (country_name, country_name_eng, country_code) värden (’Polska’, ’Polen’, ’POL’);

Data för fem länder infördes framgångsrikt. Resultatet visas på bilden nedan. Eftersom vi hade 5 infoga i TABELLUTTALANDEN har vi 1″ (1 rad påverkad) ”meddelande för var och en av dessa fem kommandon i avsnittet” Meddelanden:

infoga i tabell-land

Observera att alla värden (efter värden) beställdes på samma sätt som vi listade kolumner (efter insats i land). Alla tre värdena är texter. Frågan skulle fungera även om vi inte har beställt dem på rätt sätt eftersom alla har samma datatyp (text), men data skulle lagras i fel kolumner. I så fall skulle vi ha ett semantiskt fel.

nästa sak vi behöver göra är att fylla stadsbordet. Vi gör det med följande uttalanden:

1
2
3
4
5
6

infoga i stad (city_name, lat, long, country_id) värden (’Berlin’, 52.520008, 13.404954, 1);
infoga i city (city_name, lat, long, country_id) värden (’Belgrad’, 44.787197, 20.457273, 2);
infoga i stad (city_name, lat, long, country_id) värden (’Zagreb’, 45.815399, 15.966568, 3);
infoga i city (city_name, lat, long, country_id) värden (’New York’, 40.73061, -73.935242, 4);
infoga i city (city_name, lat, long, country_id) värden (’Los Angeles’, 34.052235, -118.243683, 4);
infoga i city (city_name, lat, long, country_id) värden (’Warszawa’, 52.237049, 21.017532, 5);

efter att ha utfört dessa uttalanden var detta resultatet. Som förväntat tillsattes 6 rader. Och än en gång har vi 1 Meddelande för varje insats i avsnittet Meddelanden:

Stad

i det här fallet skulle vi ha problem om vi inte har listat värden på samma sätt, vi listade kolumner eftersom deras datatyper inte är desamma (de är – i ordning: text, decimaltal, decimaltal, heltal). Denna typ av fel kallas syntaxfel och DBMS själv skulle förhindra att frågan körs alls.

välj-Kontrollera vad som infogades

nu ska vi återigen kontrollera vad som lagras i våra tabeller. Vi kommer att använda samma två SELECT uttalanden som vi har använt tidigare:

1
2

välj * från land;
välj * från stad;

resultatet visas på bilden nedan. Observera att efter att ha utfört frågor nu har vi resultat och meddelanden avsnitt under frågor:

välj uttalanden

vi kan dra slutsatsen att båda tabellerna i vår databas innehåller data och nu är vi redo att ”spela” med något sätt svalare än detta.

infoga i tabell med Excel

i många fall måste du köra flera SQL-satser baserat på den dataset som du har fått. Detta står inte bara för INSERT INTO TABLE-satsen utan också för UPDATE och DELETE-satser. Det är ingen mening att skriva dessa uttalanden manuellt, men du bör hellre gå med ett smartare tillvägagångssätt – förbereda formler (eller ett skript) som automatiserar den här delen. I sådana situationer föredrar jag att använda Excel och formler.

notera: Personligen, i samband med databaser, tycker jag att Excel är mycket användbart när jag behöver skapa flera uttalanden och när jag presenterar resultat och/eller skapar instrumentpaneler.

Låt oss ta en titt på dessa formler:

länder Excel

formeln som används för att infoga det första landet (Tyskland) är:

1
=”infoga i land (country_name, country_name_eng, country_code) värden (’”& B2 & ”’, ’” & C2 & ”’, ’” & D2 &”’);”

städer Excel

formeln som används för att infoga den första staden (Berlin) är:

1
=”infoga i city (city_name, lat, long, country_id) värden (’”& B2 & ”’, ” & C2 &”, ” & D2 &”, ” & E2 & ”);”

använd gärna dessa formler för att automatisera dina uppgifter. Vi använder ett liknande tillvägagångssätt senare när vi kör flera uppdaterings-och RADERINGSUTTALANDEN (och även när vi skapar SELECT-satser).

slutsats

i den här artikeln har vi täckt en av de fyra viktigaste SQL –satserna-infoga i TABELLUTTALANDE. Vi har använt den för att fylla i tabeller som skapats i föregående artikel. Detta var en förutsättning för att flytta till smartare stuff – liknande databasteori, och ännu viktigare, returnera resultat från vår databas.

i den kommande artikeln talar vi om primärnyckeln – vad det är och varför är det viktigt i databaserna.

innehållsförteckning

lär SQL: skapa databas & skapa TABELLOPERATIONER

lär SQL: infoga i tabell

lär SQL: primärnyckel

lär SQL: främmande nyckel

lär SQL: välj uttalande

lär SQL: inre gå vs vänster gå

lär SQL: SQL-skript

lär SQL: typer av relationer

lär SQL: Gå med i flera tabeller

lär SQL: aggregerade funktioner

lär SQL: hur man skriver en komplex SELECT Query

lär SQL: INFORMATION_SCHEMA databas

lär SQL: SQL datatyper

lär SQL: Set teori

lär SQL: användardefinierade funktioner

lär SQL: användardefinierade lagrade procedurer

lär SQL: SQL visningar

lär SQL: SQL triggers

lär SQL: öva SQL-frågor

lär dig SQL: SQL-Frågexempel

lär SQL: skapa en rapport manuellt med SQL-frågor

lär SQL: SQL Server datum-och tidsfunktioner

lär SQL: skapa SQL Server-rapporter med datum-och tidsfunktioner

lär SQL: SQL Server pivottabeller

lär SQL: SQL Server export till Excel

lär SQL: Intro till SQL Server loops

lär SQL: SQL Server markörer

lär SQL: SQL bästa praxis för att ta bort och uppdatera data

lär SQL: namnkonventioner

lär dig SQL: SQL – relaterade jobb

lär SQL: icke-Equi går i SQL Server

lär SQL: SQL injektion

lär SQL: dynamisk SQL

  • författare
  • Senaste inlägg
Emil Drkusic
Emil är en databasproffs med 10+ års erfarenhet av allt som rör databaser. Under åren arbetade han inom IT-och finansbranschen och arbetar nu som frilansare.
hans tidigare och nuvarande engagemang varierar från databasdesign och kodning till undervisning, konsultation och skrivning om databaser. Också att inte glömma, BI, skapa algoritmer, Schack, Filateli, 2 hundar, 2 katter, 1 fru, 1 baby…
du hittar honom på LinkedIn
Visa alla inlägg av Emil Drkusic

Emil Drkusic
Senaste inlägg av Emil Drkusic (se alla)
  • lär dig SQL: dynamisk SQL-3 mars 2021
  • lär dig SQL: SQL-injektion-2 November 2020
  • lär dig SQL: Icke-Equi går med i SQL Server-September 29, 2020

Lämna ett svar

Din e-postadress kommer inte publiceras.

More: