Počítače Windows Internet

Transact -SQL - vkladanie údajov. SQL dotaz INSERT INTO - naplňte databázu informáciami Syntax vloženia SQL

Posledná aktualizácia: 13. júla 2017

Na pridanie údajov sa používa príkaz INSERT, ktorý má nasledujúcu formálnu syntax:

VLOŽTE názov_tabulky [(zoznam_ stĺpcov)] HODNOTY (hodnota1, hodnota2, ... hodnotaN)

Na začiatku je výraz INSERT INTO, potom v zátvorkách môžete určiť zoznam stĺpcov oddelených čiarkami, do ktorých potrebujete pridať údaje, a na konci za slovom VALUES sú hodnoty pridané pre stĺpce uvedené v zátvorkách.

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

VYTVORIŤ DATABÁZU productsdb; POUŽÍVAJTE productsdb; VYTVORIŤ TABUĽKU Produkty (ID ZÁKLADNÝ KĽÚČ IDENTIFIKÁCIE, NÁZOV výrobku NVARCHAR (30) NIE JE NULL, Výrobca NVARCHAR (20) NIE JE NULOVÝ, ProductCount INT DEFAULT 0, Cena PENIAZE NIE JE NULÁ)

Pridajme doň jeden riadok pomocou príkazu INSERT:

VLOŽTE HODNOTY produktov („iPhone 7“, „Apple“, 5, 52 000)

Po úspešnom spustení v programe SQL Server Management Studio by sa v poli správy mala objaviť správa „1 ovplyvnený riadok (riadky)“:

Je potrebné mať na pamäti, že hodnoty pre stĺpce v zátvorkách za kľúčovým slovom VALUES sú odovzdané 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. Keďže je preň nastavený atribút IDENTITY, hodnota tohto stĺpca sa však vygeneruje automaticky a nemusíte ho zadávať. Druhý stĺpec predstavuje názov produktu, takže prvá hodnota, reťazec „iPhone 7“, bude odoslaná do tohto konkrétneho stĺpca. Druhá hodnota je reťazec „Apple“ bude odoslaný do tretieho stĺpca Výrobca atď. To znamená, že hodnoty sú odovzdané do stĺpcov nasledovne:

    Názov produktu: „iPhone 7“

    Výrobca: "Apple"

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

VLOŽTE DO VÝROBKOV (Názov produktu, Cena, Výrobca) HODNOTY („iPhone 6S“, 41000, „Apple“)

Tu je hodnota zadaná iba pre tri stĺpce. A teraz sú hodnoty odovzdané v poradí podľa stĺpcov:

    Názov produktu: „iPhone 6S“

    Výrobca: "Apple"

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

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

VLOŽTE DO HODNOTY produktov („iPhone 6“, „Apple“, 3, 36 000), („Galaxy S8“, „Samsung“, 2, 46 000), („„ Galaxy S8 Plus “,„ Samsung “, 1, 56 000)

V takom prípade budú do tabuľky pridané tri riadky.

Pri pridávaní môžeme tiež určiť, že predvolená hodnota stĺpca sa použije pomocou kľúčového slova DEFAULT alebo NULL:

VLOŽTE DO VÝROBKOV (Názov produktu, Výrobca, Číslo produktu, Cena) HODNOTY („Mi6“, „Xiaomi“, DEFAULT, 28000)

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

Ak majú všetky stĺpce predvolený atribút DEFAULT alebo ich možno nenulovať, môžete pre všetky stĺpce vložiť predvolené hodnoty:

VLOŽTE DO VÝROBKOV VÝCHOZÍ HODNOTY

Ak však vezmete tabuľku Produkty, takýto príkaz zlyhá, pretože niekoľko polí nemá atribút DEFAULT a súčasne nepovoľujú hodnoty NULL.

Tento príkaz pridá do tabuľky jeden alebo viac záznamov (vykoná doplnkový dotaz).

