Transact-SQL – duomenų įterpimas. SQL užklausa INSERT INTO – užpildykite duomenų bazę informacija Demonstracinė duomenų bazės versija

Be anksčiau aptarto SELECT teiginio, duomenų manipuliavimo kalboje (DML) yra dar trys teiginiai: INSERT, UPDATE ir DELETE. Kaip ir SELECT sakinys, šie trys teiginiai veikia arba lentelėse, arba rodiniuose. Šiame straipsnyje aptariamas INSERT teiginys, o kiti du teiginiai – kitame straipsnyje.

INSERT pareiškimasįterpia eilutes (arba eilučių dalis) į lentelę. Yra dvi skirtingos šios instrukcijos formos:

ĮTERPTI skirtuko_pavadinimą [(col_list)] NUMATYTOSIOS VERTĖS | VERTĖS (( NUMATYTOJI | NULL | išraiška ) [ ,...n]) INSERT INTO skirtuko_pavadinimas | rodinio_pavadinimas [(col_list)] (select_statement | execute_statement) Sintaksės taisyklės

Pirmoji instrukcijos forma leidžia į lentelę įterpti vieną eilutę (ar jos dalį). Antroji INSERT sakinio forma leidžia į lentelę įterpti SELECT sakinio rezultatų rinkinį arba išsaugotą procedūrą, vykdomą sakiniu EXECUTE. Išsaugota procedūra turi grąžinti duomenis, kuriuos reikia įterpti į lentelę. Kai naudojamas su INSERT sakiniu, SELECT sakinys gali pasirinkti reikšmes iš kitos arba tos pačios lentelės, į kurią įterpiami duomenys, jei atitinkamų stulpelių duomenų tipai yra suderinami.

Abiejose formose kiekvienos įterptos reikšmės duomenų tipas turi būti suderinamas su atitinkamo lentelės stulpelio duomenų tipu. Visi eilutės ir laikini duomenys turi būti pateikti kabutėse; Skaitinių reikšmių kabutėse rašyti nereikia.

Vienos eilutės įterpimas

Abiejose INSERT teiginio formose stulpelių sąrašo aiškiai nurodyti neprivaloma. Neįrašyti stulpelių yra tas pats, kas nurodyti visus lentelės stulpelius.

DEFAULT VALUES parametrasįterpia numatytąsias visų stulpelių reikšmes. Stulpeliai su TIMESTAMP duomenų tipu arba IDENTITY nuosavybe pagal numatytuosius nustatymus įterpiami su reikšmėmis, kurias automatiškai generuoja sistema. Kitų duomenų tipų stulpeliams įterpiama atitinkama ne nulinė numatytoji reikšmė, jei yra, arba NULL kitu atveju. Jei stulpelyje neleidžiamos nulinės reikšmės ir nėra nustatytos numatytosios reikšmės, INSERT sakinys nepavyksta ir rodomas pranešimas.

Toliau pateiktame pavyzdyje įterpia eilutes į SampleDb duomenų bazės Darbuotojų lentelę, parodydamas, kaip naudojamas INSERT sakinys norint į duomenų bazę įterpti nedidelį kiekį duomenų:

NAUDOTI SampleDb; INSERT Į Darbuotojų VERTYBES (34990, "Andrey", "Batonovas", "d1"); INSERT INTO Darbuotojo VERTYBĖS (38640, "Aleksejus", "Vasin", "d3");

Yra du skirtingi būdai įterpti reikšmes į naują eilutę. Toliau pateiktame pavyzdyje INSERT teiginys aiškiai naudoja NULL raktinį žodį ir į atitinkamą stulpelį įterpia NULL reikšmę:

NAUDOTI SampleDb; INSERT INTO Darbuotojų VERTYBĖS (34991, "Andrejus", "Batonovas", NULL);

Norėdami įterpti reikšmes į kai kuriuos (bet ne visus) lentelės stulpelius, paprastai turite aiškiai nurodyti tuos stulpelius. Nenurodyti stulpeliai turi leisti NULL reikšmes arba turėti numatytąją reikšmę.

NAUDOTI SampleDb; INSERT INTO Darbuotojo (Id, Vardas, Pavardė) VALUES (34992, "Andrey", "Batonovas");

