Sintakse SQL ievietošanas vaicājumos. SQL vaicājums INSERT INTO - aizpildiet datu bāzi ar informāciju. SQL INSERT INTO SELECT, sintakse

sql vaicājums INSERT INTO ir jēga, kad ir izveidota datu bāzes tabula. Tas ir, tabula pastāv, tai ir nosaukums, izveidotas rindas un kolonnas. tabulu veido operators: , tabulu modificē operators .

sql query INSERT INTO - vaicājuma sintakse

sql vaicājumam INSERT INTO ir šāda sintakse:

INSERT INTO tabulas_nosaukums (iekavās, ja nepieciešams, ievietojiet kolonnu sarakstu, kurās vēlaties ievietot datus) VALUES ievietotie dati1, ievietotie dati2, ievietotie dati3.

Starp INSERT un INTRO varat ievietot opciju IGNORE. Tas nav nepieciešams. Nepieciešams, lai aizsargātu primārās atslēgas, rediģējot tabulu. Pretējā gadījumā, ja rediģēšanas laikā notiek primāro atslēgu dublēšanās, tad, ievietojot opciju IGNORE, rediģētajā tabulā tiks dzēsta pirmā rinda ar primāro atslēgu. Pēc noklusējuma mēs izlaižam šo opciju.

Ir papildu opcijas LOW_PRIORITY un DELAYED. Tie nosaka prioritātes informācijas pievienošanai datu bāzei. Pirmais norāda datu bāzes izlaišanas gaidīšanu, otrais nozīmē informācijas buferizāciju.

Rinda vaicājumā: INSERT ar frāzi VALUES ļaus datu bāzes tabulai pievienot vienu rindu. VALUES klauzula satur šo datu vērtības.

Frāzes VALUES vietā var norādīt apakšvaicājumus. INSERT ar apakšvaicājumu pievieno tabulai apakšvaicājuma atgrieztās rindas. Datu bāzes serveris apstrādā apakšvaicājumu un ievieto tabulā visas atgrieztās rindas. Serveris neievieto rindas, ja vien apakšvaicājums tās neatlasa.

  • apakšvaicājums_1 — apakšvaicājums, ko serveris apstrādā tāpat kā skatu
  • apakšvaicājums_2 ir apakšvaicājums, kas atgriež tabulā ievietotās rindas. Šī apakšvaicājuma sarakstā ir jābūt tādam pašam kolonnu skaitam kā INSERT kolonnu sarakstā.

MySQL datubāzē apakšvaicājumi praktiski netiek izmantoti.

Sql vaicājuma INSERT INTO piemēri MySQL datu bāzē

Mēs ievietojam jaunas rindas MySQL datu bāzē, izmantojot komandu INSERT INTRO.

Pirmais piemērs.

Ievietojiet jaunas rindas tabulā tabulas_nosaukums.

INSERT INTO tabulas_nosaukums VALUES ('2','145','1','nosaukums');

Tas nozīmē, ka mēs vēlamies tabulas tabulas_nosaukums kolonnās ievietot vērtības 2,145,1,name. Tā kā kolonnas nav norādītas, vērtības tiek aizpildītas visās tabulas kolonnās.

Otrais piemērs.

Ievietojiet informāciju tabulas tabulas_nosaukums nepieciešamajās (norādītajās) kolonnās.