Syntax

Žiadosť o pridanie viacerých záznamov:

VLOŽIŤ DO cieľový_objekt [(pole1[, pole2[, ...]])]
VYBRAŤ [ Zdroj.]pole1[, pole2[, ...]
OD tabuľkový_výraz

Žiadosť o pridanie jedného záznamu:

VLOŽIŤ DO cieľový_objekt [(pole1[, pole2[, ...]])]
HODNOTY ( pole1[, pole2[, ...])

Príkaz INSERT INTO pozostáva z nasledujúcich prvkov:

Časť

Popis

cieľový_objekt

Názov tabuľky alebo dotazu, do ktorého sa pridávajú záznamy.

pole1, pole2

Po hádke cieľový_objekt- názvy polí, do ktorých sú údaje pridané; po hádke Zdroj- názvy polí, z ktorých sa údaje extrahujú.

externá_databáza

Cesta k externej databáze. Popis cesty nájdete v článku klauzuly IN.

Zdroj

Názov tabuľky alebo dotazu, z ktorého sa záznamy kopírujú.

tabuľkový_výraz

Jeden alebo viac názvov tabuliek, z ktorých sa majú načítať záznamy. Tento argument môže byť názov jednotlivej tabuľky, výraz výsledku vytvorený pomocou VNÚTORNÉHO PRIPOJENIA, ĽAVÉHO PRIPOJENIA alebo PRAVÉHO PRIPOJENIA alebo uloženého dotazu.

hodnota1, hodnota2

Hodnoty, ktoré sa majú pridať do konkrétnych polí v novom zázname. Každá hodnota je vložená do poľa zodpovedajúceho jej pozícii v zozname: hodnota1 pridané do pole1 nový vstup, hodnota2- v pole2 a tak ďalej. Hodnoty oddeľte čiarkou a textové polia uzavrite do úvodzoviek ("").

Poznámky

Pomocou príkazu INSERT INTO môžete do tabuľky pridať jeden záznam pomocou vyššie uvedenej syntaxe. V tomto prípade sú pre každé pole v zázname uvedené názvy a hodnoty. Musíte zadať všetky polia záznamu, ku ktorým priradíte hodnoty a zodpovedajúce hodnoty. Ak nezadáte hodnotu poľa, bude jej priradená predvolená hodnota alebo NULL. Záznamy sú pripojené na koniec tabuľky.

Môžete tiež použiť INSERT INTO na pridanie sady záznamov z inej tabuľky alebo dotazu pomocou klauzuly SELECT ... FROM, ako je uvedené vyššie (na pridanie viacerých záznamov pozri syntax dotazu). V tomto prípade klauzula SELECT určuje polia, ktoré sa majú pridať do zadaného cieľový_objekt.

Zdroj alebo cieľový_objekt môže to byť tabuľka alebo dotaz. Ak je zadaný dotaz, databázový stroj Microsoft Access pridá záznamy do všetkých tabuliek, ktoré vráti.

Použitie príkazu INSERT INTO je voliteľné. Ak je zadaný, musí predchádzať príkazu SELECT.

Ak cieľová tabuľka obsahuje primárny kľúč, uistite sa, že hodnoty pridané do jedného alebo viacerých polí primárneho kľúča sú jedinečné a líšia sa od NULOVÝ; v opačnom prípade nebudú pridané žiadne záznamy.

Ak pridávate záznamy do tabuľky s poľom Počítadlo a chcete ich prečíslovať, do svojho dotazu nezahrňte pole Počítadlo. Ak chcete z poľa ponechať pôvodné hodnoty, zahrňte do dotazu pole Počítadlo.

Záznamy môžete pridať do tabuľky v inej databáze pomocou klauzuly IN.

Ak chcete vytvoriť tabuľku, pomocou príkazu SELECT ... INTO získajte dotaz na vytvorenie tabuľky.

Pred spustením pridávacieho dotazu použite výberový dotaz s rovnakými výberovými kritériami na určenie, ktoré záznamy budú pridané na základe získaných výsledkov.

Pripojiť dotaz skopíruje záznamy z jednej alebo viacerých tabuliek do inej tabuľky. Tabuľky obsahujúce pridané záznamy zároveň zostanú nezmenené.

Namiesto pridávania záznamov z inej tabuľky môžete pomocou klauzuly VALUES určiť hodnotu každého poľa v samostatnom novom zázname. Ak je zoznam polí vynechaný, klauzula VALUES musí obsahovať zodpovedajúce hodnoty pre každé pole v tabuľke; inak operácia VLOŽIŤ zlyhá. Na každý ďalší záznam, ktorý chcete vytvoriť, použite príkaz INSERT INTO spolu s klauzulou VALUES.

Na vloženie nových riadkov do tabuľky sa používa príkaz SQL INSERT INTO a INSERT SELECT. Existujú dva spôsoby použitia pokynov:

  1. Len hodnoty: Prvá metóda slúži na zadanie iba údajov, ktoré sa majú vložiť bez názvov stĺpcov.

Syntax:

INSERT INTO table_name VALUES (hodnota1, hodnota2, hodnota3, ...); table_name: názov tabuľky. hodnota1, hodnota2, ..: hodnoty prvého stĺpca, druhého stĺpca, ... pre nový záznam

  1. Názvy stĺpcov a hodnoty: Druhá metóda určuje názvy stĺpcov a hodnoty riadkov, ktoré sa majú vložiť:

Syntax:

INSERT INTO table_name (stĺpček1, stĺpček2, stĺpček3, ..) HODNOTY (hodnota1, hodnota2, hodnota3, ...); table_name: názov tabuľky. stĺpec1: názov prvého stĺpca, druhého stĺpca ... hodnota1, hodnota2, ..: hodnoty prvého stĺpca, druhého stĺpca, ... pre nový záznam

Žiadosti:

Metóda 1 ( vkladanie iba hodnôt):

VLOŽTE DO Študentských hodnôt („5“, „HARSH“, „WEST BENGAL“, „8759770477“, „19“);

Výsledok:

Po použití INSERT INTO SELECT bude študentská tabuľka teraz vyzerať takto:

ROLL_NO NÁZOV ADRESA TELEFÓN Vek
1 Ram Dillí 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 NÁKLAD Dillí 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 HARSH ZÁPADNÝ BENGAL 8759770477 19

Metóda 2 ( vkladanie hodnôt iba do určených stĺpcov):

INSERT INTO Student (ROLL_NO, NAME, Age) VALUES ("5", "PRATIK", "19");

Výsledok:

Študentská tabuľka bude teraz vyzerať takto:

ROLL_NO NÁZOV ADRESA TELEFÓN Vek
1 Ram Dillí 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 NÁKLAD Dillí 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 PRATIK nulový nulový 19

Stĺpce bez hodnôt sú nastavené na hodnotu null.

Použitie SELECT v príkaze INSERT INTO

Na kopírovanie riadkov z jednej tabuľky a ich vloženie do druhej môžete použiť príkaz MySQL INSERT SELECT.

Použitie tohto operátora je rovnaké ako používanie INSERT INTO. Rozdiel je v tom, že príkaz SELECT sa používa na načítanie údajov z inej tabuľky. Nasledujú rôzne spôsoby použitia VLOŽIŤ DO VÝBERU:

  • Vložte všetky stĺpce tabuľky: Môžete skopírovať všetky údaje tabuľky a prilepiť ich do inej tabuľky.

Syntax:

VLOŽIŤ DO PRVEJ_tabule VYBRAŤ * ZO druhej_tabulky; first_table: názov prvej tabuľky. second_table: názov druhej tabuľky.

Na kopírovanie údajov z jednej tabuľky sme použili príkaz SELECT a na vloženie do druhej do príkazu INSERT INTO.

  • Vložte jednotlivé stĺpce tabuľky... Môžete kopírovať iba tie stĺpce tabuľky, ktoré chcete prilepiť do inej tabuľky.

Syntax:

INSERT INTO first_table (column_names1) SELECT column_names2 FROM second_table; first_table: názov prvej tabuľky. second_table: názov druhej tabuľky. column_names1: názvy stĺpcov oddelené čiarkou (,) pre tabuľku 1.column_names2: názvy stĺpcov oddelené čiarkou (,) pre tabuľku 2.

Na kopírovanie údajov iba z vybraných stĺpcov druhej tabuľky sme použili príkaz SELECT a na vloženie do prvej tabuľky príkaz MySQL INSERT INTO SELECT.

  • Kopírovanie konkrétnych riadkov z tabuľky... Konkrétne riadky z tabuľky môžete skopírovať pre neskoršie vloženie do inej tabuľky pomocou klauzuly WHERE s príkazom SELECT. V takom prípade musíte použiť príslušnú podmienku v KDE.

Syntax:

Tabuľka 2: LateralStudent

ROLL_NO NÁZOV ADRESA TELEFÓN Vek
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 NIEČO ROHTAK 9687543210 20

Žiadosti:

Metóda 1 ( vložte všetky riadky a stĺpce):

INSERT INTO Student SELECT * FROM LateralStudent;

Výsledok:

Tento dotaz vloží všetky údaje z tabuľky LateralStudent do študentskej tabuľky. Po použití SQL INSERT INTO SELECT bude študentská tabuľka vyzerať takto:

ROLL_NO NÁZOV ADRESA TELEFÓN Vek
1 Ram Dillí 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 NÁKLAD Dillí 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 NIEČO ROHTAK 9687543210 20

Metóda 2 ( vkladanie jednotlivých stĺpcov):

INSERT INTO Student (ROLL_NO, NAME, Age) SELECT ROLL_NO, NAME, Age FROM LateralStudent;

Výsledok:

Tento dotaz vloží údaje zo stĺpcov ROLL_NO, NAME a Age tabuľky LateralStudent do tabuľky Student. Ostatné stĺpce v študentskej tabuľke budú nastavené na hodnotu null. Po použití príkazu SQL INSERT SELECT bude tabuľka vyzerať takto:

ROLL_NO NÁZOV ADRESA TELEFÓN Vek
1 Ram Dillí 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 NÁKLAD Dillí 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK Nulový nulový 18
8 NIRAJ Nulový nulový 19
9 NIEČO Nulový nulový 20
  • Výber konkrétnych riadkov na vloženie:

Výsledok:

Tento dotaz vyberie iba prvý riadok z tabuľky LateralStudent, ktorý sa má vložiť do študentskej tabuľky. Po použití INSERT SELECT bude tabuľka vyzerať takto.

Príkaz INSERT vloží nové záznamy do tabuľky. V tomto prípade môžu byť hodnoty stĺpcov doslovnými konštantami alebo môžu byť výsledkom poddotazu. V prvom prípade sa na vloženie každého riadka používa samostatný príkaz INSERT; v druhom prípade bude vložených toľko riadkov, koľko vrátil poddotaz.

Syntax operátora je nasledovná:

    VLOŽIŤ DO [(, ...)]

    (HODNOTY (, ...))

  1. | (ZÁKLADNÉ HODNOTY)

Ako môžete vidieť z poskytnutej syntaxe, zoznam stĺpcov je voliteľný (ako je uvedené v hranatých zátvorkách v popise syntaxe). Ak chýba, musí byť zoznam vložených hodnôt úplný, to znamená poskytnúť hodnoty pre všetky stĺpce tabuľky. Poradie hodnôt sa však musí zhodovať s poradím určeným príkazom CREATE TABLE pre tabuľku, do ktorej sú vložené riadky. Tieto hodnoty okrem toho musia mať rovnaký typ údajov ako stĺpce, do ktorých sú zadané. Ako príklad zvážte vloženie riadka do tabuľky produktov vytvorenej nasledujúcim príkazom CREATE TABLE:

    VYTVORIŤ TABUĽKOVÝ produkt

    znak výrobcu (1) NIE JE NULL,

    model varchar (4) NIE JE NULL,

    typ varchar (7) NIE JE NULL

Predpokladajme, že chcete do tejto tabuľky pridať model PC 1157 od výrobcu B. To je možné vykonať s nasledujúcim operátorom:

    VLOŽIŤ DO VÝROBKU

    HODNOTY („B“, 1157, „PC“);

Ak zadáte zoznam stĺpcov, môžete zmeniť „prirodzené“ poradie týchto stĺpcov:

    Vložiť do produktu (typ, model, výrobca)

    HODNOTY ("PC", 1157, "B");

Zdá sa, že ide o úplne nadbytočnú funkciu, vďaka ktorej je dizajn iba ťažkopádnejší. Vyhráva však, ak majú stĺpce predvolené hodnoty. Zvážte nasledujúcu štruktúru tabuľky:

    VYTVORIŤ TABUĽKU product_D

    výrobca znakov (1) NULL,

    model varchar (4) NULL,

    typ varchar (7) NENÍ NULOVÝ VÝCHOZÍ "PC"

Všimnite si toho, že tu majú hodnoty všetkých stĺpcov predvolené hodnoty (prvé dva sú NULL a posledný stĺpec je typ - PC). Teraz môžeme napísať:

    Vložiť do produktu_D (model, výrobca)

    HODNOTY (1157, "B");

V tomto prípade bude chýbajúca hodnota pri vkladaní riadka nahradená predvolenou hodnotou PC. Všimnite si toho, že ak pre stĺpec nie je zadaná žiadna predvolená hodnota v príkaze CREATE TABLE a nie je uvedené obmedzenie NOT NULL, ktoré zakazuje používanie NULL v danom stĺpci tabuľky, potom sa predpokladá predvolená hodnota NULL.

Vynára sa otázka: nie je možné špecifikovať zoznam stĺpcov a napriek tomu použiť predvolené hodnoty? Odpoveď je áno. Za týmto účelom namiesto explicitného zadania hodnoty použite VÝCHOZÉ vyhradené slovo:

    VLOŽIŤ DO PRODUKTU_D

    HODNOTY ("B", 1158, VÝCHOZÍ);

Pretože všetky stĺpce majú predvolené hodnoty, dalo by sa zapísať a vložiť riadok s predvolenými hodnotami:

    VLOŽIŤ DO PRODUKTU_D

    HODNOTY (DEFAULT, DEFAULT, DEFAULT);

Pre tento prípad však existuje špeciálna konštrukcia DEFAULT VALUES (pozri syntax operátora), pomocou ktorej je možné vyššie uvedený operátor prepísať ako

    VLOŽIŤ DO VÝCHOZÍCH HODNOTÍ Product_D;

Všimnite si toho, že pri vkladaní riadka do tabuľky sú skontrolované všetky obmedzenia uložené na túto tabuľku. Môžu to byť obmedzenia primárneho kľúča alebo jedinečné indexy, obmedzenia kontroly, ako napríklad CHECK, a obmedzenia referenčnej integrity. Ak dôjde k porušeniu akéhokoľvek obmedzenia, vloženie riadka bude odmietnuté. Teraz sa pozrime na prípad použitia pre poddotaz. Predpokladajme, že musíme do tabuľky Product_D vložiť všetky riadky z tabuľky produktov súvisiace s modelmi osobných počítačov (typ = „PC“). Pretože požadované hodnoty sú už v nejakej tabuľke, ručné vytváranie vložených riadkov je za prvé neúčinné a za druhé môže spôsobiť chyby pri zadávaní. Použitie poddotazu rieši tieto problémy:

Použitie symbolu „*“ v poddotazi je v tomto prípade odôvodnené, pretože poradie stĺpcov je pre obe tabuľky rovnaké. Ak by to tak nebolo, musel by sa použiť zoznam stĺpcov, buď v príkaze INSERT, v poddotazi, alebo v oboch, ktoré by zodpovedali poradiu stĺpcov:

Tu, ako predtým, môžete zadať nie všetky stĺpce, ak chcete použiť existujúce predvolené hodnoty, napríklad:

V tomto prípade bude predvolená hodnota PC nahradená do stĺpca typu tabuľky Product_D pre všetky vložené riadky.

Všimnite si toho, že pri použití poddotazu obsahujúceho predikát budú vložené iba tie riadky, pre ktoré je hodnota predikátu PRAVDA (nie NEZNÁME!). Inými slovami, ak by typový stĺpec v tabuľke Produkt mohol mať hodnotu null a táto hodnota by bola prítomná v niekoľkých riadkoch, tieto riadky by neboli vložené do tabuľky Product_D.

Na prekonanie obmedzenia vloženia jedného riadka do príkazu INSERT pri použití konštruktora riadkov v klauzule VALUES môžete umelo použiť poddotaz, ktorý tvorí riadok s klauzulou UNION ALL. Ak teda potrebujeme vložiť viac riadkov pomocou jedného príkazu INSERT, môžeme napísať:

    VLOŽIŤ DO PRODUKTU_D

    Zvoľte „B“ AS maker, model 1158 AS, „PC“ AS typ

    UNION ALL

    Zvoľte „C“, 2190, „prenosný počítač“

    UNION ALL

    VYBERTE „D“, 3219, „Tlačiareň“;

Použitie UNION ALL je vhodnejšie ako UNION, aj keď nie sú zaručené žiadne duplicitné reťazce, pretože potom sa nevykoná žiadna duplicitná kontrola.

Je potrebné poznamenať, že vkladanie viacerých n -tíc pomocou reťazcového konštruktora je už implementované v Systém na správu relačných databáz (DBMS) vyvinutý spoločnosťou Microsoft Corporation.Structured Query Language) je univerzálny počítačový jazyk používaný na vytváranie, úpravu a správu údajov v relačných databázach. Server SQL 2008. Vzhľadom na túto príležitosť možno posledný dotaz prepísať ako:

    VLOŽTE DO HODNOTY Product_D

    („B“, 1158, „PC“),

    („C“, 2190, „prenosný počítač“),

Čo je INSERT INTO?

Hlavným cieľom databázových systémov je ukladať údaje do tabuliek. Dáta sú obvykle dodávané aplikačnými programami, ktoré bežia nad databázou. Za týmto účelom má SQL príkaz INSERT, ktorý sa používa na ukladanie údajov do tabuľky. The Príkaz INSERT vytvorí nový riadok v tabuľke na uloženie údajov.

Základná syntax

Pozrime sa na základnú syntax príkazu SQL INSERT uvedenú nižšie.

VLOŽIŤ DO `názov_tabulky` (stĺpec_1, stĺpec_2, ...) HODNOTY (hodnota_1, hodnota_2, ...);

  • VLOŽIŤ DO `názov_tabulky` je príkaz, ktorý hovorí serveru MySQL, aby pridal nový riadok do tabuľky s názvom `názov_tabulky`.
  • (stĺpec_1, stĺpec_2, ...) určuje stĺpce, ktoré sa majú aktualizovať v novom riadku
  • HODNOTY (hodnota_1, hodnota_2, ...) určuje hodnoty, ktoré sa majú pridať do nového riadka

Pri zadávaní hodnôt údajov, ktoré sa majú vložiť do novej tabuľky, treba pri práci s rôznymi typmi údajov vziať do úvahy nasledujúce.

  • Reťazcové dátové typy- všetky hodnoty reťazcov by mali byť uzavreté v jednoduchých úvodzovkách.
  • Číselné typy údajov- všetky číselné hodnoty by mali byť zadávané priamo bez toho, aby boli uzavreté do jednoduchých alebo dvojitých úvodzoviek.
  • Dátové typy dátumu-uzavrieť hodnoty dátumu v jednoduchých úvodzovkách vo formáte „RRRR-MM-DD“.

Príklad:

Predpokladajme, že máme nasledujúci zoznam nových členov knižnice, ktoré je potrebné pridať do databázy.

Celé mená Dátum narodenia rod Fyzická adresa Poštová adresa Kontaktné číslo Emailová adresa
Leonard Hofstadter Muž Woodcrest 0845738767
Sheldon Cooper Muž Woodcrest 0976736763
Rajesh Koothrappali Muž Fairview 0938867763
Leslie winkle 14/02/1984 Muž 0987636553
Howard Wolowitz 24/08/1981 Muž Južný park P.O. Kolónka 4563 0987786553

Umožňuje „VLOŽIŤ údaje jeden po druhom. Začneme Leonardom Hofstadterom. S kontaktným číslom budeme zaobchádzať ako s číselným údajovým typom a nebudeme ho uzatvárať do jednoduchých úvodzoviek.

VLOŽIŤ DO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) HODNOTY (" Leonard Hofstadter "," Male "," Woodcrest ", 0845738767);

