SQL INSERT INTO SELECT priekšraksts. SQL INSERT INTO SELECT priekšraksts Veselu rindu pievienošana

Papildus iepriekš apspriestajam SELECT priekšrakstam datu manipulācijas valoda (DML) satur trīs citus paziņojumus: INSERT, UPDATE un DELETE. Tāpat kā SELECT priekšraksts, šie trīs priekšraksti darbojas vai nu tabulās, vai skatos. Šajā rakstā ir apskatīts INSERT paziņojums, un pārējie divi paziņojumi ir apskatīti nākamajā rakstā.

INSERT paziņojumu ievieto tabulā rindas (vai rindu daļas). Ir divas dažādas šīs instrukcijas formas:

INSERT cilnes_nosaukums [(col_list)] NOKLUSĒJUMA VĒRTĪBAS | VĒRTĪBAS (( DEFAULT | NULL | izteiksme ) [ ,...n]) INSERT INTO cilnes_nosaukums | view_name [(col_list)] (select_statement | execute_statement) Sintakses konvencijas

Pirmā instrukcijas forma ļauj tabulā ievietot vienu rindu (vai tās daļu). Otrā INSERT priekšraksta forma ļauj tabulā ievietot SELECT priekšraksta rezultātu kopu vai saglabāto procedūru, ko izpilda priekšraksts EXECUTE. Saglabātajai procedūrai ir jāatgriež dati, kas jāievieto tabulā. Lietojot kopā ar INSERT priekšrakstu, SELECT priekšraksts var atlasīt vērtības no citas vai tās pašas tabulas, kurā tiek ievietoti dati, ja vien atbilstošo kolonnu datu tipi ir saderīgi.

Abām formām katras ievietotās vērtības datu tipam ir jābūt saderīgam ar atbilstošās tabulas kolonnas datu tipu. Visi virknes un pagaidu dati jāiekļauj pēdiņās; Skaitliskās vērtības nav jāliek pēdiņās.

Vienas rindas ievietošana

Abām INSERT priekšraksta formām kolonnu saraksta skaidra norādīšana nav obligāta. Kolonnu nenorādīšana ir tas pats, kas tabulā norādīt visas kolonnas.

DEFAULT VALUES parametrs ievieto noklusējuma vērtības visām kolonnām. Kolonnas ar datu tipu TIMESTAMP vai IDENTITY tiek ievietotas pēc noklusējuma ar vērtībām, kuras sistēma automātiski ģenerē. Citu datu tipu kolonnām tiek ievietota atbilstošā noklusējuma vērtība, kas nav nulle, ja tā ir pieejama, vai NULL, ja tā ir pieejama. Ja kolonna nepieļauj nulles vērtības un tai nav noteikta noklusējuma vērtība, INSERT priekšraksts neizdodas un tiek parādīts ziņojums.

Tālāk sniegtajā piemērā tiek ievietotas rindas SampleDb datu bāzes darbinieku tabulā, demonstrējot INSERT priekšraksta izmantošanu, lai datubāzē ievietotu nelielu datu apjomu:

IZMANTOT SampleDb; INSERT INTO Darbinieku VĒRTĪBAS (34990, "Andrejs", "Batonovs", "d1"); INSERT INTO Darbinieku VĒRTĪBAS (38640, "Aleksejs", "Vasin", "d3");

Ir divi dažādi veidi, kā ievietot vērtības jaunā rindā. Tālāk esošajā piemērā INSERT priekšraksts skaidri izmanto NULL atslēgvārdu un ievieto NULL vērtību attiecīgajā kolonnā:

IZMANTOT SampleDb; INSERT INTO Darbinieku VĒRTĪBAS (34991, "Andrejs", "Batonovs", NULL);

Lai ievietotu vērtības dažās (bet ne visās) tabulas kolonnās, šīs kolonnas parasti ir skaidri jānorāda. Nenorādītām kolonnām ir jāatļauj NULL vērtības vai tām ir jābūt definētai noklusējuma vērtībai.

IZMANTOT SampleDb; INSERT INTO Darbinieka(ID, Vārds, Uzvārds) VĒRTĪBAS (34992, "Andrijs", "Batonovs");