Ankstesni du pavyzdžiai yra lygiaverčiai. Darbuotojų lentelėje vienintelis stulpelis, kuriame leidžiamos NULL reikšmės, yra stulpelis DepartmentNumber, o visi kiti stulpeliai buvo išjungti dėl NOT NULL sakinio CREATE TABLE sakinyje.

Vertybių tvarka į VALUES pasiūlymas INSERT teiginiai gali skirtis nuo eilės, nurodytos sakinyje CREATE TABLE. Tokiu atveju jų tvarka turi sutapti su tvarka, kuria atitinkami stulpeliai yra išvardyti stulpelių sąraše. Toliau pateikiamas duomenų įterpimo kita tvarka nei originalas pavyzdys:

NAUDOTI SampleDb; INSERT INTO Darbuotojo (Skyriaus numeris, Pavardė, Id, Vardas) VALUES ("d1", "Batonovas", 34993, "Andrejus");

Kelių eilučių įterpimas

Antroji INSERT sakinio forma į lentelę įterpia vieną ar daugiau eilučių, pasirinktų pagal antrinę užklausą. Toliau pateiktame pavyzdyje parodyta, kaip įterpti eilutes į lentelę naudojant antrąją INSERT sakinio formą. Tokiu atveju vykdoma užklausa, norint pasirinkti padalinių, esančių Maskvoje, numerius ir pavadinimus, o gautas rezultatų rinkinys įkeliamas į naują anksčiau sukurtą lentelę.

Aukščiau pateiktame pavyzdyje sukurtoje naujoje Maskvos departamento lentelėje yra tokie patys stulpeliai kaip ir esamoje Departamentų lentelėje, išskyrus trūkstamą Vietos stulpelį. INSERT sakinyje esanti antrinė užklausa parenka visas Departamento lentelės eilutes, kurių stulpelio Vieta reikšmė yra „Maskva“, kurios vėliau įterpiamos į naują užklausos pradžioje sukurtą lentelę.

Toliau pateiktame pavyzdyje parodytas kitas būdas įterpti eilutes į lentelę, naudojant antrąją INSERT sakinio formą. Tokiu atveju vykdoma užklausa, kad būtų parinkti personalo numeriai, projektų numeriai ir projekto pradžios datos visiems darbuotojams, užimantiems pareigas „Vadovas“, kurie dirba projekte p2, o gautą rezultatų rinkinį įkeliama į naują lentelę, sukurtą projekto pradžioje. užklausa:

