Transact-SQL - inserarea datelor. Interogare SQL INSERT INTO - completați baza de date cu informații Versiunea demo a bazei de date

În plus față de instrucțiunea SELECT discutată mai devreme, limbajul de manipulare a datelor (DML) conține alte trei instrucțiuni: INSERT, UPDATE și DELETE. La fel ca instrucțiunea SELECT, aceste trei instrucțiuni funcționează fie pe tabele, fie pe vederi. Acest articol discută declarația INSERT, iar celelalte două declarații sunt discutate în articolul următor.

instrucțiunea INSERT inserează rânduri (sau părți de rânduri) într-un tabel. Există două forme diferite ale acestei instrucțiuni:

INSERT tab_name [(col_list)] DEFAULT VALUES | VALUES (( DEFAULT | NULL | expression ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Convenții de sintaxă

Prima formă a instrucțiunii vă permite să introduceți un rând (sau o parte a acestuia) în tabel. Iar a doua formă a instrucțiunii INSERT vă permite să inserați într-un tabel setul de rezultate al unei instrucțiuni SELECT sau al unei proceduri stocate executată de o instrucțiune EXECUTE. Procedura stocată trebuie să returneze date pentru a fi introduse în tabel. Când este utilizată cu o instrucțiune INSERT, o instrucțiune SELECT poate selecta valori dintr-un tabel diferit sau din același tabel în care sunt inserate datele, atâta timp cât tipurile de date ale coloanelor corespunzătoare sunt compatibile.

Pentru ambele formulare, tipul de date al fiecărei valori introduse trebuie să fie compatibil cu tipul de date al coloanei corespunzătoare din tabel. Toate șirurile și datele temporare trebuie incluse între ghilimele; Valorile numerice nu trebuie să fie incluse între ghilimele.

Inserarea unui singur rând

Pentru ambele forme ale instrucțiunii INSERT, specificarea explicit a listei de coloane este opțională. A nu enumera coloanele este același lucru cu specificarea tuturor coloanelor din tabel.

Parametrul VALORI IMPLICITE inserează valori implicite pentru toate coloanele. Coloanele cu tipul de date TIMESTAMP sau proprietatea IDENTITY sunt inserate implicit cu valori care sunt generate automat de sistem. Pentru coloanele de alte tipuri de date, valoarea implicită non-nulă corespunzătoare este inserată dacă este disponibilă, sau NULL în caz contrar. Dacă o coloană nu permite valori nule și nu are o valoare implicită definită, instrucțiunea INSERT eșuează și este afișat un mesaj.

Exemplul de mai jos inserează rânduri în tabelul Employee din baza de date SampleDb, demonstrând utilizarea unei instrucțiuni INSERT pentru a insera o cantitate mică de date în baza de date:

UTILIZAȚI SampleDb; INSERT INTO Employee VALUES (34990, „Andrey”, „Batonov”, „d1”); INSERT INTO Employee VALUES (38640, „Alexey”, „Vasin”, „d3”);

Există două moduri diferite de a insera valori într-un rând nou. Instrucțiunea INSERT din exemplul de mai jos utilizează în mod explicit cuvântul cheie NULL și inserează o valoare NULL în coloana corespunzătoare:

UTILIZAȚI SampleDb; INSERT INTO Employee VALUES (34991, „Andrey”, „Batonov”, NULL);

Pentru a insera valori în unele (dar nu în toate) coloanele unui tabel, de obicei trebuie să specificați în mod explicit acele coloane. Coloanele nespecificate trebuie fie să permită valori NULL, fie să aibă o valoare implicită definită.

UTILIZAȚI SampleDb; INSERT INTO Employee(Id, Prenume, Prenume) VALUES (34992, „Andrey”, „Batonov”);

Cele două exemple anterioare sunt echivalente. În tabelul Employee, singura coloană care permite valori NULL este coloana DepartmentNumber, iar toate celelalte coloane au fost dezactivate de clauza NOT NULL din instrucțiunea CREATE TABLE.

Ordinea valorilor în oferta VALUES Instrucțiunile INSERT pot diferi de ordinea specificată în instrucțiunea CREATE TABLE. În acest caz, ordinea lor trebuie să se potrivească cu ordinea în care sunt listate coloanele corespunzătoare în lista de coloane. Mai jos este un exemplu de inserare a datelor într-o ordine diferită de cea originală:

UTILIZAȚI SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, First Name) VALUES ("d1", "Batonov", 34993, "Andrey");

Inserarea mai multor rânduri

A doua formă a instrucțiunii INSERT inserează în tabel unul sau mai multe rânduri selectate de o subinterogare. Exemplul de mai jos arată cum să inserați rânduri într-un tabel folosind a doua formă a instrucțiunii INSERT. În acest caz, se execută o interogare pentru a selecta numerele și numele departamentelor situate în Moscova, iar setul de rezultate rezultat este încărcat într-un tabel nou creat anterior.

Noul tabel MoscowDepartment creat în exemplul de mai sus are aceleași coloane ca și tabelul Departament existent, cu excepția coloanei Locație lipsă. Subinterogarea din instrucțiunea INSERT selectează toate rândurile din tabelul Department pentru care valoarea coloanei Locație este „Moscova”, care sunt apoi inserate în noul tabel creat la începutul interogării.

Exemplul de mai jos arată o altă modalitate de a insera rânduri într-un tabel folosind a doua formă a instrucțiunii INSERT. În acest caz, se execută o interogare pentru a selecta numerele de personal, numerele de proiect și datele de începere a proiectului pentru toți angajații cu poziția „Manager” care lucrează la proiectul p2 și apoi încărcați setul de rezultate rezultat într-un nou tabel creat la începutul interogarea:

UTILIZAȚI 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";

Înainte de a introduce rânduri folosind instrucțiunea INSERT, tabelele MoscowDepartment și ManagerTeam (în exemplele de mai sus) erau goale. Dacă tabelul exista deja și conținea rânduri cu date, atunci i se vor adăuga rânduri noi.

Ce este INSERT INTO?

Scopul principal al sistemelor de baze de date este stocarea datelor în tabele. Datele sunt de obicei furnizate de programe de aplicație care rulează deasupra bazei de date. În acest scop, SQL are comanda INSERT care este folosită pentru a stoca date într-un tabel. The Comanda INSERT creează un nou rândîn tabel pentru a stoca date.

Sintaxa de bază

Să ne uităm la sintaxa de bază a comenzii SQL INSERT prezentată mai jos.

INSERT INTO `table_name`(coloana_1,coloana_2,...) VALUES (valoare_1,valoare_2,...);

  • INSERT INTO `nume_tabel` este comanda care îi spune serverului MySQL să adauge un nou rând într-un tabel numit `table_name`.
  • (coloana_1,coloana_2,...) specifică coloanele care vor fi actualizate în noul rând
  • VALUES (valoare_1, valoare_2,...) specifică valorile care trebuie adăugate în noul rând

Atunci când furnizați valorile datelor care urmează să fie inserate în noul tabel, trebuie luate în considerare următoarele atunci când vă ocupați de diferite tipuri de date.

  • Tipuri de date șir- toate valorile șirului de caractere ar trebui să fie cuprinse între ghilimele simple.
  • Tipuri de date numerice- toate valorile numerice trebuie furnizate direct, fără a le include între ghilimele simple sau duble.
  • Tipuri de date de date- includeți valorile datei între ghilimele simple în formatul „AAAA-LL-ZZ”.

Exemplu:

Să presupunem că avem următoarea listă de noi membri ai bibliotecii care trebuie adăugați în baza de date.

Nume complete Data nașterii gen Adresă fizică adresa postala Numar de contact Adresa de e-mail
Leonard Hofstadter Masculin Woodcrest 0845738767
Sheldon Cooper Masculin Woodcrest 0976736763
Rajesh Koothrappali Masculin Fairview 0938867763
Leslie Winkle 14/02/1984 Masculin 0987636553
Howard Wolowitz 24/08/1981 Masculin Parcul din sud P.O. Caseta 4563 0987786553

Să" INSERT datele unul câte unul. Vom începe cu Leonard Hofstadter. Vom trata numărul de contact ca pe un tip de date numerice și nu vom include numărul între ghilimele simple.

INSERT INTO `membri` (`nume_complete`,`gen`,`adresă_fizică`,`număr_de_contact`) VALORI ("Leonard Hofstadter","Bărbat","Woodcrest",0845738767);

Executarea scriptului de mai sus scade 0 din numărul de contact al lui Leonard. Acest lucru se datorează faptului că valoarea va fi tratată ca o valoare numerică, iar zero (0) de la început este eliminat deoarece nu este semnificativ.

Pentru a evita astfel de probleme, valoarea trebuie inclusă între ghilimele simple, așa cum se arată mai jos -

INSERT INTO `membri` (`nume_complete`,`gen`,`adresă_fizică`,`număr_de_contact`) VALORI ("Sheldon Cooper","Bărbat","Woodcrest", "0976736763");

În cazul de mai sus, zero(0) nu va fi eliminat

Modificarea ordinii coloanelor nu are efect asupra interogării INSERT, atâta timp cât valorile corecte au fost mapate la coloanele corecte.

Interogarea prezentată mai jos demonstrează punctul de mai sus.

INSERT INTO `membri` (`număr_de_contact`,`gen`,`nume_complete`,`adresă_fizică`)VALORI ("0938867763","Bărbat","Rajesh Koothrappali","Woodcrest");

Interogările de mai sus au omis coloana cu data nașterii, în mod implicit, MySQL va insera valori NULL în coloanele care sunt omise în interogarea INSERT.

Să introducem acum înregistrarea pentru Leslie, care are data nașterii furnizată. Valoarea datei trebuie inclusă între ghilimele simple folosind formatul „AAAA-LL-ZZ”.

INSERT INTO `membri` (`nume_complete`,`data_nașterii`,`gen`,`adresă_fizică`,`număr_de_contact`) VALORI ("Leslie Winkle","14-02-1984","Bărbat","Woodcrest"," 0987636553");

Toate interogările de mai sus au specificat coloanele și le-au mapat la valori în instrucțiunea de inserare. Dacă furnizăm valori pentru TOATE coloanele din tabel, atunci putem omite coloanele din interogarea de inserare.

INSERT INTO `members` VALUES (9,"Howard Wolowitz","Bărbat","1981-08-24","SouthPark","P.O. Box 4563", "0987786553", "lwolowitzemail.me");

Acum să folosim instrucțiunea SELECT pentru a vizualiza toate rândurile din tabelul de membri.SELECT * FROM `membri`;

numar de membrunume completegendata nașteriiadresă fizicăadresa postalacontct_numbere-mail
1 Janet JonesFemeie21-07-1980 Prima Stradă Parcela nr. 4Geantă privată0759 253 542 Această adresă de e-mail este protejată de spamboți. Aveți nevoie de activarea JavaScript pentru ao vizualiza.
2 Janet Smith JonesFemeie23-06-1980 Melrose 123NULNULAceastă adresă de e-mail este protejată de spamboți. Aveți nevoie de activarea JavaScript pentru ao vizualiza.
3 Robert PhilMasculin12-07-1989 Strada a 3-a 34NUL12345 Această adresă de e-mail este protejată de spamboți. Aveți nevoie de activarea JavaScript pentru ao vizualiza.
4 Gloria WilliamsFemeie14-02-1984 Strada 2 23NULNULNUL
5 Leonard HofstadterMasculinNULWoodcrestNUL845738767 NUL
6 Sheldon CooperMasculinNULWoodcrestNUL976736763 NUL
7 Rajesh KoothrappaliMasculinNULWoodcrestNUL938867763 NUL
8 Leslie WinkleMasculin14-02-1984 WoodcrestNUL987636553 NUL
9 Howard WolowitzMasculin24-08-1981 Parcul din sudP.O. Caseta 4563987786553 Această adresă de e-mail este protejată de spamboți. Aveți nevoie de activarea JavaScript pentru ao vizualiza.

Observați că numărul de contact pentru Leonard Hofstadter a scăzut zero (0) din numărul de contact. Celelalte numere de contact nu au scăzut zero (0) la început.

Inserarea într-un tabel dintr-un alt tabel

Comanda INSERT poate fi folosită și pentru a introduce date într-un tabel dintr-un alt tabel. Sintaxa de bază este cea prezentată mai jos.

INSERT INTO table_1 SELECT * FROM table_2;

Să ne uităm acum la un exemplu practic, vom crea un tabel inactiv pentru categoriile de filme în scop demonstrativ. Vom numi noul tabel de categorii categories_archive. Scriptul prezentat mai jos creează tabelul.

CREATE TABLE `categories_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Executați scriptul de mai sus pentru a crea tabelul.

Să inserăm acum toate rândurile din tabelul de categorii în tabelul de arhivă de categorii. Scriptul prezentat mai jos ne ajută să realizăm acest lucru.

INSERT INTO `categories_archive` SELECT * FROM `categories`;

Executarea scriptului de mai sus inserează toate rândurile din tabelul de categorii în tabelul de arhivă de categorii. Rețineți că structurile tabelului vor trebui să fie aceleași pentru ca scriptul să funcționeze. Un script mai robust este unul care mapează numele coloanelor din tabelul de inserare cu cele din tabelul care conține datele.

Interogarea prezentată mai jos demonstrează utilizarea acesteia.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;

Se execută interogarea SELECT

SELECTAȚI * DIN `categories_archive`

oferă următoarele rezultate prezentate mai jos.

categorie_idNumele categorieiremarci
1 ComedieFilme cu umor
2 RomanticPovesti de dragoste
3 EpicPovestea filmelor antice
4 GroazăNUL
5 Operă științifico-fantasticăNUL
6 ThrillerNUL
7 AcțiuneNUL
8 Comedie romanticaNUL
9 Desene animateNUL
10 Desene animateNUL

rezumat

  • Comanda INSERT este folosită pentru a adăuga date noi într-un tabel
  • Datele și valorile șirului de caractere ar trebui să fie cuprinse între ghilimele simple.
  • Valorile numerice nu trebuie să fie incluse între ghilimele.
  • Comanda INSERT poate fi folosită și pentru a introduce date dintr-un tabel în altul.

Instrucțiunea INSERT inserează înregistrări noi într-un tabel. În acest caz, valorile coloanei pot fi constante literale sau pot fi rezultatul executării unei subinterogări. În primul caz, o instrucțiune INSERT separată este folosită pentru a insera fiecare rând; în al doilea caz, vor fi inserate atâtea rânduri câte sunt returnate de subinterogare.

Sintaxa operatorului este următoarea:

    INTRODU IN [ (,...) ]

    (VALORI(,…))

  1. | (VALORI IMPLICITE)

După cum puteți vedea din sintaxa prezentată, lista de coloane este opțională (parantezele pătrate din descrierea sintaxei indică acest lucru). Dacă lipsește, lista valorilor introduse trebuie să fie completă, adică să furnizeze valori pentru toate coloanele tabelului. În acest caz, ordinea valorilor trebuie să corespundă cu ordinea specificată de instrucțiunea CREATE TABLE pentru tabelul în care sunt inserate rândurile. În plus, aceste valori trebuie să fie de același tip de date ca și coloanele în care sunt introduse. Ca exemplu, luați în considerare inserarea unui rând în tabelul Product creat de următoarea instrucțiune CREATE TABLE:

    Produs CREATE TABLE

    maker char (1) NOT NULL,

    model varchar(4) NOT NULL,

    tastați varchar(7) NOT NULL

Să presupunem că doriți să adăugați la acest tabel PC-ul model 1157 de la producătorul B. Acest lucru se poate face cu următoarea afirmație:

    INSERT INTO Product

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

Dacă specificați o listă de coloane, puteți modifica ordinea „naturală” a acestora:

    INSERT INTO produs (tip, model, producator)

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

S-ar părea că aceasta este o caracteristică complet inutilă, ceea ce face doar designul mai greoi. Cu toate acestea, câștigă dacă coloanele au valori implicite. Luați în considerare următoarea structură a tabelului:

    CREATE TABLE product_D

    maker char (1) NULL,

    model varchar(4) NULL,

    tip varchar (7 ) NOT NULL DEFAULT "PC"

Rețineți că aici valorile tuturor coloanelor au valori implicite (primele două sunt NULL și ultima coloană este de tip - PC). Acum am putea scrie:

    INSERT INTO Product_D (model, producător)

    VALORI(1157, „B”);

În acest caz, valoarea lipsă la inserarea unui rând va fi înlocuită cu valoarea implicită - PC. Rețineți că dacă unei coloane nu i se dă o valoare implicită într-o instrucțiune CREATE TABLE și este specificată o constrângere NOT NULL pentru a interzice utilizarea lui NULL în acea coloană de tabel, atunci se presupune valoarea implicită a NULL.

Se pune întrebarea: este posibil să nu specificați o listă de coloane și, totuși, să folosiți valorile implicite? Raspunsul este da. Pentru a face acest lucru, în loc să specificați în mod explicit valoarea, utilizați cuvântul rezervat DEFAULT :

    INSERT INTO Product_D

    VALORI ("B" , 1158 , IMPLICIT ) ;

Deoarece toate coloanele au valori implicite, pentru a insera un rând cu valori implicite puteți scrie:

    INSERT INTO Product_D

    VALORI(DEFAULT, DEFAULT, DEFAULT);

Cu toate acestea, pentru acest caz există o construcție specială VALORI DEFAULT (vezi sintaxa operatorului), cu care operatorul de mai sus poate fi rescris sub forma

    INSERT INTO Product_D DEFAULT VALUES ;

Rețineți că atunci când introduceți un rând într-un tabel, toate restricțiile impuse acestui tabel sunt verificate. Acestea pot fi constrângeri de cheie primară sau de index unic, constrângeri CHECK sau constrângeri de integritate referenţială. Dacă orice constrângere este încălcată, inserarea rândului va fi respinsă. Să luăm acum în considerare cazul utilizării unei subinterogări. Să presupunem că trebuie să inserăm în tabelul Product_D toate rândurile din tabelul Product legate de modelele de computere personale (tip = „PC”). Deoarece valorile de care avem nevoie sunt deja într-un tabel, generarea manuală a rândurilor inserate este, în primul rând, ineficientă și, în al doilea rând, poate permite erori de introducere. Utilizarea unei subinterogări rezolvă aceste probleme:

Utilizarea simbolului „*” în subinterogare este justificată în acest caz, deoarece ordinea coloanelor este aceeași pentru ambele tabele. Dacă nu ar fi cazul, ar trebui să se aplice o listă de coloane fie în instrucțiunea INSERT, fie în subinterogare sau ambele, care ar corespunde ordinii coloanelor:

Aici, ca și înainte, puteți specifica nu toate coloanele dacă doriți să utilizați valorile implicite existente, de exemplu:

În acest caz, coloana tip a tabelului Product_D va fi înlocuită cu valoarea implicită PC pentru toate rândurile inserate.

Rețineți că atunci când utilizați o subinterogare care conține un predicat, vor fi inserate numai acele rânduri pentru care valoarea predicatului este TRUE (nu NECUNOSCUT!). Cu alte cuvinte, dacă coloana de tip din tabelul Product ar putea fi NULL și acea valoare a fost prezentă într-un număr de rânduri, atunci acele rânduri nu ar fi inserate în tabelul Product_D.

Tehnica artificială de utilizare a unei subinterogări care formează un rând cu clauza UNION ALL vă permite să depășiți limitarea inserării unui rând în instrucțiunea INSERT atunci când utilizați constructorul de rând în clauza VALUES. Deci, dacă trebuie să inserăm mai multe rânduri folosind o singură instrucțiune INSERT, putem scrie:

    INSERT INTO Product_D

    SELECT "B" AS maker, 1158 AS model, "PC" AS tip

    UNIREA TOȚI

    SELECTAȚI „C”, 2190, „Laptop”

    UNIREA TOȚI

    SELECTAȚI „D” , 3219 , „Imprimantă” ;

Utilizarea UNION ALL este de preferată față de UNION chiar dacă absența rândurilor duplicate este garantată, deoarece în acest caz nu se va efectua nicio verificare pentru eliminarea duplicatelor.

Trebuie remarcat faptul că inserarea mai multor tupluri folosind constructorul de rânduri este deja implementată în Sistem de management al bazelor de date relaționale (DBMS), dezvoltat de Microsoft Corporation.Structured Query Language) este un limbaj de computer universal folosit pentru a crea, modifica și manipula date în baze de date relaționale. SQL Server 2008. Având în vedere această posibilitate, ultima interogare poate fi rescrisă ca:

    INSERT INTO Product_D VALUES

    ("B", 1158, "PC"),

    ("C", 2190, "Laptop"),

Echipă adaugă rânduri la tabel sau vizualizarea mesei principale.

Sintaxa comenzii Sql INSERT

Inserați sintaxa comenzii


Cuvinte cheie și parametri de bază ai comenzii INSERT
  • schemă- identificator de permisiune, care se potrivește de obicei cu numele unui utilizator
  • vedere la masă- numele tabelului în care trebuie introduse rândurile; dacă este specificată o vedere, rândurile sunt inserate în tabelul principal al vizualizării
  • subinterogare_1- o subinterogare pe care serverul o procesează în același mod ca o vizualizare
  • coloană- un tabel sau o coloană de vizualizare în care se introduce valoarea din frază pentru fiecare rând inserat VALORI sau subinterogare; dacă una dintre coloanele tabelului este omisă din această listă, valoarea coloanei pentru rândul inserat este valoarea implicită a coloanei definită când a fost creat tabelul. Dacă o listă de coloane este complet omisă, clauza VALORI sau interogarea trebuie să determine valori pentru toate coloanele din tabel
  • VALORI- definește un șir de valori care vor fi inserate în tabel sau vizualizare; sensul trebuie definit în propoziție VALORI pentru fiecare coloană din lista de coloane
  • subinterogare_2- o subinterogare care returnează rândurile inserate în tabel; lista de selectare a acestei subinterogări trebuie să aibă același număr de coloane ca și lista de coloane de instrucțiune

Afirmație cu fraza VALORI adaugă un singur rând la tabel. Această linie conține valorile definite de frază VALORI.
Declarație cu subinterogareîn loc de o frază VALORI adaugă toate rândurile returnate de subinterogare la tabel. Serverul procesează subinterogareși inserează fiecare rând returnat în tabel. Dacă subinterogarea nu selectează niciun rând, serverul nu inserează niciun rând în tabel.
Subinterogare poate accesa orice tabel sau vizualizare, inclusiv tabelul de afirmații țintă . Serverul atribuie valori câmpurilor din rândurile noi în funcție de poziția internă a coloanelor din tabel și de ordinea valorilor frazei VALORI sau în lista de selecție a interogărilor. Dacă din lista de coloane lipsesc vreo coloană, serverul le atribuie valorile implicite definite la crearea tabelului. Dacă oricare dintre aceste coloane are o constrângere NOT NULL, atunci serverul returnează o eroare care indică faptul că constrângerea a fost încălcată și anulează instrucțiunea INSERT.
Când este emisă o instrucțiune INSERT, orice declanșator INSERT definit pe tabel este activat.

INSERT INTO Exemplul 1

INTRODU IN dept VALORI(50, „PRODUSE”, „SAN FRANCISCO”);

INTRODU IN Clienți (oraș, cname, cnum) VALORI(„Londra”, „Hoffman”, 2001);

INSERT INTO Exemplul 2
Următoarea comandă copiază datele angajaților companiei ale căror comisioane depășesc 25% din venit în tabelul de bonusuri:

INTRODU IN bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

INSERT INTO Exemplul 3
Dacă trebuie să introduceți NUL-valoare, trebuie să o specificați ca valoare normală, după cum urmează:

INTRODU IN Vânzători VALUES (1001, „Peel”, NULL,12);

INSERT INTO Exemplul 4
Comanda poate fi folosită pentru a prelua valori dintr-un tabel și a le plasa în altul folosind o interogare. Pentru a face acest lucru, este suficient să înlocuiți propoziția VALORI la cererea corespunzătoare:

INTRODU IN Londonstaff SELECT * FROM Salespeople WHERE oraș = 'Londra';

MySQL INSERT

Pentru a insera noi rânduri într-o bază de date MySQL, utilizați Comanda INSERT, exemple de comandă sunt date mai jos:
INSERT INTO Exemplul 1.
Inserarea unui nou rând în tabel table_name.

INTRODU IN

INSERT INTO Exemplul 2.
Inserarea unui nou rând în tabelul table_name indicând inserarea datelor în coloanele de care avem nevoie.

INTRODU IN table_name VALUES('1','165','0','nume');

În baza de date MySQL Este posibil să inserați mai multe linii noi folosind o singură comandă.
INSERT INTO Exemplul 3.
Inserarea mai multor rânduri în tabel table_name.

INTRODU IN table_name (tbl_id, chislo, chislotwo, name) VALORI ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ′,'356′,'8′,'nume3');

Ultima actualizare: 13.07.2017

Pentru a adăuga date, utilizați comanda INSERT, care are următoarea sintaxă formală:

INSERT nume_tabel [(listă_coloană)] VALUES (valoare1, valoare2, ... valoareN)

Mai întâi apare expresia INSERT INTO, apoi în paranteze puteți specifica o listă de coloane separate prin virgulă la care trebuie adăugate date, iar la sfârșit, după cuvântul VALUES, valorile de adăugat pentru coloane sunt enumerate în parantezele.

De exemplu, să presupunem că următoarea bază de date a fost creată anterior:

CREAȚI BAZĂ DE DATE productsdb; GO USE productsdb; CREATE TABLE Produse (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Să îi adăugăm o linie folosind comanda INSERT:

INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)

După executarea cu succes în SQL Server Management Studio, mesajul „1 rând(e) afectat(e)” ar trebui să apară în câmpul de mesaj:

Merită să țineți cont de faptul că valorile pentru coloanele din paranteze după cuvântul cheie VALUES sunt transmise în ordinea în care sunt declarate. De exemplu, în instrucțiunea CREATE TABLE de mai sus, puteți vedea că prima coloană este Id. Dar, deoarece atributul IDENTITY este specificat pentru acesta, valoarea acestei coloane este generată automat și poate fi omisă. A doua coloană reprezintă ProductName, deci prima valoare, șirul „iPhone 7”, va fi trecută în acea coloană. A doua valoare - șirul „Apple” va fi trecut la a treia coloană Producător și așa mai departe. Adică, valorile sunt transmise coloanelor după cum urmează:

    Nume produs: „iPhone 7”

    Producator: "Apple"

De asemenea, la introducerea valorilor, puteți specifica coloanele imediate la care se vor adăuga valorile:

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

Aici valoarea este specificată doar pentru trei coloane. Mai mult, acum valorile sunt transmise în ordinea coloanelor:

    Nume produs: „iPhone 6S”

    Producator: "Apple"

Pentru coloanele nespecificate (în acest caz ProductCount), se va adăuga o valoare implicită dacă este specificat atributul DEFAULT sau o valoare NULL. Cu toate acestea, coloanele nespecificate trebuie să fie nullabile sau să aibă un atribut DEFAULT.

De asemenea, putem adăuga mai multe rânduri deodată:

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

În acest caz, trei rânduri vor fi adăugate la tabel.

De asemenea, atunci când adăugăm, putem specifica că coloana ar trebui să aibă o valoare implicită folosind cuvântul cheie DEFAULT sau o valoare NULL:

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

În acest caz, se va folosi valoarea implicită pentru coloana ProductCount (dacă este setată, dacă nu este, atunci NULL).

Dacă toate coloanele au un atribut DEFAULT care specifică o valoare implicită sau sunt nullabile, puteți introduce valori implicite pentru toate coloanele:

INSERT INTO Products VALORI IMPLICITE

Dar dacă luăm tabelul Produse, atunci o astfel de comandă va eșua cu o eroare, deoarece mai multe câmpuri nu au atributul DEFAULT și, în același timp, nu permit valoarea NULL.

Acțiune