Iepriekšējie divi piemēri ir līdzvērtīgi. Tabulā Darbinieks vienīgā kolonna, kurā ir atļautas NULL vērtības, ir sleja DepartmentNumber, un visas pārējās kolonnas tika atspējotas ar NOT NULL klauzulu priekšrakstā CREATE TABLE.

Vērtību secība iekšā VALUES piedāvājums INSERT priekšraksti var atšķirties no secības, kas norādīta priekšrakstā CREATE TABLE. Šajā gadījumā to secībai ir jāatbilst secībai, kādā kolonnu sarakstā ir norādītas atbilstošās kolonnas. Tālāk ir sniegts piemērs datu ievietošanai citā secībā nekā sākotnējā:

IZMANTOT SampleDb; INSERT INTO Darbinieks(DepartamentNumber, Uzvārds, Id, Vārds) VĒRTĪBAS ("d1", "Batonovs", 34993, "Andrijs");

Vairāku rindu ievietošana

Otrā INSERT priekšraksta forma tabulā ievieto vienu vai vairākas rindas, kas atlasītas ar apakšvaicājumu. Tālāk esošajā piemērā ir parādīts, kā ievietot rindas tabulā, izmantojot INSERT priekšraksta otro formu. Šajā gadījumā tiek izpildīts vaicājums, lai atlasītu Maskavā esošo nodaļu numurus un nosaukumus, un iegūtā rezultātu kopa tiek ielādēta jaunā iepriekš izveidotā tabulā.

Jaunajā Maskavas departamenta tabulā, kas izveidota iepriekš minētajā piemērā, ir tādas pašas kolonnas kā esošajā departamenta tabulā, izņemot trūkstošo kolonnu Atrašanās vieta. Apakšvaicājums priekšrakstā INSERT atlasa visas Departamenta tabulas rindas, kurām kolonnas Atrašanās vieta vērtība ir "Maskava", kuras pēc tam tiek ievietotas jaunajā tabulā, kas izveidota vaicājuma sākumā.

Tālāk esošajā piemērā ir parādīts cits veids, kā ievietot rindas tabulā, izmantojot INSERT priekšraksta otro formu. Šajā gadījumā tiek izpildīts vaicājums, lai atlasītu personāla numurus, projektu numurus un projekta sākuma datumus visiem darbiniekiem ar amatu “Vadītājs”, kuri strādā projektā p2, un pēc tam ielādētu iegūto rezultātu kopu jaunā tabulā, kas izveidota vaicājums:

IZMANTOT SampleDb; CREATE TABLE 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 = "Manager";

Pirms rindu ievietošanas, izmantojot INSERT priekšrakstu, tabulas MoscowDepartment un ManagerTeam (iepriekš esošajos piemēros) bija tukšas. Ja tabula jau pastāvēja un tajā bija rindas ar datiem, tad tai tiks pievienotas jaunas rindas.

Iepriekšējās sadaļās mēs apskatījām darbu, kas saistīts ar datu izgūšanu no iepriekš izveidotām tabulām. Tagad ir pienācis laiks izdomāt, kā mēs varam izveidot/dzēst tabulas, pievienot jaunus ierakstus un dzēst vecos. Šiem nolūkiem iekšā SQL Ir tādi operatori kā: IZVEIDOT- izveido tabulu, ALTER- maina tabulas struktūru, NOLIETOT- izdzēš tabulu vai lauku, IEVIETOT- pievieno datus tabulai. Sāksim iepazīties ar šo operatoru grupu no operatora IEVIETOT.

1. Veselu rindu pievienošana

Kā norāda nosaukums, operators IEVIETOT izmanto, lai datu bāzes tabulā ievietotu (pievienotu) rindas. Pievienošanu var veikt vairākos veidos:

  • - pievienojiet vienu pilnu rindu
  • - pievienot rindas daļu
  • - pievienot vaicājuma rezultātus.

Tātad, lai pievienotu tabulai jaunu rindu, mums ir jānorāda tabulas nosaukums, jāuzskaita kolonnu nosaukumi un jānorāda katras kolonnas vērtība, izmantojot konstrukciju INSERT INTO tabulas_nosaukums (lauks1, lauks2...) VĒRTĪBAS (vērtība1, vērtība2...). Apskatīsim piemēru.

