ecosmak.ru

Čo je vložené do sql. Príkaz SQL INSERT INTO SELECT

Pomocou SQL môžete kopírovať informácie z jednej tabuľky do druhej.

Príkaz INSERT INTO SELECT skopíruje údaje z jednej tabuľky a vloží ich do existujúcej tabuľky.

SQL príkaz INSERT INTO SELECT,

Príkaz INSERT INTO SELECT vyberie údaje z jednej tabuľky a vloží ich do existujúcej tabuľky. Žiadne existujúce riadky v cieľovej tabuľke sa nezmenia.

SQL INSERT INTO SELECT, syntax

Môžeme skopírovať všetky stĺpce z jednej tabuľky do inej, existujúcej tabuľky:

VLOŽIŤ DO tabuľka2
VYBERTE * OD stôl 1;

Alebo môžeme skopírovať iba stĺpce, ktoré chceme, do inej existujúcej tabuľky:

VLOŽIŤ DO tabuľka2
(názov_stĺpcov)
VYBRAŤ column_name(s)
OD stôl 1;

Demo verzia databázy

V tomto návode použijeme dobre známu databázu Northwind.

Nižšie je uvedený výber z tabuľky „Zákazníci“:

ID používateľaMeno klientaKontaktná osobaAdresamestoPSČKrajina
1 Alfreds Futterkiste Mária Andersová Obere Str. 57 Berlín 12209 Nemecko
2 Ana Trujillo Emparedados a helados Ana Trujillo Avda. de la Constitucion 2222 Mexiko D.F. 05021 Mexiko
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Mexiko D.F. 05023 Mexiko

A výber z tabuľky "Dodávatelia":

SQL INSERT DO SELECT, Príklady

Kopírovanie iba niekoľkých stĺpcov z "Dodávatelia" do "Zákazníci":

Kopírovanie iba nemeckých dodávateľov do "Zákazníkov".

Tím pridá riadky do tabuľky alebo pohľad na hlavnú tabuľku.

Syntax príkazu SQL INSERT

Vložte syntax príkazu


Základné kľúčové slová a parametre príkazu INSERT
  • schému- identifikátor povolenia, zvyčajne sa zhoduje s menom nejakého používateľa
  • tabuľkový pohľad- názov tabuľky, do ktorej sa majú vkladať riadky; ak je zadané zobrazenie, riadky sa vložia do hlavnej tabuľky zobrazenia
  • poddotaz_1- poddotaz, ktorý server spracuje rovnakým spôsobom ako pohľad
  • stĺpec- stĺpec tabuľky alebo zobrazenia, do ktorého sa pre každý vkladaný riadok zadáva hodnota z frázy HODNOTY alebo poddotaz; ak je jeden zo stĺpcov tabuľky v tomto zozname vynechaný, hodnota stĺpca pre vložený riadok je predvolená hodnota stĺpca definovaná pri vytváraní tabuľky. Ak je zoznam stĺpcov úplne vynechaný, klauzula HODNOTY alebo dotaz musí určiť hodnoty pre všetky stĺpce v tabuľke
  • HODNOTY- definuje reťazec hodnôt, ktoré budú vložené do tabuľky alebo zobrazenia; význam musí byť definovaný vo vete HODNOTY pre každý stĺpec v zozname stĺpcov
  • poddotaz_2- poddotaz, ktorý vracia riadky vložené do tabuľky; výberový zoznam tohto poddotazu musí mať rovnaký počet stĺpcov ako zoznam stĺpcov príkazov

Vyhlásenie s frázou HODNOTY pridá do tabuľky jeden riadok. Tento riadok obsahuje hodnoty definované frázou HODNOTY.
Vyhlásenie s poddotaz namiesto frázy HODNOTY pridá všetky riadky vrátené poddotazom do tabuľky. Server spracováva poddotaz a vloží každý vrátený riadok do tabuľky. Ak poddotaz nevyberie žiadne riadky, server nevloží žiadne riadky do tabuľky.
Poddotaz môže pristupovať k akejkoľvek tabuľke alebo pohľadu, vrátane cieľovej tabuľky tvrdení . Server priraďuje hodnoty poliam v nových riadkoch na základe vnútornej pozície stĺpcov v tabuľke a poradia hodnôt fráz HODNOTY alebo vo výberovom zozname dotazov. Ak v zozname stĺpcov chýbajú nejaké stĺpce, server im priradí predvolené hodnoty definované pri vytváraní tabuľky. Ak má niektorý z týchto stĺpcov obmedzenie NOT NULL, server vráti chybu označujúcu, že obmedzenie bolo porušené a zruší príkaz INSERT.
Keď je zadaný príkaz INSERT, je povolený akýkoľvek spúšťač INSERT definovaný v tabuľke.

