T-SQL pamati. DML. Transact-SQL - datu ievietošana Datu bāzes demonstrācijas versija

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 ceļi ievadot vērtības jauna līnija. 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 pieprasīts atlasīt Maskavā esošo nodaļu numurus un nosaukumus, un iegūtā rezultātu kopa tiek ielādēta jauns galds, izveidota agrāk.

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.

Sveiki visiem! Šajā rakstā tiks apspriests, kā jūs varat pievienot datus tabulai pie Microsoft SQL serveris 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. Šī instrukcija 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 tie nav norādīti 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 valoda, tādēļ, ja jums kaut kas 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 paziņojuma es uzrakstīju SELECT paziņojums un tos atdalīja GO komanda.

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 >


IN šajā piemērā mēs rakstījām ATLASĪT vaicājumu, kas atgriež datus no tabulas TestTable, bet ne visus, bet tikai tos, kuru identifikators 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


ceru, šo materiālu palīdzēja jums saprast norādījumus INSERT INTO, un tas ir viss, kas man pagaidām ir!

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- dzēš 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 šī sintakse, 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.

Pēdējā atjaunināšana: 13.07.2017

Lai pievienotu datus, izmantojiet komandu INSERT, kurai ir šāda formālā sintakse:

INSERT tabulas_nosaukums [(kolonnu_saraksts)] VĒRTĪBAS (vērtība1, vērtība2, ... vērtībaN)

Vispirms tiek parādīta izteiksme INSERT INTO, pēc tam iekavās varat norādīt ar komatu atdalītu kolonnu sarakstu, kurām jāpievieno dati, un beigās pēc vārda VALUES tiek norādītas kolonnām pievienojamās vērtības. iekavās.

Piemēram, pieņemsim, ka iepriekš tika izveidota šāda datu bāze:

IZVEIDOT DATU BĀZI productsdb; GO USE productsdb; CREATE TABLE Produkti (ID INT IDENTITY PRIMARY KEY, Product Name NVARCHAR(30) NOT NULL, Ražotājs NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Pievienosim tai vienu rindiņu, izmantojot komandu INSERT:

INSERT Produktu VĒRTĪBAS ("iPhone 7", "Apple", 5, 52000)

Pēc veiksmīgas izpildes programmā SQL Server Management Studio ziņojuma laukā jāparādās ziņojumam "1 rinda(s) ietekmēta(s)":

Ir vērts uzskatīt, ka kolonnu vērtības iekavās pēc atslēgvārds VĒRTĪBAS tiek nodotas tādā secībā, kādā tās ir deklarētas. Piemēram, iepriekš esošajā priekšrakstā CREATE TABLE varat redzēt, ka pirmā kolonna ir Id. Bet, tā kā tam ir norādīts atribūts IDENTITY, šīs kolonnas vērtība tiek ģenerēta automātiski un to var izlaist. Otrā kolonna apzīmē ProductName, tāpēc pirmā vērtība, virkne "iPhone 7", tiks nodota šai kolonnai. Otrā vērtība - virkne "Apple" tiks nodota trešajā kolonnā Ražotājs un tā tālāk. Tas nozīmē, ka vērtības tiek nodotas kolonnām šādi:

    Produkta nosaukums: "iPhone 7"

    Ražotājs: "Apple"

Tāpat, ievadot vērtības, varat norādīt tūlītējās kolonnas, kurām vērtības tiks pievienotas:

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

Šeit vērtība ir norādīta tikai trim kolonnām. Turklāt tagad vērtības tiek pārsūtītas kolonnu secībā:

    Produkta nosaukums: "iPhone 6S"

    Ražotājs: "Apple"

Nenorādītām kolonnām (šajā gadījumā ProductCount) tiks pievienota noklusējuma vērtība, ja ir norādīts atribūts DEFAULT, vai NULL vērtība. Tomēr nenorādītām kolonnām ir jābūt nullējamām vai tām jābūt atribūtam DEFAULT.

Mēs varam arī pievienot vairākas rindas vienlaikus:

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

Šajā gadījumā tabulai tiks pievienotas trīs rindas.

Turklāt, pievienojot, mēs varam norādīt, ka kolonnai ir jābūt noklusējuma vērtībai, izmantojot DEFAULT atslēgvārdu, vai NULL vērtībai:

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

Šajā gadījumā tiks izmantota ailes ProductCount noklusējuma vērtība (ja tā ir iestatīta, ja nav, tad NULL).

Ja visām kolonnām ir DEFAULT atribūts, kas norāda noklusējuma vērtību, vai tās ir nulles, varat ievietot noklusējuma vērtības visām kolonnām:

INSERT INTO Produkti NOKLUSĒJUMA VĒRTĪBAS

Bet, ja mēs ņemam tabulu Produkti, tad šāda komanda neizdosies ar kļūdu, jo vairākiem laukiem nav atribūta DEFAULT un tajā pašā laikā netiek atļauta NULL vērtība.

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".