INSERT INTO Pārdevēju (ID, adrese, pilsēta, pārdevēja_nosaukums, valsts) VĒRTĪBAS("6", "1st Street", "Los Angeles", "Harry Monroe", "USA")

Varat arī mainīt kolonnu nosaukumu secību, taču tajā pašā laikā jums ir jāmaina parametra vērtību secība VĒRTĪBAS.

2. Daļas līniju pievienošana

Iepriekšējā piemērā, izmantojot operatoru IEVIETOT mēs esam skaidri atzīmējuši tabulas kolonnu nosaukumus. Izmantojot šo sintaksi, mēs varam izlaist dažas kolonnas. Tas nozīmē, ka jūs ievadāt vērtības dažām kolonnām, bet nenodrošiniet tās citām. Piemēram:

INSERT INTO Pārdevēju (ID, pilsēta, Pārdevēja_nosaukums) VĒRTĪBAS("6", "Losandželosa", "Harijs Monro")

Šajā piemērā mēs nenorādījām vērtību divām kolonnām Adrese Un Valsts. Varat izslēgt dažas kolonnas no paziņojuma INSERT INTO, ja tas pieļauj tabulas definīciju. Šajā gadījumā ir jāizpilda viens no nosacījumiem: šī kolonna ir definēta kā derīga NULL(jebkuras vērtības neesamība) vai tabulas definīcijā norādītā noklusējuma vērtība. Tas nozīmē, ka, ja vērtība nav norādīta, tiks izmantota noklusējuma vērtība. Ja tabulā trūkst kolonnas, kas neļauj rindās parādīties vērtībām NULL un nav definēta noklusējuma vērtība, DBVS ģenerēs kļūdas ziņojumu un rinda netiks pievienota.

3. Atlasīto datu pievienošana

Iepriekšējā piemērā mēs ievietojām datus tabulās, manuāli ievadot tos vaicājumā. Tomēr operators INSERT INTOļauj automatizēt šo procesu, ja vēlamies ievietot datus no citas tabulas. Šim nolūkam SQL ir tāda konstrukcija kā INSERT INTO... ATLASĪT.... Šis dizains ļauj vienlaikus atlasīt datus no vienas tabulas un ievietot tos citā. Pieņemsim, ka mums ir cita tabula Pārdevēji_ES ar mūsu preču pārdevēju sarakstu Eiropā un mums tie jāpievieno vispārējai tabulai Pārdevēji. Šo tabulu struktūra ir vienāda (vienāds kolonnu skaits un vienādi nosaukumi), taču dati atšķiras. Lai to izdarītu, mēs varam uzrakstīt šādu vaicājumu:

INSERT INTO Pārdevēji (ID, adrese, pilsēta, pārdevēja_nosaukums, valsts) ATLASĪTID, adrese, pilsēta, pārdevēja_nosaukums, valsts NO Pārdevēji_ES

Jums jāpievērš uzmanība, lai neatkārtotos iekšējo atslēgu vērtības (lauks ID), pretējā gadījumā radīsies kļūda. Operators ATLASĪT var ietvert arī ieteikumus KUR lai filtrētu datus. Jāņem arī vērā, ka DBVS nepievērš uzmanību paziņojumā ietverto kolonnu nosaukumiem ATLASĪT, viņai ir svarīga tikai kārtība, kādā tie ir sakārtoti. Tāpēc dati pirmajā norādītajā kolonnā, kas tika atlasīti sakarā ar ATLASĪT, jebkurā gadījumā tiks aizpildīta tabulas pirmajā ailē Pārdevēji, norādīts aiz operatora INSERT INTO, neatkarīgi no lauka nosaukuma.

4. Datu kopēšana no vienas tabulas uz otru

Bieži vien, strādājot ar datu bāzēm, ir nepieciešams izveidot jebkuru tabulu kopijas dublēšanas vai modifikācijas nolūkos. Lai izveidotu pilnu tabulas kopiju, SQL nodrošina atsevišķu paziņojumu IZVĒLĒTIES. Piemēram, mums ir jāizveido tabulas kopija Pārdevēji, jums būs jāraksta pieprasījums šādi:

