Set-top-boxy
Parfémy
Krása
Produkty pro zdraví
Hodinky
Elektro
Šperky
Nábytek
Nářadí a zahrada
Outdoor
Počítače a notebooky
SQL příkaz INSERT přidá do tabulky relační databáze nový záznam.
Obsah |
Základní forma příkazu INSERT vypadá takto:
INSERT INTO <tabulka> [(<sloupec>[,...n])] VALUES (<hodnota>[,...n]) INSERT INTO <tabulka> [(<sloupec>[,...n])] <SELECT prikaz>
kde:
Seznam sloupců v závorkách může být vynechán; v tom případě se předpokládá seznam všech sloupců tabulky. Počet sloupců a hodnot musí být stejný. U sloupců vynechaných v daném seznamu se použije implicitní hodnota. Tu obsahuje definice dané tabulky.
Hodnoty zadané při INSERT dotazu musí splňovat všechny podmínky pro sloupce (např. primární klíč, podmínky CHECK a NOT NULL). Pokud nejsou splněny nebo nastane syntaktická chyba, záznam se do tabulky nevloží a databázový stroj (záleží na jeho typu) pošle chybový kód a hlášku.
Obsah tabulky telefonni_seznam před vložením nového záznamu
| jmeno | cislo | ulice | mesto |
|---|---|---|---|
| Jan Novák | 257125474 | Wikipedistická 28 | Pastoriovice |
| Jana Nováková | 574125474 | Luční 6 | Praha |
INSERT INTO telefonni_seznam (jmeno, cislo) VALUES ('John Doe', '555-1212');
Obsah tabulky telefonni_seznam po vložení nového záznamu
| jmeno | cislo | ulice | mesto |
|---|---|---|---|
| Jan Novák | 257125474 | Wikipedistická 28 | Pastoriovice |
| Jana Nováková | 574125474 | Luční 6 | Praha |
| John Doe | 555-1212 | NULL | NULL |
Pokud jsou zadány hodnoty všech sloupečků, můžeme použít zkrácenou verzi:
INSERT INTO ''tabulka'' VALUES (''hodnota1'', [''hodnota2, ...''])
INSERT INTO telefonni_seznam VALUES ('John Doe', '555-1212', 'Pařížská 6','Aš');
| jmeno | cislo | ulice | mesto |
|---|---|---|---|
| Jan Novák | 257125474 | Wikipedistická 28 | Pastoriovice |
| Jana Nováková | 574125474 | Luční 6 | Praha |
| John Doe | 555-1212 | Pařížská 6 | Aš |
Některé databáze povolují vložení více záznamů za sebou. V takovém případě se hodnoty pro druhý, třetí… další záznam vloží za ty první a oddělí čárkou.
INSERT INTO telefonni_seznam (jmeno, cislo) VALUES ('John Doe', '555-1212'), ('Leona Lewis', '555-112777'), ('Joe King', '555-1213');
…ON DUPLICATE KEYON DUPLICATE KEY je část syntaktické konstrukce, která může následovat za příkazem INSERT. V takovém případě umožňuje zareagovat na případ, kdy záznam (dané hodnoty primárního klíče) v tabulce již existuje. Pokud je za ON DUPLICATE KEY např. příkaz pro úpravu tohoto existujícího záznamu (UPDATE), lze tímto složeným příkazem substituovat dva SQL příkazy.
INSERT INTO hledane_vyrazy(id,vyraz,pocet_hledani) VALUES(178,"Britney Spears",1) ON DUPLICATE KEY UPDATE hledane_vyrazy SET pocet_hledani=pocet_hledani+1 WHERE id=178;
Alternativou k tomu by byly buď dva SQL příkazy nebo zapojení správy chyb, které ne každý databázový stroj podporuje. Konstrukce ON DUPLICATE KEY je naproti tomu součástí standardu SQL-99.
REPLACE INTONěkteré databáze (MySQL, ProgreSQL, …) mají SQL příkaz, který kombinuje příkazy INSERT a UPDATE – tedy: pokud záznam neexistuje (což databázový stroj testuje podle primárního klíče), vloží jej ve stylu INSERT INTO…, pokud existuje, pak jej smaže a následně vloží.
REPLACE INTO není zahrnuto ve standardech SQL-92 nebo SQL-99, je na něj nahlíženo jako na „bonus“, s kterým se při případné migraci na jinou databázi nemusí nutně počítat.
Většina relačních databází u definice tabulkového pole umožňuje stanovit výchozí (implicitní, defaultní) hodnotu. Pokud při vkládání dané políčko nespecifikujeme, vloží se do něj automaticky tato implicitní hodnota. Stejný efekt bude mít, pokud jako hodnotu použijeme klíčové slovo DEFAULT, které výchozí hodnotu pro daný sloupec reprezentuje.
Relační databáze taktéž povolují vytvoření primárního indexu (primárního klíče) tabulky, jehož hodnota je určována nezávisle na explicitně vložené hodnotě (např. v MS Access, MSSQL se jedná o speciální typ automatické číslo a při vložení nového záznamu se toto pole musí vynechat, v MySQL má pole příznak AUTO_INCREMENT a při vložení se místo něj může specifikovat např. prázdný řetězec nebo DEFAULT).
Spolu s tabulkami mohou být vytvořeny její tzv. unikátní indexy – de facto mechanismus, který vyloučí, aby pro určité pole v tabulce existovaly duplicitní hodnoty (tím, že v případě pokusu o vložení takového záznamu databázový stroj ohlásí chybu).
Některé databáze jako Oracle, MySQL, PostgreSQL definují speciální hodnotu LAST_INSERT_ID, která reprezentuje hodnotu primárního klíče (nejčastěji nazývaného ID – odtud název) naposledy vloženého záznamu. Pokud je třeba nově vytvořený záznam vzápětí upravit (nebo provést jiné změny týkající se tohoto záznamu), lze tuto hodnotu použít. LAST_INSERT_ID není zahrnuta ve standardu SQL'92.
| SQL | |
|---|---|
| Příkazy jazyka SQL: |
SELECT • INSERT • UPDATE • DELETE • CREATE • DROP • ALTER • SHOW • GRANT • REVOKE • START TRANSACTION • COMMIT • ROLLBACK • EXPLAIN • MERGE • TRUNCATE • LOAD DATA |
| Klíčová slova: |
JOIN • UNION • INTERSECT • GROUP BY • ORDER BY • LIMIT • HAVING • WITH ROLLUP |
| Ostatní pojmy: |
Systém řízení báze dat • Tabulka • Index • Poddotaz • Uložená procedura • Uživatelsky definovaná funkce • Transakce • Trigger • Pohled • Agregační funkce • Referenční integrita |