Jak vložit více záznamů v SQL

SQL, neboli Structured Query Language, je robustní nástroj pro správu databází. Umožňuje nám provádět operace jako vytváření, čtení, úpravu a mazání dat. Vložení více datových položek najednou je běžnou a užitečnou akcí, kterou lze provést pomocí příkazu INSERT.

Použití INSERT pro vložení více záznamů

Základní struktura pro vkládání více dat najednou za pomocí INSERT vypadá následovně:


INSERT INTO nazev_tabulky (sloupec1, sloupec2, ...)
VALUES (hodnota1, hodnota2, ...),
(hodnota3, hodnota4, ...),
...;

V tomto kódu:

  • nazev_tabulky označuje jméno tabulky, do které přidáváme nová data.
  • sloupec1, sloupec2 a další jsou jména sloupců, do kterých se data ukládají.
  • hodnota1, hodnota2 a další jsou konkrétní hodnoty pro jednotlivé sloupce.
  • Závorky (...) seskupují sloupce a hodnoty pro každý jednotlivý záznam.
  • Čárkou oddělené sady (, ...) definují všechny záznamy, které se mají vložit.

Příklad vložení dat do tabulky

Mějme tabulku studenti s následující strukturou:


CREATE TABLE studenti (
id INT NOT NULL AUTO_INCREMENT,
jmeno VARCHAR(255) NOT NULL,
vek INT NOT NULL,
PRIMARY KEY (id)
);

Chceme-li přidat několik studentů, použijeme příkaz:


INSERT INTO studenti (jmeno, vek)
VALUES ('Jan Novák', 21),
('Eva Malá', 22),
('Petr Svoboda', 23);

Tento příkaz vloží do tabulky studenti tři nové záznamy. Každý záznam obsahuje jméno a věk studenta. První student se jmenuje Jan Novák a je mu 21 let, druhý Eva Malá (22 let) a třetí Petr Svoboda (23 let).

Další způsoby vkládání více záznamů

Kromě základního příkazu INSERT existují i další metody pro přidávání dat do databáze.

INSERT … SELECT

Příkaz INSERT ... SELECT slouží k přesunu dat z jedné tabulky do jiné. Jeho syntaxe je následující:


INSERT INTO cilova_tabulka (sloupec1, sloupec2, ...)
SELECT sloupec1, sloupec2, ...
FROM zdrojova_tabulka
WHERE podminka;

Kde:

  • cilova_tabulka je název tabulky, kam se data vkládají.
  • sloupec1, sloupec2, atd. jsou jména sloupců, do kterých se data ukládají.
  • zdrojova_tabulka je název tabulky, z které se data vybírají.
  • podminka je volitelná podmínka, která specifikuje, která data se mají vybrat.

INSERT … VALUES SELECT

Příkaz INSERT ... VALUES SELECT kombinuje vlastnosti příkazů INSERT a VALUES SELECT. Vypadá takto:


INSERT INTO cilova_tabulka (sloupec1, sloupec2, ...)
VALUES (SELECT sloupec1, sloupec2, ... FROM zdrojova_tabulka);

V tomto případě:

  • cilova_tabulka je tabulka, do které se vkládají záznamy.
  • sloupec1, sloupec2, atd. jsou názvy sloupců, do kterých se data vkládají.
  • zdrojova_tabulka je tabulka, ze které se data získávají.

Závěr

Vkládání většího počtu záznamů do databáze SQL je klíčová dovednost, kterou lze efektivně realizovat pomocí příkazu INSERT. Existují různé strategie, včetně INSERT ... SELECT a INSERT ... VALUES SELECT, které umožňují flexibilní vkládání dat. Výběr vhodné metody závisí na konkrétních požadavcích.

Často Kladené Otázky (FAQ)

1. Jaké jsou dostupné způsoby vkládání více záznamů do SQL databáze?

Záznamy lze vkládat třemi hlavními způsoby:

  • Použitím příkazu INSERT.
  • Použitím příkazu INSERT … SELECT.
  • Použitím příkazu INSERT … VALUES SELECT.

2. Jaký je rozdíl mezi příkazy INSERT … SELECT a INSERT … VALUES SELECT?

Příkaz INSERT … SELECT kopíruje data z jiné tabulky do tabulky cílové. INSERT … VALUES SELECT vkládá data z jiné tabulky do cílové s použitím klíčového slova VALUES.

3. Je možné vložit záznamy do více tabulek v jednom příkazu INSERT?

Ano, lze použít více příkazů INSERT pro různé tabulky v rámci jednoho kódu, například:


INSERT INTO tabulka1 (sloupec1, sloupec2)
VALUES (hodnota1, hodnota2),
(hodnota3, hodnota4);

INSERT INTO tabulka2 (sloupec1, sloupec2)
VALUES (hodnota5, hodnota6),
(hodnota7, hodnota8);

4. Existuje nějaké omezení na počet záznamů, které lze vložit najednou?

Ne, neexistuje omezení počtu vkládaných záznamů příkazem INSERT.

5. Co když chci stávající záznamy aktualizovat, ne vkládat?

Pro úpravu záznamů se používá příkaz UPDATE. Jeho formát je:


UPDATE nazev_tabulky
SET sloupec1 = hodnota1, sloupec2 = hodnota2, ...
WHERE podminka;

6. Jaký je rozdíl mezi klíčovými slovy INSERT IGNORE a INSERT REPLACE?

INSERT IGNORE vloží záznam pouze tehdy, pokud v tabulce neexistuje duplikátní. INSERT REPLACE přepíše duplikátní záznam.

7. Mohu vložit data do tabulky, která má primární klíč?

Ano, můžete. Hodnota primárního klíče se automaticky vygeneruje, pokud je takto nastavená.

8. Jak vložit hodnotu NULL do sloupců?

Hodnotu NULL vložíte použitím klíčového slova NULL. Příklad:


INSERT INTO nazev_tabulky (sloupec1, sloupec2)
VALUES (hodnota1, NULL);