SELECT * INTO Sellers_new FROM Pārdevēji

Atšķirībā no iepriekšējā dizaina INSERT INTO... ATLASĪT... Kad dati tiek pievienoti esošai tabulai, dizains kopē datus jaunajā tabulā. Varat arī teikt, ka pirmā konstrukcija importē datus, bet otrā eksportē. Izmantojot dizainu IZVĒLĒTIES ... UZ ... NO ... Jāņem vērā sekojošais:

  • - operatorā varat izmantot jebkurus teikumus ATLASĪT, piemēram, GROUP BY Un ŅEMOT
  • - Varat izmantot savienojumu, lai pievienotu datus no vairākām tabulām
  • - datus var pievienot tikai vienai tabulai neatkarīgi no tā, no cik tabulām tie ņemti.

Šis priekšraksts tabulai pievieno vienu vai vairākus ierakstus (veic pievienošanas vaicājumu).

Sintakse

Pieprasīt pievienot vairākus ierakstus:

INSERT INTO gala_objekts [(lauks1[, lauks2[, ...]])]
IZVĒLĒTIES [ avots.]lauks1[, lauks2[, ...]
NO tabula_izteiksme

Pieprasījums pievienot vienu ierakstu:

INSERT INTO gala_objekts [(lauks1[, lauks2[, ...]])]
VĒRTĪBAS ( lauks1[, lauks2[, ...])

Paziņojums INSERT INTO sastāv no šādiem elementiem:

daļa

Apraksts

gala_objekts

Tabulas vai vaicājuma nosaukums, kurā tiek pievienoti ieraksti.

lauks1, lauks2

Pēc strīda gala_objekts- to lauku nosaukumi, kuriem tiek pievienoti dati; pēc strīda avots- to lauku nosaukumi, no kuriem tiek iegūti dati.

ārējā_datu bāze

Ceļš uz ārējo datu bāzi. Ceļa aprakstu skatiet rakstā par IN klauzulu.

avots

Tabulas vai vaicājuma nosaukums, no kura tiek kopēti ieraksti.

tabula_izteiksme

Viens vai vairāki tabulu nosaukumi, no kuriem vēlaties izgūt ierakstus. Šis arguments var būt atsevišķas tabulas nosaukums, rezultāta izteiksme, kas izveidota, izmantojot INNER JOIN, LEFT JOIN vai RIGHT JOIN, vai saglabātu vaicājumu.

vērtība1, vērtība2

Vērtības, kas tiks pievienotas noteiktiem jaunā ieraksta laukiem. Katra vērtība tiek ievietota laukā, kas atbilst tās pozīcijai sarakstā: vērtība1 pievienots lauks1 jauns ieraksts, vērtība2- V lauks2 utt. Vērtības ir jāatdala ar komatu un teksta lauki jāievieto pēdiņās (" ").

Piezīmes

Paziņojums INSERT INTO var pievienot tabulai vienu ierakstu, izmantojot iepriekš minēto sintaksi. Šajā gadījumā jūs norādāt nosaukumus un vērtības katram ieraksta laukam. Ir jānorāda visi ieraksta lauki, kuriem ir piešķirtas vērtības, un atbilstošās vērtības. Ja nenorādīsiet lauka vērtību, tai tiks piešķirta noklusējuma vērtība vai NULL. Ieraksti tiek pievienoti tabulas beigās.

Paziņojumu INSERT INTO var izmantot arī, lai pievienotu ierakstu kopu no citas tabulas vai vaicājuma, izmantojot klauzulu SELECT... FROM, kā parādīts iepriekš (skatiet sadaļu Vaicājuma sintakse vairāku ierakstu pievienošanai). Šajā gadījumā klauzula SELECT norāda laukus, kas jāpievieno norādītajam gala_objekts.

Avots vai gala_objekts var būt tabula vai vaicājums. Kad tiek sniegts vaicājums, Microsoft Access datu bāzes programma pievieno ierakstus visām tabulām, kuras tā atgriež.

Priekšraksta INSERT INTO izmantošana nav obligāta. Ja norādīts, tam ir jābūt pirms SELECT priekšraksta.

Ja mērķa tabulā ir primārā atslēga, pārliecinieties, vai vērtības, ko pievienojat vienam vai vairākiem primārās atslēgas laukiem, ir unikālas un atšķiras no NULL; pretējā gadījumā ieraksti netiks pievienoti.

Ja ieraksti ir pievienoti tabulai ar lauku Skaitītājs un vēlaties tos pārnumurēt, neiekļaujiet vaicājumā lauku Skaitītājs. Iekļaujiet vaicājumā lauku Skaitītājs, ja vēlaties saglabāt sākotnējās vērtības no lauka.

Varat pievienot ierakstus tabulai citā datu bāzē, izmantojot IN klauzulu.

Lai izveidotu tabulu, izmantojiet priekšrakstu SELECT... INTO, lai veiktu vaicājumu, lai izveidotu tabulu.

Pirms pievienošanas vaicājuma izpildes izmantojiet atlases vaicājumu ar tādiem pašiem atlases kritērijiem, lai izmantotu rezultātus, lai noteiktu, kuri ieraksti tiks pievienoti.

Pievienošanas vaicājums kopē ierakstus no vienas vai vairākām tabulām uz citu tabulu. Šajā gadījumā tabulas, kurās ir pievienotie ieraksti, paliek nemainīgas.

Tā vietā, lai pievienotu ierakstus no citas tabulas, varat iestatīt katra lauka vērtību atsevišķā jaunā ierakstā, izmantojot klauzulu VALUES. Ja lauku saraksts ir izlaists, klauzulā VALUES ir jāiekļauj atbilstošās vērtības katram tabulas laukam; pretējā gadījumā INSERT darbība neizdosies. Katram papildu ierakstam, ko vēlaties izveidot, izmantojiet priekšrakstu INSERT INTO kopā ar klauzulu VALUES.

Izmantojot SQL, varat kopēt informāciju no vienas tabulas uz citu.

Paziņojums INSERT INTO SELECT kopē datus no vienas tabulas un ievieto tos esošajā tabulā.

SQL INSERT INTO SELECT priekšraksts,

INSERT INTO SELECT priekšraksts atlasa datus no vienas tabulas un ievieto tos esošajā tabulā. Nevienas esošās rindas mērķa tabulā netiek mainītas.

SQL INSERT INTO SELECT, sintakse

Mēs varam kopēt visas kolonnas no vienas tabulas uz citu esošu tabulu:

INSERT INTO tabula2
ATLASĪT * NO tabula1;

Vai arī mēs varam kopēt tikai vajadzīgās kolonnas uz citu esošu tabulu:

INSERT INTO tabula2
(kolonnas_nosaukums(-i))
ATLASĪT kolonnas_nosaukums(-i)
NO tabula1;

Datu bāzes demonstrācijas versija

Šajā apmācībā mēs izmantosim labi zināmo Northwind datubāzi.

Tālāk ir sniegta atlase no tabulas "Klienti":

Lietotāja IDKlienta vārdsKontaktpersonaAdresepilsētaPasta indekssValsts
1 Alfrēds Futerkiste Marija Andersa Obere Str. 57 Berlīne 12209 Vācija
2 Ana Trujillo Emparedados y helados Ana Truhiljo Avda. de la Constitucion 2222 Meksika D.F. 05021 Meksika
3 Antonio Moreno Takerija Antonio Moreno Mataderos 2312 Meksika D.F. 05023 Meksika

Un izvēle no tabulas "Piegādātāji":

SQL INSERT INTO SELECT, piemēri

Kopējot tikai dažas kolonnas no “Piegādātāji” mapē “Klienti”:

Tikai Vācijas piegādātāju kopēšana "Klientiem".

Sveiki visiem! Šajā rakstā tiks apspriests, kā jūs varat pievienot datus tabulai Microsoft SQL Server, ja jau esat vismaz nedaudz iepazinies ar T-SQL valodu, tad droši vien sapratāt, ka tagad mēs runāsim par INSERT priekšrakstu, kā arī par to, kā to var izmantot datu pievienošanai tabulai.

Sāksim, kā parasti, ar nelielu teoriju.

INSERT priekšraksts T-SQL

IEVIETOT ir T-SQL instrukcija, kas paredzēta datu pievienošanai tabulai, t.i. jaunu ierakstu veidošana. Šo instrukciju var izmantot gan vienas rindas pievienošanai tabulai, gan datu lielapjoma ievietošanai. INSERT priekšrakstam ir nepieciešama atļauja ievietot datus ( IEVIETOT) uz mērķa tabulu.

Ir vairāki veidi, kā izmantot INSERT priekšrakstu par datu daļu, kas jāievieto:

  • Konkrētu ievietojamo vērtību uzskaitījums;
  • Datu kopas norādīšana kā SELECT vaicājums;
  • Datu kopas norādīšana procedūras izsaukuma veidā, kas atgriež tabulas datus.

Vienkāršota sintakse

INSERT [tabula] ( kolonnu saraksts...) VĒRTĪBAS ( vērtību saraksts...) Vai IZVĒLĒTIES pieprasījuma paraugs Vai IZPILDĪT procedūru

  • INSERT INTO ir komanda datu pievienošanai tabulai;
  • Tabula ir mērķa tabulas nosaukums, kurā vēlaties ievietot jaunus ierakstus;
  • Kolonnu saraksts ir tabulas kolonnu nosaukumu saraksts, kurā tiks ievietoti dati, atdalot tos ar komatiem;
  • VALUES ir tabulas vērtību konstruktors, ar kuru mēs norādām vērtības, kuras ievietosim tabulā;
  • Vērtību saraksts ir vērtības, kas tiks ievietotas, atdalītas ar komatiem. Tie ir uzskaitīti tādā secībā, kādā kolonnas parādās kolonnu sarakstā;
  • SELECT ir vaicājums, lai atlasītu datus, ko ievietot tabulā. Rezultātu kopai, ko atgriež vaicājums, ir jāatbilst kolonnu sarakstam;
  • EXECUTE ir procedūras izsaukums, lai iegūtu datus ievietošanai tabulā. Rezultātu kopai, ko atgriež saglabātā procedūra, ir jāatbilst kolonnu sarakstam.

Apmēram šādi izskatās priekšraksta INSERT INTO vienkāršotā sintakse; vairumā gadījumu šādi tiks pievienoti tabulām jauni ieraksti.

Kolonnu saraksts, kurās ievietosiet datus, nav jāraksta, un tādā gadījumā to secība tiks noteikta, pamatojoties uz faktisko kolonnu secību tabulā. Šī secība ir jāatceras, kad norādāt vērtības, kas jāievieto, vai ierakstāt atlasāmo vaicājumu. Personīgi es iesaku jums joprojām norādīt to kolonnu sarakstu, kurām plānojat pievienot datus.

Jāatceras arī, ka attiecīgi kolonnu sarakstā un vērtību sarakstā ir jābūt tā sauktajām obligātajām kolonnām, kuras nedrīkst saturēt NULL vērtību. Ja jūs tos nenorādīsit un kolonnai nav noklusējuma vērtības, radīsies kļūda.

Vēlos arī atzīmēt, ka ievietojamo vērtību datu tipam ir jāatbilst tās kolonnas datu tipam, kurā šī vērtība tiks ievietota, vai vismaz jāatbalsta netieša konvertēšana. Bet es iesaku jums kontrolēt datu tipu ( formātā) vērtības gan vērtību sarakstā, gan vaicājumā SELECT.

Pietiek teorijas, pāriesim pie prakses.

Sākotnējie dati

Lai tabulai pievienotu datus, mums ir nepieciešama pati tabula, tāpēc izveidosim to un mēģināsim tai pievienot ierakstus.

Piezīme! Visi piemēri tiks palaisti programmā Microsoft SQL Server 2016 Express.

IZVEIDOT TABULU TestTabula (IDENTITĀTE(1,1) NOT NULL, (100) NOT NULL, NOT NULL)

Mūsu testa tabulā būs produktu saraksts ar cenām.

Arī piemēros mēs izmantosim procedūru, kas atgriež tabulas vērtību, lai tabulai pievienotu datus, tāpēc izveidosim arī to.

IZVEIDOT PROCEDŪRU Pārbaudes procedūra KĀ SĀKT ATLASĪT Produkta nosaukumu, cenu NO Pārbaudes tabulas BEIGAS

Piemēram, tas atgriezīs datus no jaunizveidotās tabulas TestTable.

Piezīme!

Kā jūs saprotat, šī materiāla lasīšana nozīmē, ka jums ir zināmas zināšanas par T-SQL valodu, tādēļ, ja kaut kas jums nav skaidrs, iesaku iepazīties ar šādiem materiāliem:

1. piemērs — jauna ieraksta pievienošana tabulai, izmantojot tabulas vērtību konstruktoru

Vispirms mēģināsim pievienot vienu ierakstu un uzreiz paskatīsimies uz rezultātu, t.i. Uzrakstīsim pieprasījumu pēc parauga.

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

Jūs redzat, ka aiz tabulas nosaukuma mēs uzskaitījām to kolonnu nosaukumus, kurām pievienosim datus, atdalot ar komatiem, pēc tam norādījām atslēgvārdu VĒRTĪBAS un arī iekavās tādā pašā secībā, atdalot ar komatiem, mēs ierakstījām vērtības, kuras vēlamies ievietot.

Pēc INSERT priekšraksta es uzrakstīju SELECT priekšrakstu un atdalīju tos ar priekšrakstu GO.

Tagad iedomāsimies, ka mums jāpievieno dažas rindiņas. Par to mēs uzrakstīsim šādu pieprasījumu.

INSERT INTO TestTable(Produkta nosaukums, cena) VĒRTĪBAS ("Dators", 100), ("Tastatūra", 20), ("Monitors", 50) GO SELECT * FROM TestTable


2. piemērs — jaunu rindu pievienošana tabulai, izmantojot SELECT vaicājumu

Ļoti bieži tabulai ir jāpievieno daudz datu, piemēram, pamatojoties uz atlases vaicājumu, t.i. ATLASĪT. Lai to izdarītu, VALUES vietā mums vienkārši jānorāda pieprasījums.

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


Šajā piemērā mēs uzrakstījām SELECT vaicājumu, kas atgriež datus no tabulas TestTable, bet ne visus tos, bet tikai tos, kuru ID ir lielāks par 2. Un rezultāts tika ievietots tajā pašā TestTable tabulā.

Kā piemēru tam, kā tabulai var pievienot ierakstus, nenorādot kolonnu sarakstu, uzrakstīsim citu datu ievietošanas vaicājumu, kas darīs tieši to pašu, ko iepriekšējais vaicājums, tikai tajā netiks uzskaitītas ievietojamās kolonnas.

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


Šajā gadījumā mēs esam pārliecināti, ka tabulā TestTable pirmā kolonna ir ProductName, bet otrā ir Cena, tāpēc mēs varam atļauties to rakstīt šādā veidā. Bet, atkal, praksē labāk ir norādīt kolonnu sarakstu.

Ja pamanījāt, visos piemēros es nenorādīju kolonnu Id, bet mums tā ir, nekādas kļūdas nav notikušas, jo šai kolonnai ir rekvizīts IDENTITY, tā automātiski ģenerē identifikatorus, tāpēc datu ievietošanu šādā kolonnā vienkārši nevar izdarīt.

3. piemērs — jaunu ierakstu pievienošana tabulai, izmantojot saglabātu procedūru

Tagad ievietosim tabulā datus, kurus saglabātā procedūra mums atgriezīs. Šeit nozīme ir vienāda, VĒRTĪBU un pieprasījuma vietā mēs norādām procedūras izsaukumu. Bet, kā jūs saprotat, procedūras atgriezto kolonnu secībai un skaitam ir stingri jāatbilst ievietojamo kolonnu sarakstam ( pat ja kolonnu saraksts nav norādīts).

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


Es ceru, ka šis materiāls palīdzēja jums saprast norādījumus. INSERT INTO, un tas ir viss, kas man pagaidām ir!