VLOŽIŤ DO Príklad 1

VLOŽIŤ DO dlh HODNOTY(50, "PRODUKTY", "SAN FRANCISCO");

VLOŽIŤ DO Zákazníci (mesto, cname, cnum) HODNOTY('Londýn', 'Hoffman', 2001);

VLOŽIŤ DO Príkladu 2
Nasledujúci príkaz skopíruje údaje zamestnancov spoločnosti, ktorých provízie presahujú 25% príjmu, do tabuľky bonusov:

VLOŽIŤ DO bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

VLOŽIŤ DO Príkladu 3
Ak potrebujete vložiť NULOVÝ-hodnota, musíte ju zadať ako normálnu hodnotu takto:

VLOŽIŤ DO Predajcovia VALUES (1001,'Peel',NULL,12);

VLOŽIŤ DO Príkladu 4
Príkaz možno použiť na načítanie hodnôt z jednej tabuľky a ich umiestnenie do inej pomocou dotazu. Na to stačí nahradiť vetu HODNOTY na príslušnú žiadosť:

VLOŽIŤ DO Londonstaff SELECT * FROM Predajcovia WHERE mesto = 'Londýn';

VLOŽENIE MySQL

Ak chcete vložiť nové riadky do databázy MySQL, použite príkaz INSERT, príklady príkazov sú uvedené nižšie:
VLOŽIŤ DO Príklad 1.
Vloženie nového riadku do tabuľky názov_tabulky.

VLOŽIŤ DO

VLOŽIŤ DO Príkladu 2.
Vloženie nového riadku do tabuľky názov_tabulky označujúce vloženie údajov do stĺpcov, ktoré potrebujeme.

VLOŽIŤ DO názov_tabuľky VALUES('1','165','0','názov');

V databáze MySQL Pomocou jedného príkazu je možné vložiť viacero nových riadkov.
VLOŽIŤ DO Príkladu 3.
Vloženie viacerých riadkov do tabuľky názov_tabulky.

VLOŽIŤ DO table_name (tbl_id, chislo, chislotwo, name) VALUES ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ','356','8','meno3');

Posledná aktualizácia: 13.07.2017

Ak chcete pridať údaje, použite príkaz INSERT, ktorý má nasledujúcu formálnu syntax:

INSERT názov_tabuľky [(zoznam_stĺpcov)] VALUES (hodnota1, hodnota2, ... hodnotaN)

Najprv príde výraz INSERT INTO, potom v zátvorkách môžete zadať zoznam stĺpcov oddelených čiarkami, do ktorých sa majú pridať údaje, a na konci, za slovom VALUES, sú hodnoty, ktoré sa majú pridať pre stĺpce, uvedené v zátvorkách.

Predpokladajme napríklad, že predtým bola vytvorená nasledujúca databáza:

CREATE DATABASE productsdb; GO USE productsdb; CREATE TABLE Products (Id INT IDENTITY PRIMAR KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Pridajme k nemu jeden riadok pomocou príkazu INSERT:

INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)

Po úspešnom spustení v SQL Server Management Studio by sa v poli správy mala objaviť správa "1 ovplyvnený riadok":

Stojí za zváženie, že hodnoty pre stĺpce v zátvorkách za kľúčovým slovom VALUES sa odovzdávajú v poradí, v akom sú deklarované. Napríklad vo vyššie uvedenom príkaze CREATE TABLE môžete vidieť, že prvý stĺpec je Id. Ale keďže je preň špecifikovaný atribút IDENTITY, hodnota tohto stĺpca sa generuje automaticky a možno ju vynechať. Druhý stĺpec predstavuje ProductName, takže prvá hodnota, reťazec "iPhone 7", bude odovzdaná tomuto stĺpcu. Druhá hodnota - reťazec "Apple" bude odovzdaný do tretieho stĺpca Výrobca a tak ďalej. To znamená, že hodnoty sa prenášajú do stĺpcov takto:

    Názov produktu: "iPhone 7"

    Výrobca: "Apple"

Pri zadávaní hodnôt môžete tiež určiť okamžité stĺpce, do ktorých sa hodnoty pridajú:

