SQL INSERT – Vkládáme řádky do tabulky databáze (3 způsoby) + Nejčasnější chyby

Poslední aktualizace:

Příkaz INSERT volíme v situaci, kdy potřebujeme vložit záznamy do tabulky. Vložení řádků můžeme udělat několika způsoby (podrobněji je popisuji dále) kdy:

  1. Vkládáme hodnoty, které fixně vyjmenujeme (INSERT INTO … VALUES(hodnota1, hodnota2, …))
  2. Vkládáme záznamy do tabulky pomocí skriptu (SELECT (tzn vybíráme hodnoty z tabulky) v kombinaci s INTO “cílová tabulka”). Tady se prakticky jedná o kombinaci založení tabulky, tedy CREATE TABLE a vložení záznamů definovaných v SELECT klauzuli. V tomto případě tedy cílová tabulka neexistuje
  3. Pokud cílová tabulka, do které chceme vkládat existuje, tak volíme variantu INSERT INTO Tabulka SELECT….

Všechny 3 situace jsou popsány níže

Syntaxe SQL INSERT

(1) Základní syntaxe v případě kdy potřebujeme vložit jednu nebo několik málo hodnot:

INSERT INTO dbo.Tabulka (sloupec 1, sloupec 2, sloupec 3,...sloupecN 
VALUES ('hodnota 1', 'hodnota 2', 'hodnota 3',...'hodnota N');

(2) Pokud chceme vytvořit tabulku a vložit do ní záznamy z jiné tabulky (nová tabulka ještě neexistuje):

SELECT (sloupec 1, sloupec 2, sloupec 3,...sloupecN)  
INTO dbo.Nova_Tabulka
FROM dbo.Tabulka;

Zajímavost: Tímto postupem bude tabulka založena bez objektů, které se vážou k původní tabulce – primárních klíčů, indexů, statistik, trigerů atd. Nová tabulka obsahuje pouze data a definice tabulky jako takové odpovídá původní tabulce.

(3) Vložení záznamů do tabulky jako výsledek dotazu:

INSERT INTO TABULKA (sloupec 1, sloupec 2, sloupec 3,...sloupecN)
SELECT (sloupec 1, sloupec 2, sloupec 3,...sloupecN)
FROM dbo.Tabulka;

Při vkládání záznamů do tabulky přes příkaz INSERT INTO musí platit že:

  • Počet a názvy sloupců tabulky do které vkládáme záznamy musí odpovídat zdrojovým záznamům, jinak výsledkem bude chyba: The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns viz obrázek

The select list for the INSERT statement contains fewer

  • Datové typy musí odpovídat, nelze například vkládat VARCHAR do sloupce s datovým typem INTEGER. Výsledkem bude pravděpodobně nějaká chyba konverze typu Conversion failed when converting the varchar value ‘1.1’ to data type int viz obrázek

Conversion failed when converting the varchar value

Více o tomto příkazu se dočtete v technické dokumentaci na webu Microsoft zde

 

Rate this article

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: Operace s tabulkou SQL příkazy Tags:

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.