Vykonaním vyššie uvedeného skriptu sa z Leonardovho kontaktného čísla odstráni 0. Dôvodom je, že hodnota bude považovaná za číselnú hodnotu a nula (0) na začiatku bude vypustená, pretože nie je významná.

Aby sa predišlo takýmto problémom, musí byť hodnota uzavretá v jednoduchých úvodzovkách, ako je uvedené nižšie -

VLOŽIŤ DO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES (" Sheldon Cooper "," Male "," Woodcrest "," 0976736763 ");

Vo vyššie uvedenom prípade nebude nula (0) zahodená

Zmena poradia stĺpcov nemá žiadny vplyv na dotaz INSERT, pokiaľ sú do správnych stĺpcov mapované správne hodnoty.

Nižšie uvedený dotaz demonštruje vyššie uvedený bod.

VLOŽIŤ DO `members` (` contact_number`, `gender`,` full_names`, `physical_address`) VALUES (" 0938867763 "," Male "," Rajesh Koothrappali "," Woodcrest ");

Vyššie uvedené dotazy preskočili stĺpec dátumu narodenia, v predvolenom nastavení MySQL vloží hodnoty NULL do stĺpcov, ktoré sa v dotaze INSERT preskočia.

Vložme teraz záznam pre Leslie, kde je zadaný dátum narodenia. Hodnota dátumu by mala byť uzavretá do jednoduchých úvodzoviek vo formáte „RRRR-MM-DD“.