INSERT INTO Products (ProductName, Price, Manufacturer) VALUES ("iPhone 6S", 41000, "Apple")

Tu je uvedená hodnota len pre tri stĺpce. Okrem toho sa teraz hodnoty prenášajú v poradí stĺpcov:

    Názov produktu: "iPhone 6S"

    Výrobca: "Apple"

Pre nešpecifikované stĺpce (v tomto prípade ProductCount) sa pridá predvolená hodnota, ak je zadaný atribút DEFAULT, alebo hodnota NULL. Nešpecifikované stĺpce však musia mať hodnotu null alebo mať atribút DEFAULT.

Môžeme tiež pridať niekoľko riadkov naraz:

INSERT INTO Products VALUES ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

V tomto prípade sa do tabuľky pridajú tri riadky.

Pri pridávaní môžeme tiež určiť, že stĺpec by mal mať predvolenú hodnotu pomocou kľúčového slova DEFAULT alebo hodnotu NULL:

INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALUES ("Mi6", "Xiaomi", DEFAULT, 28000)

V tomto prípade sa použije predvolená hodnota pre stĺpec ProductCount (ak je nastavená, ak nie je, potom NULL).

Ak majú všetky stĺpce atribút DEFAULT, ktorý určuje predvolenú hodnotu, alebo ak majú hodnotu null, môžete vložiť predvolené hodnoty pre všetky stĺpce:

VLOŽIŤ DO PREDCHODNEJ HODNOTY produktov

Ale ak vezmeme tabuľku Products, tak takýto príkaz zlyhá s chybou, keďže viaceré polia nemajú atribút DEFAULT a zároveň nepovoľujú hodnotu NULL.

Ahojte všetci! Tento článok bude diskutovať o tom, ako môžete pridať údaje do tabuľky v Microsoft SQL Server, ak ste už aspoň trochu oboznámení s jazykom T-SQL, pravdepodobne ste si uvedomili, že teraz budeme hovoriť o príkaze INSERT, ako aj o tom, ako sa dá použiť na pridávanie údajov do tabuľky.

Začnime ako obvykle trochou teórie.

príkaz INSERT v T-SQL

VLOŽIŤ je inštrukcia T-SQL, ktorá je určená na pridávanie údajov do tabuľky, t.j. vytváranie nových záznamov. Túto inštrukciu je možné použiť na pridanie jedného riadku do tabuľky aj na hromadné vkladanie údajov. Príkaz INSERT vyžaduje povolenie na vloženie údajov ( VLOŽIŤ) do cieľovej tabuľky.

Existuje niekoľko spôsobov, ako použiť príkaz INSERT na časti údajov, ktoré je potrebné vložiť:

  • Výpis konkrétnych hodnôt na vloženie;
  • Zadanie množiny údajov ako dopytu SELECT;
  • Zadanie množiny údajov vo forme volania procedúry, ktorá vráti tabuľkové údaje.

Zjednodušená syntax

INSERT [tabuľka] ( zoznam stĺpcov...) HODNOTY ( zoznam hodnôt...) Alebo VYBERTE vzorová žiadosť Alebo VYKONAJTE postup

  • INSERT INTO je príkaz na pridanie údajov do tabuľky;
  • Tabuľka je názov cieľovej tabuľky, do ktorej chcete vložiť nové záznamy;
  • Zoznam stĺpcov je zoznam názvov stĺpcov tabuľky, do ktorých sa budú vkladať údaje, oddelených čiarkami;
  • VALUES je konštruktor hodnôt tabuľky, pomocou ktorého určujeme hodnoty, ktoré vložíme do tabuľky;
  • Zoznam hodnôt sú hodnoty, ktoré budú vložené, oddelené čiarkami. Sú uvedené v poradí, v akom sa stĺpce zobrazujú v zozname stĺpcov;
  • SELECT je dotaz na výber údajov na vloženie do tabuľky. Množina výsledkov, ktorú dotaz vráti, sa musí zhodovať so zoznamom stĺpcov;
  • EXECUTE je volanie procedúry na získanie údajov na vloženie do tabuľky. Sada výsledkov, ktorú vráti uložená procedúra, sa musí zhodovať so zoznamom stĺpcov.

Zhruba takto vyzerá zjednodušená syntax príkazu INSERT INTO, vo väčšine prípadov takto budete pridávať nové záznamy do tabuliek.