INSERT INTO tabulas_nosaukums (klienta_klients, klienta_apakšklients, klienta_pasts) VĒRTĪBAS ('nosaukums1','apakšvārds1',' [aizsargāts ar e-pastu]'), ('vārds2','apakšvārds2',' [aizsargāts ar e-pastu]'), ('vārds3','apakšvārds3',(' [aizsargāts ar e-pastu]′);

Igors Serovs īpaši vietnei "".

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, NOLIET- 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, bet 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(nav nekādas vērtības) 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), bet dati ir atšķirīgi. 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 iekšējo atslēgu vērtības neatkārtotos (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 secī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.

Komanda pievieno tabulai rindas vai galvenā tabulas skats.

Sql INSERT komandas sintakse

Ievietojiet komandas sintakse


Komandas INSERT pamata atslēgvārdi un parametri
  • shēma- atļaujas identifikators, kas parasti atbilst kāda lietotāja vārdam
  • tabulas skats- tabulas nosaukums, kurā jāievieto rindas; ja skats ir norādīts, rindas tiek ievietotas skata galvenajā tabulā
  • apakšvaicājums_1- apakšvaicājums, ko serveris apstrādā tāpat kā skatu
  • kolonna- tabulas vai skata kolonna, kurā katrai ievietotajai rindai tiek ievadīta frāzes vērtība VĒRTĪBAS vai apakšvaicājums; ja šajā sarakstā tiek izlaista kāda no tabulas kolonnām, ievietotās rindas kolonnas vērtība ir noklusējuma kolonnas vērtība, kas definēta tabulas izveides laikā. Ja kolonnu saraksts ir pilnībā izlaists, klauzula VĒRTĪBAS vai vaicājumam ir jānosaka vērtības visām tabulas kolonnām
  • VĒRTĪBAS- definē vērtību virkni, kas tiks ievietota tabulā vai skatā; teikumā jādefinē nozīme VĒRTĪBAS katrai kolonnu saraksta kolonnai
  • apakšvaicājums_2- apakšvaicājums, kas atgriež tabulā ievietotās rindas; šī apakšvaicājuma atlases sarakstā ir jābūt tādam pašam kolonnu skaitam kā priekšraksta kolonnu sarakstā

Paziņojums, apgalvojums ar frāzi VĒRTĪBAS pievieno tabulai vienu rindu. Šajā rindā ir vērtības, ko nosaka frāze VĒRTĪBAS.
Paziņojums ar apakšvaicājums frāzes vietā VĒRTĪBAS pievieno tabulai visas apakšvaicājuma atgrieztās rindas. Serveris apstrādā apakšvaicājums un ievieto tabulā katru atgriezto rindu. Ja apakšvaicājums neatlasa nevienu rindu, serveris neievieto tabulā nevienu rindu.
Apakšvaicājums var piekļūt jebkurai tabulai vai skatam, tostarp mērķa apgalvojumu tabulai . Serveris piešķir vērtības laukiem jaunās rindās, pamatojoties uz kolonnu iekšējo stāvokli tabulā un frāzes vērtību secību VĒRTĪBAS vai vaicājumu atlases sarakstā. Ja kolonnu sarakstā trūkst kādas kolonnas, serveris piešķir tām noklusējuma vērtības, kas tika noteiktas tabulas izveides laikā. Ja kādai no šīm kolonnām ir NOT NULL ierobežojums, serveris atgriež kļūdu, norādot, ka ierobežojums ir pārkāpts, un pārtrauc INSERT paziņojumu.
Kad tiek izdots INSERT paziņojums, tiek iespējots jebkurš tabulā definētais INSERT trigeris.

INSERT INTO 1. piemērs

INSERT INTO dziļums VĒRTĪBAS(50, "PRODUKTI", "SAN FRANCISKO");

INSERT INTO Klienti (pilsēta, cname, cnum) VĒRTĪBAS('Londona', 'Hoffman', 2001);

INSERT INTO 2. piemērs
Šī komanda bonusu tabulā iekopē datus par uzņēmuma darbiniekiem, kuru komisijas maksas pārsniedz 25% no ienākumiem:

INSERT INTO bonuss SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

INSERT INTO 3. piemērs
Ja nepieciešams ievietot NULL-value, jums tā jānorāda kā parastā vērtība šādi:

INSERT INTO Pārdevēju VĒRTĪBAS (1001,'Peel',NULL,12);

INSERT INTO 4. piemērs
Komandu var izmantot, lai izgūtu vērtības no vienas tabulas un ievietotu tās citā, izmantojot vaicājumu. Lai to izdarītu, pietiek ar teikuma aizstāšanu VĒRTĪBAS uz attiecīgo pieprasījumu:

INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE pilsēta = 'Londona';

MySQL INSERT

Lai MySQL datu bāzē ievietotu jaunas rindas, izmantojiet INSERT komanda, komandu piemēri ir norādīti zemāk:
INSERT INTO 1. piemērs.
Jaunas rindas ievietošana tabulā tabulas_nosaukums.

INSERT INTO

INSERT INTO 2. piemērs.
Jaunas rindas ievietošana tabulā tabulas_nosaukums, kas norāda uz datu ievietošanu vajadzīgajās kolonnās.

INSERT INTO tabulas_nosaukums VALUES('1','165','0','nosaukums');

Datu bāzē MySQL Izmantojot vienu komandu, ir iespējams ievietot vairākas jaunas rindas.
INSERT INTO 3. piemērs.
Vairāku rindu ievietošana tabulā tabulas_nosaukums.

INSERT INTO tabulas_nosaukums (tbl_id, chislo, chislotwo, nosaukums) VĒRTĪBAS ('1','159','34','name1'), ('2','14','61','name2'), ('3 ','356','8','nosaukums3');

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

Priekšraksts 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 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 Futterkiste 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".

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, ProductName 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 ņemt vērā, ka kolonnu vērtības iekavās pēc atslēgvārda VALUES 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 pievienot arī vairākas rindas vienlaikus:

IEVADĪT produktu VĒRTĪBAS ("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.