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:
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:
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:
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:
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:
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 &”’);”
|
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
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
- 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