Zoznam stĺpcov, do ktorých budete údaje vkladať, nie je potrebné vypisovať, v takom prípade sa ich poradie určí na základe skutočného poradia stĺpcov v tabuľke. Toto poradie si musíte zapamätať pri zadávaní hodnôt, ktoré chcete vložiť, alebo pri písaní dotazu na výber. Osobne vám stále odporúčam uviesť zoznam stĺpcov, do ktorých plánujete pridávať údaje.

Mali by ste tiež pamätať na to, že zoznam stĺpcov a zoznam hodnôt musí obsahovať takzvané povinné stĺpce, to sú tie, ktoré nemôžu obsahovať hodnotu NULL. Ak ich nešpecifikujete a stĺpec nemá predvolenú hodnotu, dôjde k chybe.

Chcel by som tiež poznamenať, že typ údajov hodnôt, ktoré vložíte, sa musí zhodovať s typom údajov stĺpca, do ktorého sa táto hodnota vloží, alebo aspoň podporovať implicitnú konverziu. Odporúčam vám však kontrolovať typ údajov ( formát) hodnoty v zozname hodnôt aj v dotaze SELECT.

Dosť bolo teórie, prejdime k praxi.

Počiatočné údaje

Aby sme mohli do tabuľky pridať dáta, potrebujeme tabuľku samotnú, tak si ju vytvorte a skúsme do nej pridať záznamy.

Poznámka! Všetky príklady budú spustené v Microsoft SQL Server 2016 Express.

CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NOT NULL)

Naša testovacia tabuľka bude obsahovať zoznam produktov s cenami.

Aj v príkladoch použijeme procedúru, ktorá vráti hodnotu tabuľky na pridanie údajov do tabuľky, takže si ju vytvorte tiež.

VYTVORIŤ POSTUP Testovací postup AKO ZAČIATOK VYBERTE názov produktu, cena OD KONCA testovacej tabuľky

Napríklad vráti údaje z novovytvorenej tabuľky TestTable.

Poznámka!

Ako viete, čítanie tohto materiálu predpokladá určitú znalosť jazyka T-SQL, takže ak vám niečo nie je jasné, odporúčam vám, aby ste sa oboznámili s nasledujúcimi materiálmi:

Príklad 1 – Pridanie nového záznamu do tabuľky pomocou konštruktora hodnôt tabuľky

Najprv skúsme pridať jeden záznam a hneď sa pozrieme na výsledok, t.j. Napíšeme žiadosť o vzorku.

INSERT INTO TestTable(ProductName, Price) VALUES ("Computer", 100) GO SELECT * FROM TestTable

Vidíte, že za názvom tabuľky sme uviedli názvy stĺpcov, do ktorých budeme pridávať údaje, oddelené čiarkami, potom sme označili kľúčové slovo HODNOTY a v zátvorkách sme tiež v rovnakom poradí, oddelené čiarkami, napísali hodnoty, ktoré chceme vložiť.

Po príkaze INSERT som napísal príkaz SELECT a oddelil ich príkazom GO.

Teraz si predstavme, že potrebujeme pridať pár riadkov. K tomu napíšeme nasledujúcu žiadosť.

INSERT INTO TestTable (Názov produktu, Cena) HODNOTY ("Počítač", 100), ("Klávesnica", 20), ("Monitor", 50) VYBRAŤ * Z testovacej tabuľky


Príklad 2 – Pridanie nových riadkov do tabuľky pomocou SELECT dotazu

Veľmi často vzniká potreba pridať do tabuľky množstvo údajov napríklad na základe výberového dotazu, t.j. VYBRAŤ. Aby sme to urobili, namiesto VALUES musíme zadať požiadavku.

INSERT INTO TestTable(ProductName, Price) SELECT ProductName, Price FROM TestTable WHERE Id >


V tomto príklade sme napísali SELECT dotaz, ktorý vracia údaje z tabuľky TestTable, no nie všetky, ale iba tie s ID väčším ako 2. A výsledok bol vložený do rovnakej tabuľky TestTable.

Ako príklad toho, ako môžete pridať záznamy do tabuľky bez zadania zoznamu stĺpcov, napíšme ďalší dotaz na vkladanie údajov, ktorý bude robiť presne to isté ako dotaz uvedený vyššie, len nebude vypisovať stĺpce na vloženie.

INSERT INTO TestTable SELECT ProductName, Price FROM TestTable WHERE Id > 2 GO SELECT * FROM TestTable