VLOŽIŤ DO `members` (` full_names`, `date_of_birth`,` gender`, `physical_address`,` contact_number`) VALUES ("Leslie Winkle", "1984-02-14", "Male", "Woodcrest", " 0987636553 ");

Všetky vyššie uvedené dotazy špecifikovali stĺpce a mapovali ich na hodnoty v príkaze insert. Ak uvádzame hodnoty pre VŠETKY stĺpce v tabuľke, potom stĺpce z dotazu na vloženie môžeme vynechať.

VLOŽIŤ DO HODNOTY „členov“ (9, „Howard Wolowitz“, „Muž“, „1981-08-24“, „SouthPark“, „P.O. Box 4563“, „0987786553“, „lwolowitzemail.me“);

Teraz použijeme príkaz SELECT na zobrazenie všetkých riadkov v tabuľke členov. SELECT * FROM` members`;

členské číslofull_namesroddátum narodeniafyzická adresaPoštová adresacont__umbere -mail
1 Janet jonesŽena21-07-1980 Prvý pozemok č. 4Súkromná taška0759 253 542 Táto e -mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript.
2 Janet Smith JonesováŽena23-06-1980 Melrose 123NULOVÝNULOVÝTáto e -mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript.
3 Robert PhilMuž12-07-1989 3. ulica 34NULOVÝ12345 Táto e -mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript.
4 Gloria WilliamsováŽena14-02-1984 2. ulica 23NULOVÝNULOVÝNULOVÝ
5 Leonard HofstadterMužNULOVÝWoodcrestNULOVÝ845738767 NULOVÝ
6 Sheldon CooperMužNULOVÝWoodcrestNULOVÝ976736763 NULOVÝ
7 Rajesh KoothrappaliMužNULOVÝWoodcrestNULOVÝ938867763 NULOVÝ
8 Leslie winkleMuž14-02-1984 WoodcrestNULOVÝ987636553 NULOVÝ
9 Howard WolowitzMuž24-08-1981 Južný parkP.O. Kolónka 4563987786553 Táto e -mailová adresa je chránená pred spamovacími robotmi. Ak ju chcete vidieť, musíte mať povolený JavaScript.

