SQL INSERT – Návod -přidat řádky do tabulky, nejčasnější chyby

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 – 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

Syntaxe klauzule INSERT v T-SQL je relativně jednoduchá, ale je nutné dodržet několik klíčových pravidel. Zde je základní struktura klauzule:

(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:

a) 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

b) 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

5/5 - (1 vote)
Rubrika: Operace s tabulkou SQL příkazy

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

Leave a Reply

Your email address will not be published. Required fields are marked *