V tomto prípade sme si istí, že v tabuľke TestTable je prvý stĺpec ProductName a druhý je Cena, takže si to môžeme dovoliť napísať. V praxi je však opäť lepšie zadať zoznam stĺpcov.

Ak ste si všimli, vo všetkých príkladoch som neuviedol stĺpec Id, ale máme ho, žiadne chyby sa nevyskytli, keďže tento stĺpec má vlastnosť IDENTITY, automaticky generuje identifikátory, takže vkladanie údajov do takéhoto stĺpca sa jednoducho nedá.

Príklad 3 - Pridanie nových záznamov do tabuľky pomocou uloženej procedúry

Teraz do tabuľky vložme údaje, ktoré nám uložená procedúra vráti. Význam je tu rovnaký, namiesto VALUES a namiesto požiadavky uvádzame volanie procedúry. Ako však viete, poradie a počet stĺpcov vrátených procedúrou sa musia striktne zhodovať so zoznamom stĺpcov, ktoré sa majú vložiť ( aj keď nie je uvedený zoznam stĺpcov).

INSERT INTO TestTable (ProductName, Price) EXEC TestProcedure GO SELECT * FROM TestTable


Dúfam, že vám tento materiál pomohol pochopiť pokyny. VLOŽIŤ DO, a to je zatiaľ všetko, čo mám!

sql dotaz INSERT INTO má zmysel, keď bola vytvorená tabuľka databázy. To znamená, že tabuľka existuje, má názov, vytvorené riadky a stĺpce. tabuľku vytvorí operátor: , tabuľku upraví operátor .

sql dotaz INSERT INTO - syntax dotazu

sql dotaz INSERT INTO má nasledujúcu syntax:

INSERT INTO názov_tabuľky (v zátvorke prípadne vložte zoznam stĺpcov, do ktorých chcete vložiť údaje) VALUES vložené údaje1, vložené údaje2, vložené údaje3.

Medzi INSERT a INTRO môžete vložiť možnosť IGNORE. Nevyžaduje sa. Potrebné na ochranu primárnych kľúčov pri úprave tabuľky. V opačnom prípade, ak pri editácii dôjde k duplicite primárnych kľúčov, tak pri vložení možnosti IGNORE zostane v editovanej tabuľke prvý riadok s primárnym kľúčom Ostatné primárne kľúče budú vymazané. Štandardne túto možnosť vynechávame.

K dispozícii sú voliteľné možnosti LOW_PRIORITY a DELAYED. Určujú priority pridávania informácií do databázy. Prvá špecifikuje čakanie na uvoľnenie databázy, druhá znamená ukladanie informácií do vyrovnávacej pamäte.

Riadok v dotaze: INSERT s frázou VALUES vám umožní pridať jeden riadok do databázovej tabuľky. Klauzula VALUES obsahuje hodnoty týchto údajov.

Namiesto frázy VALUES možno zadať poddotazy. INSERT s poddotazom pridá do tabuľky riadky vrátené poddotazom. Databázový server spracuje poddotaz a vloží všetky vrátené riadky do tabuľky. Server nevkladá riadky, pokiaľ ich nevyberie poddotaz.

  • subdotaz_1 - subdotaz, ktorý server spracuje rovnakým spôsobom ako zobrazenie
  • subquery_2 je poddotaz, ktorý vracia riadky vložené do tabuľky. Zoznam tohto poddotazu musí mať rovnaký počet stĺpcov ako zoznam stĺpcov INSERT.

Poddotazy sa v databáze MySQL prakticky nepoužívajú.

Príklady SQL dotazu INSERT INTO v databáze MySQL

Nové riadky vložíme do databázy MySQL pomocou príkazu INSERT INTRO.

Prvý príklad.

Vložte nové riadky do tabuľky názov_tabulky.

INSERT INTO table_name VALUES ('2′,'145′,'1′,'name');

To znamená, že do stĺpcov tabuľky table_name chceme vložiť hodnoty 2,145,1,name. Keďže stĺpce nie sú špecifikované, hodnoty sú vyplnené vo všetkých stĺpcoch tabuľky.

Príklad dva.

Vložte informácie do požadovaných (špecifikovaných) stĺpcov tabuľky table_name.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [chránený e-mailom]“), („meno2′, „podmeno2′“, [chránený e-mailom]′), ('meno3′, 'podmeno3′,(' [chránený e-mailom]′);

Igor Serov špeciálne pre stránku "".

Načítava...