Všimnite si toho, že kontaktné číslo na Leonarda Hofstadtera kleslo na nulu (0) z kontaktného čísla. Ostatné kontaktné čísla na začiatku neznížili nulu (0).

Vkladanie do tabuľky z inej tabuľky

Príkaz INSERT je možné použiť aj na vloženie údajov do tabuľky z inej tabuľky. Základná syntax je uvedená nižšie.

INSERT INTO table_1 SELECT * FROM table_2;

Pozrime sa teraz na praktický príklad, na ukážkové účely vytvoríme fiktívnu tabuľku pre kategórie filmov. Nové kategórie nazveme tabuľkou category_archive. Tabuľku vytvorí nasledujúci skript.

VYTVORIŤ TABUĽKU `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` Remarks` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Tabuľku vytvoríte spustením vyššie uvedeného skriptu.

Vložme teraz všetky riadky z tabuľky kategórií do archívnej tabuľky kategórií. K tomu nám pomáha nižšie uvedený skript.

VLOŽIŤ DO `category_archive` SELECT * FROM` categories`;

Spustením vyššie uvedeného skriptu sa vložia všetky riadky z tabuľky kategórií do archívnej tabuľky kategórií. Štruktúra tabuľky musí byť rovnaká, aby skript fungoval. Robustnejší skript je ten, ktorý mapuje názvy stĺpcov v tabuľke na vloženie na stĺpce v tabuľke obsahujúcej údaje.

Nižšie uvedený dotaz ukazuje, ako sa používa.

VLOŽIŤ DO `category_archive` (category_id, category_name, poznámky) SELECT category_id, category_name, poznámky FROM` categories`;

Vykonáva sa dotaz SELECT

VYBERTE * Z `archívu_kategórií`

poskytuje nasledujúce výsledky uvedené nižšie.

category_idmeno kategóriepoznámky
1 KomédiaFilmy s humorom
2 RomantickýMilostné príbehy
3 EpickéPríbeh starovekých filmov
4 HrôzaNULOVÝ
5 Sci -fiNULOVÝ
6 ThrillerNULOVÝ
7 AkciaNULOVÝ
8 Romantická komédiaNULOVÝ
9 KarikatúryNULOVÝ
10 KarikatúryNULOVÝ

Zhrnutie

  • Príkaz INSERT sa používa na pridanie nových údajov do tabuľky
  • Dátum a hodnoty reťazca by mali byť uzavreté v jednoduchých úvodzovkách.
  • Číselné hodnoty nemusia byť uzavreté v úvodzovkách.
  • Príkaz INSERT je možné použiť aj na vloženie údajov z jednej tabuľky do druhej.