NAUDOTI SampleDb; KURTI LENTELĘ ManagerTeam (EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Vadovas";

Prieš įterpiant eilutes naudojant INSERT teiginį, MoscowDepartment ir ManagerTeam lentelės (aukščiau pateiktuose pavyzdžiuose) buvo tuščios. Jei lentelė jau egzistavo ir joje yra eilučių su duomenimis, tada į ją bus įtrauktos naujos eilutės.

Kas yra INSERT INTO?

Pagrindinis duomenų bazių sistemų tikslas – kaupti duomenis lentelėse. Duomenis paprastai teikia taikomosios programos, kurios veikia duomenų bazės viršuje. Tuo tikslu SQL turi komandą INSERT, kuri naudojama duomenims saugoti lentelėje. The Komanda INSERT sukuria naują eilutę lentelėje duomenims saugoti.

Pagrindinė sintaksė

Pažvelkime į toliau pateiktą pagrindinę komandos SQL INSERT sintaksę.

INSERT INTO `lentelės_pavadinimas`(stulpelis_1,stulpelis_2,...) VALUES (reikšmė_1,vertė_2,...);

  • INSERT INTO „lentelės_pavadinimas“. yra komanda, kuri nurodo MySQL serveriui pridėti naują eilutę į lentelę, pavadintą "table_name".
  • (stulpelis_1, stulpelis_2,...) nurodo stulpelius, kurie turi būti atnaujinti naujoje eilutėje
  • VERTĖS (vertė_1, vertė_2,...) nurodo reikšmes, kurios turi būti įtrauktos į naują eilutę

Pateikiant duomenų reikšmes, kurios turi būti įterptos į naują lentelę, nagrinėjant skirtingus duomenų tipus reikia atsižvelgti į šiuos dalykus.

  • Eilučių duomenų tipai- visos eilučių reikšmės turi būti pateiktos vienose kabutėse.
  • Skaitmeniniai duomenų tipai- visos skaitinės reikšmės turi būti pateiktos tiesiogiai, nededant jų viengubomis ar dvigubomis kabutėmis.
  • Datos duomenų tipai- datos reikšmes įtraukite į atskiras kabutes formatu "YYYY-MM-DD".

Pavyzdys:

Tarkime, kad turime šį naujų bibliotekos narių, kuriuos reikia įtraukti į duomenų bazę, sąrašą.

Pilni vardai Gimimo data Lytis Fizinis adresas pašto adresas Kontaktinis numeris Elektroninio pašto adresas
Leonardas Hofstadteris Patinas Woodcrest 0845738767
Šeldonas Kuperis Patinas Woodcrest 0976736763
Rajeshas Kootrappalis Patinas Fairview 0938867763
Leslie Winkle 14/02/1984 Patinas 0987636553
Howardas Wolowitzas 24/08/1981 Patinas Pietų parkas P.O. 4563 dėžutė 0987786553

Leiskite" Įterpti duomenis po vieną. Pradėsime nuo Leonardo Hofstadterio. Kontaktinį numerį laikysime skaitiniais duomenų tipais ir nedėsime numerio į kabutes.

INSERT INTO "nariai" ("visi_vardai", "lytis", "fizinis_adresas", "kontaktinis_numeris") VALUES ("Leonardas Hofstadteris", "Vyras", "Woodcrest",0845738767);

Vykdant aukščiau pateiktą scenarijų, Leonardo kontaktinio numerio 0 atmetamas. Taip yra todėl, kad reikšmė bus traktuojama kaip skaitinė reikšmė, o pradžioje esantis nulis (0) atmetamas, nes jis nėra reikšmingas.

Siekiant išvengti tokių problemų, vertė turi būti įterpta į vieną kabutę, kaip parodyta toliau -

INSERT INTO "nariai" ("full_names", "lytis", "fizinis_adresas", "kontakto_numeris") VALUES ("Sheldon Cooper", "Male", "Woodcrest", "0976736763");

Pirmiau nurodytu atveju nulis (0) nebus atmestas

Stulpelių tvarkos keitimas neturi įtakos INSERT užklausai, kol teisingos reikšmės buvo susietos su tinkamais stulpeliais.

Žemiau pateikta užklausa parodo aukščiau pateiktą tašką.

INSERT INTO "nariai" ("kontakto_numeris", "lytis", "visi_vardai", "fizinis_adresas")VALUES ("0938867763", "Vyras", "Rajesh Koothrappali", "Woodcrest");

Aukščiau pateiktose užklausose buvo praleistas gimimo datos stulpelis, pagal numatytuosius nustatymus „MySQL“ įterps NULL reikšmes į stulpelius, kurie praleidžiami INSERT užklausoje.

Dabar įterpkime Leslie įrašą, kuriame pateikiama gimimo data. Datos reikšmė turėtų būti įtraukta į kabutes, naudojant formatą „YYYY-MM-DD“.

INSERT INTO "nariai" ("pilni_vardai", "gimimo_data", "lytis", "fizinis_adresas", "kontaktinis numeris") VALUES ("Leslie Winkle", "1984-02-14", "Vyras", "Woodcrest"," 0987636553");

Visos aukščiau pateiktos užklausos nurodė stulpelius ir susiejo juos su reikšmėmis įterpimo sakinyje. Jei pateikiame VISŲ lentelės stulpelių reikšmes, įterpimo užklausoje galime praleisti stulpelius.

Įterpkite Į „nariai“ VERTES (9 „Howard Wolowitz“, „Male“, „1981-08-24“, „SouthPark“, „P.O. Box 4563“, „0987786553“, „lwolowitzemail.me“);

Dabar naudokite teiginį SELECT, kad peržiūrėtume visas narių lentelės eilutes.SELECT * FROM `nariai`;

narystės skaičiuspilni_vardaiLytisGimimo datafizinis adresaspašto adresascontct_numberpaštu
1 Dženeta DžounsMoteris21-07-1980 Pirmosios gatvės sklypas Nr.4Privatus krepšys0759 253 542 Šis el. pašto adresas yra apsaugotas nuo šiukšlių. Norėdami jį peržiūrėti, turite įjungti JavaScript.
2 Janet Smith JonesMoteris23-06-1980 Melrose 123NULLNULLŠis el. pašto adresas yra apsaugotas nuo šiukšlių. Norėdami jį peržiūrėti, turite įjungti JavaScript.
3 Robertas FilasPatinas12-07-1989 3-ioji gatvė 34NULL12345 Šis el. pašto adresas yra apsaugotas nuo šiukšlių. Norėdami jį peržiūrėti, turite įjungti JavaScript.
4 Gloria WilliamsMoteris14-02-1984 2-oji gatvė 23NULLNULLNULL
5 Leonardas HofstadterisPatinasNULLWoodcrestNULL845738767 NULL
6 Šeldonas KuperisPatinasNULLWoodcrestNULL976736763 NULL
7 Rajeshas KootrappalisPatinasNULLWoodcrestNULL938867763 NULL
8 Leslie WinklePatinas14-02-1984 WoodcrestNULL987636553 NULL
9 Howardas WolowitzasPatinas24-08-1981 Pietų parkasP.O. 4563 dėžutė987786553 Šis el. pašto adresas yra apsaugotas nuo šiukšlių. Norėdami jį peržiūrėti, turite įjungti JavaScript.

Atkreipkite dėmesį, kad Leonardo Hofstadterio kontaktinis numeris nukrito (0) nuo kontaktinio numerio. Kiti kontaktiniai numeriai iš pradžių nenukrito iki nulio (0).

Įterpimas į lentelę iš kitos lentelės

Komanda INSERT taip pat gali būti naudojama įterpti duomenis į lentelę iš kitos lentelės. Pagrindinė sintaksė yra tokia, kaip parodyta žemiau.

INSERT INTO lentelė_1 SELECT * FROM lentelė_2;

Dabar pažiūrėkime į praktinį pavyzdį, demonstravimo tikslais sukursime fiktyvią filmų kategorijų lentelę. Naują kategorijų lentelę vadinsime kategorijų_archyvu. Lentelę sukuria žemiau parodytas scenarijus.

KURTI LENTELĘ "kategorijų_archyvas" ("kategorijos_id" int(11) AUTO_INCREMENT, "kategorijos_pavadinimas" varchar(150) DEFAULT NULL, "remarks" varchar(500) DEFAULT NULL, PRIMARY KEY ("category_id")

Vykdykite aukščiau pateiktą scenarijų, kad sukurtumėte lentelę.

Dabar įterpkime visas eilutes iš kategorijų lentelės į kategorijų archyvo lentelę. Žemiau parodytas scenarijus mums padeda tai pasiekti.

INSERT INTO „kategorijų_archyvas“ SELECT * FROM „kategorijos“;

Vykdant aukščiau pateiktą scenarijų, visos kategorijų lentelės eilutės įterpiamos į kategorijų archyvo lentelę. Atminkite, kad lentelių struktūros turi būti tokios pačios, kad scenarijus veiktų. Tvirtesnis scenarijus yra tas, kuris susieja stulpelių pavadinimus įterpimo lentelėje su lentelės, kurioje yra duomenų, pavadinimai.

Toliau pateikta užklausa parodo jos naudojimą.

INSERT INTO `categories_archive`(kategorijos_id,kategorijos_pavadinimas,pastabos) PASIRINKITE kategorijos_id,kategorijos_pavadinimas,remarks FROM `kategorijos';

Vykdoma SELECT užklausa

SELECT * FROM „kategorijų_archyvas“.

pateikia toliau pateiktus rezultatus.

Kategorijos_idkategorijos_pavadinimaspastabas
1 KomedijaFilmai su humoru
2 RomantiškasMeilės istorijos
3 EpinisSenovės filmų istorija
4 SiaubasNULL
5 Mokslinė fantastikaNULL
6 TrilerisNULL
7 VeiksmasNULL
8 Romantinė komedijaNULL
9 KarikatūrosNULL
10 KarikatūrosNULL

Santrauka

  • Komanda INSERT naudojama naujiems duomenims įtraukti į lentelę
  • Datos ir eilučių reikšmės turi būti pateiktos vienose kabutėse.
  • Skaitinių reikšmių kabutėse rašyti nereikia.
  • Komanda INSERT taip pat gali būti naudojama norint įterpti duomenis iš vienos lentelės į kitą.

Teiginys INSERT į lentelę įterpia naujus įrašus. Šiuo atveju stulpelių reikšmės gali būti pažodinės konstantos arba būti papildomos užklausos vykdymo rezultatas. Pirmuoju atveju kiekvienai eilutei įterpti naudojamas atskiras INSERT sakinys; antruoju atveju bus įterpta tiek eilučių, kiek grąžinama antrinėje užklausoje.

Operatoriaus sintaksė yra tokia:

    Įterpti Į [ (,...) ]

    (VERTĖS (,…))

  1. | (NUMATYTOSIOS VERTĖS)

Kaip matote iš pateiktos sintaksės, stulpelių sąrašas yra neprivalomas (tai rodo laužtiniai skliaustai sintaksės aprašyme). Jei jo trūksta, įterptų reikšmių sąrašas turi būti baigtas, ty pateikti visų lentelės stulpelių reikšmes. Tokiu atveju reikšmių tvarka turi atitikti tą, kuri nurodyta lentelės, į kurią įterpiamos eilutės, sakinyje CREATE TABLE. Be to, šios reikšmės turi būti tokio paties tipo kaip ir stulpeliai, kuriuose jos įvedamos. Pavyzdžiui, apsvarstykite galimybę įterpti eilutę į produktų lentelę, sukurtą naudojant šį teiginį CREATE TABLE:

    CREATE TABLE produktą

    maker char (1) NOT NULL,

    modelis varchar(4) NOT NULL,

    įveskite varchar(7) NOT NULL

Tarkime, kad į šią lentelę norite įtraukti kompiuterio modelį 1157 iš gamintojo B. Tai galima padaryti tokiu teiginiu:

    INSERT INTO Produktas

    VERTĖS ("B" , 1157 , "PC" );

Jei nurodote stulpelių sąrašą, galite pakeisti jų „natūralią“ tvarką:

    INSERT INTO Produktas (tipas, modelis, gamintojas)

    VERTĖS ("PC" , 1157 , "B" );

Atrodytų, tai visiškai nereikalinga funkcija, kuri tik dar labiau apsunkina dizainą. Tačiau jis laimi, jei stulpeliuose yra numatytosios vertės. Apsvarstykite šią lentelės struktūrą:

    KURTI LENTELĘ produktą_D

    maker char (1) NULL,

    modelis varchar(4) NULL,

    tipo varchar (7 ) NOT NULL NUMATYTOJI "PC"

Atkreipkite dėmesį, kad čia visų stulpelių reikšmės turi numatytąsias reikšmes (pirmieji du yra NULL, o paskutinis stulpelis yra tipas - PC). Dabar galėtume parašyti:

    INSERT INTO Product_D (modelis, gamintojas)

    VERTĖS(1157; "B");

Tokiu atveju trūkstama reikšmė įterpiant eilutę bus pakeista numatyta reikšme - PC. Atkreipkite dėmesį, kad jei CREATE TABLE sakinyje stulpeliui nesuteikiama numatytoji reikšmė ir nurodytas NOT NULL apribojimas, neleidžiantis tame lentelės stulpelyje naudoti NULL, tada daroma prielaida, kad numatytoji NULL reikšmė.

Kyla klausimas: ar galima nenurodyti stulpelių sąrašo ir vis dėlto naudoti numatytąsias reikšmes? Atsakymas yra taip. Norėdami tai padaryti, užuot aiškiai nurodę reikšmę, naudokite rezervuotą žodį DEFAULT :

    ĮTERPTI Į Produktą_D

    VERTĖS ("B" , 1158 , NUMATYTOJI NUMERIS );

Kadangi visi stulpeliai turi numatytąsias reikšmes, norėdami įterpti eilutę su numatytosiomis reikšmėmis, galite parašyti:

    ĮTERPTI Į Produktą_D

    VERTĖS (NUMATYTOJI, NUMATYTOJI, NUMATYTOJI);

Tačiau šiuo atveju yra speciali konstrukcija DEFAULT VALUES (žr. operatoriaus sintaksę), su kuria aukščiau esantis operatorius gali būti perrašytas į formą

    INSERT INTO Product_D NUMATYTOSIOS VERTĖS ;

Atkreipkite dėmesį, kad įterpiant eilutę į lentelę, pažymimi visi šiai lentelei taikomi apribojimai. Tai gali būti pirminio rakto arba unikalių indeksų apribojimai, CHECK apribojimai arba nuorodos vientisumo apribojimai. Jei koks nors apribojimas bus pažeistas, eilutės įterpimas bus atmestas. Dabar panagrinėkime antrinės užklausos naudojimo atvejį. Tarkime, į lentelę Produktas_D reikia įterpti visas eilutes iš lentelės Produktas, susijusias su asmeninių kompiuterių modeliais (tipas = 'PC'). Kadangi mums reikalingos reikšmės jau yra tam tikroje lentelėje, rankiniu būdu generuoti įterptas eilutes, pirma, neveiksminga ir, antra, gali leisti įvesties klaidas. Naudojant antrinę užklausą išsprendžiamos šios problemos:

Simbolio „*“ naudojimas antrinėje užklausoje šiuo atveju yra pagrįstas, nes stulpelių tvarka abiejose lentelėse yra vienoda. Jei taip nėra, stulpelių sąrašas turėtų būti taikomas INSERT sakinyje, antrinėje užklausoje arba abiejose, kurios atitiktų stulpelių tvarką:

Čia, kaip ir anksčiau, galite nurodyti ne visus stulpelius, jei norite naudoti esamas numatytąsias reikšmes, pvz.:

Tokiu atveju lentelės Product_D tipo stulpelis bus pakeistas numatytąją reikšme PC visose įterptose eilutėse.

Atminkite, kad naudojant antrinę užklausą, kurioje yra predikatas, bus įterpiamos tik tos eilutės, kurių predikato reikšmė yra TRUE (ne UNKNOWN !). Kitaip tariant, jei produkto lentelės tipo stulpelis būtų NULL, o ši reikšmė būtų keliose eilučių, tada tos eilutės nebūtų įterptos į lentelę Product_D.

Dirbtinė antrinės užklausos, kuri sudaro eilutę su UNION ALL sąlyga, naudojimo būdas leidžia įveikti vienos eilutės įterpimo į INSERT sakinį apribojimą, kai VALUES sąlygoje naudojamas eilutės konstruktorius. Taigi, jei mums reikia įterpti kelias eilutes naudojant vieną INSERT sakinį, galime parašyti:

    ĮTERPTI Į Produktą_D

    PASIRINKITE "B" AS gamintoją, 1158 AS modelį, "PC" AS tipą

    SĄJUNGOS VISI

    PASIRINKITE „C“, 2190, „Nešiojamas kompiuteris“

    SĄJUNGOS VISI

    PASIRINKITE "D" , 3219 , "Spausdintuvas" ;

Naudoti UNION ALL geriau, o ne UNION, net jei garantuojamas pasikartojančių eilučių nebuvimas, nes tokiu atveju nebus atliekamas joks patikrinimas siekiant pašalinti pasikartojančius duomenis.

Reikėtų pažymėti, kad kelių eilučių įterpimas naudojant eilučių konstruktorių jau yra įdiegtas Reliacinė duomenų bazių valdymo sistema (DBVS), sukurta Microsoft Corporation.Struktūrinė užklausų kalba) yra universali kompiuterinė kalba, naudojama duomenims reliacinėse duomenų bazėse kurti, keisti ir manipuliuoti. SQL serveris 2008. Esant tokiai galimybei, paskutinę užklausą galima perrašyti taip:

    ĮTERPTI Į produkto_D VERTES

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

    („C“, 2190, „nešiojamasis kompiuteris“),

Komanda prideda eilutes prie lentelės arba pagrindinio stalo vaizdas.

Sql INSERT komandos sintaksė

Įterpti komandos sintaksę


Pagrindiniai komandos INSERT raktiniai žodžiai ir parametrai
  • schema- leidimo identifikatorius, paprastai atitinkantis kurio nors vartotojo vardą
  • stalo vaizdas- lentelės, į kurią reikia įterpti eilutes, pavadinimas; jei nurodytas rodinys, eilutės įterpiamos į pagrindinę rodinio lentelę
  • subquery_1- antrinė užklausa, kurią serveris apdoroja taip pat, kaip ir rodinys
  • stulpelyje- lentelės arba rodinio stulpelis, į kurį įvedama kiekvienos įterptos eilutės reikšmė iš frazės VERTYBĖS arba antrinė užklausa; jei vienas iš lentelės stulpelių šiame sąraše yra praleistas, įterptos eilutės stulpelio reikšmė yra numatytoji stulpelio reikšmė, apibrėžta kuriant lentelę. Jei stulpelių sąrašas visiškai praleistas, sąlyga VERTYBĖS arba užklausa turi nustatyti visų lentelės stulpelių reikšmes
  • VERTYBĖS- apibrėžia reikšmių eilutę, kuri bus įterpta į lentelę arba rodinį; sakinyje turi būti apibrėžta prasmė VERTYBĖS kiekvienam stulpelių sąrašo stulpeliui
  • subquery_2- antrinė užklausa, kuri grąžina į lentelę įterptas eilutes; šios antrinės užklausos pasirinkimo sąraše turi būti tiek pat stulpelių, kiek ir teiginio stulpelių sąraše

pareiškimas su fraze VERTYBĖS prideda prie lentelės vieną eilutę. Šioje eilutėje yra frazės apibrėžtos reikšmės VERTYBĖS.
Pareiškimas su antrinė užklausa vietoj frazės VERTYBĖS prideda visas antrinės užklausos grąžintas eilutes į lentelę. Serveris apdoroja antrinė užklausa ir įterpia kiekvieną grąžintą eilutę į lentelę. Jei antrinė užklausa nepasirenka jokių eilučių, serveris į lentelę neįterpia jokių eilučių.
Papildoma užklausa gali pasiekti bet kurią lentelę arba rodinį, įskaitant tikslinę tvirtinimo lentelę . Serveris priskiria reikšmes laukams naujose eilutėse pagal vidinę stulpelių padėtį lentelėje ir frazės reikšmių tvarką VERTYBĖS arba užklausų pasirinkimo sąraše. Jei stulpelių sąraše trūksta stulpelių, serveris priskiria jiems numatytąsias reikšmes, nustatytas kuriant lentelę. Jei kuris nors iš šių stulpelių turi NOT NULL apribojimą, serveris pateikia klaidą, nurodantį, kad apribojimas buvo pažeistas, ir nutraukia INSERT teiginį.
Išdavus INSERT teiginį, įjungiamas bet koks lentelėje nurodytas INSERT trigeris.

INSERT INTO 1 pavyzdys

INSERT INTO dept VERTYBĖS(50, "PRODUKTAI", "SAN FRANCIKA");

INSERT INTO Klientai (miestas, cname, cnum) VERTYBĖS(„Londonas“, „Hoffmanas“, 2001 m.);

INSERT INTO 2 pavyzdys
Ši komanda į premijų lentelę nukopijuoja įmonės darbuotojų, kurių komisiniai viršija 25% pajamų, duomenis:

INSERT INTO premija PASIRINKITE emalį, darbą, sal, komunikaciją FROM emp WHERE comm > 0,25 * sal;

INSERT INTO 3 pavyzdys
Jei reikia įdėti NULL-value, turite nurodyti ją kaip normalią vertę taip:

INSERT INTO Pardavėjų VERTYBĖS (1001,'Puvelimas',NULL,12);

INSERT INTO 4 pavyzdys
Komanda gali būti naudojama norint gauti reikšmes iš vienos lentelės ir įdėti jas į kitą naudojant užklausą. Norėdami tai padaryti, pakanka pakeisti sakinį VERTYBĖSį atitinkamą prašymą:

INSERT INTO Londonstaff SELECT * FROM Pardavėjai WHERE miestas = 'Londonas';

MySQL INSERT

Norėdami įterpti naujas eilutes į MySQL duomenų bazę, naudokite INSERT komanda, komandų pavyzdžiai pateikiami žemiau:
INSERT INTO 1 pavyzdys.
Naujos eilutės įterpimas į lentelę lentelės_pavadinimas.

INSERT INTO

INSERT INTO 2 pavyzdys.
Naujos eilutės įterpimas į lentelę lentelės_pavadinimas, nurodantis duomenų įterpimą į mums reikalingus stulpelius.

INSERT INTO lentelės_pavadinimas VALUES('1','165','0','vardas');

Duomenų bazėje MySQL Viena komanda galima įterpti kelias naujas eilutes.
INSERT INTO 3 pavyzdys.
Kelių eilučių įterpimas į lentelę lentelės_pavadinimas.

INSERT INTO lentelės_pavadinimas (tbl_id, chislo, chislotwo, pavadinimas) VERTĖS ('1','159','34','name1'), ('2','14','61','name2'), ('3 ','356','8','vardas3');

Paskutinis atnaujinimas: 2017-07-13

Norėdami pridėti duomenų, naudokite komandą INSERT, kuri turi tokią formalią sintaksę:

ĮTERPTI lentelės_pavadinimą [(stulpelio_sąrašas)] VERTES (1 reikšmė, 2 vertė, ... vertėN)

Pirmiausia pateikiamas reiškinys INSERT INTO, tada skliausteliuose galite nurodyti kableliais atskirtą stulpelių, į kuriuos reikia įtraukti duomenis, sąrašą, o pabaigoje po žodžio VALUES pateikiamos stulpelių vertės, kurias reikia pridėti. skliausteliuose.

Pavyzdžiui, tarkime, kad anksčiau buvo sukurta ši duomenų bazė:

KURTI DUOMENŲ BAZĘ productsdb; GO USE productsdb; KURTI LENTELĘ Produktus (ID INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Gamintojas NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Pridėkite vieną eilutę naudodami komandą INSERT:

ĮTERPTI produktų VERTES („iPhone 7“, „Apple“, 5, 52000)

Sėkmingai įvykdžius „SQL Server Management Studio“, pranešimo lauke turėtų pasirodyti pranešimas „1 eilutė(s) paveikta“:

Verta manyti, kad stulpelių reikšmės skliausteliuose po raktinio žodžio VALUES perduodamos tokia tvarka, kokia jos deklaruojamos. Pavyzdžiui, aukščiau esančiame sakinyje CREATE TABLE galite pamatyti, kad pirmasis stulpelis yra ID. Bet kadangi jam nurodytas atributas IDENTITY, šio stulpelio reikšmė generuojama automatiškai ir gali būti praleista. Antrasis stulpelis reiškia produkto pavadinimą, todėl pirmoji reikšmė, eilutė „iPhone 7“, bus perduota į tą stulpelį. Antroji reikšmė – eilutė „Apple“ bus perduota trečiam stulpeliui Gamintojas ir pan. Tai reiškia, kad reikšmės perduodamos į stulpelius taip:

    Produkto pavadinimas: "iPhone 7"

    Gamintojas: "Apple"

Be to, įvesdami reikšmes galite nurodyti tiesioginius stulpelius, į kuriuos bus įtrauktos reikšmės:

INSERT INTO Produktų (produkto pavadinimas, kaina, gamintojas) VERTĖS („iPhone 6S“, 41000, „Apple“)

Čia reikšmė nurodoma tik trims stulpeliams. Be to, dabar reikšmės perduodamos stulpelių tvarka:

    Produkto pavadinimas: "iPhone 6S"

    Gamintojas: "Apple"

Nenurodytiems stulpeliams (šiuo atveju ProductCount) bus pridėta numatytoji reikšmė, jei nurodytas atributas DEFAULT, arba NULL reikšmė. Tačiau nenustatyti stulpeliai turi būti negaliojantys arba turėti atributą DEFAULT.

Taip pat galime pridėti kelias eilutes vienu metu:

ĮTRAUKTI PRODUKTŲ VERTES („iPhone 6“, „Apple“, 3, 36000), („Galaxy S8“, „Samsung“, 2, 46000), („Galaxy S8 Plus“, „Samsung“, 1, 56000)

Tokiu atveju prie lentelės bus pridėtos trys eilutės.

Be to, pridėdami galime nurodyti, kad stulpelis turėtų turėti numatytąją reikšmę naudojant DEFAULT raktinį žodį arba NULL reikšmę:

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

Tokiu atveju bus naudojama numatytoji stulpelio ProductCount reikšmė (jei ji nustatyta, jei ne, tada NULL).

Jei visuose stulpeliuose yra NUMATYTOJI atributas, nurodantis numatytąją reikšmę, arba jie negalioja, galite įterpti visų stulpelių numatytąsias reikšmes:

INSERT INTO Products NUMATYTOSIOS VERTĖS

Bet jei paimsime lentelę Produktai, tokia komanda nepavyks su klaida, nes keli laukai neturi DEFAULT atributo ir tuo pačiu neleidžia NULL reikšmės.

Dalintis