TOP

SQL-Lecția 13. Adăugarea datelor (INSERT INTO)

În secțiunile anterioare, am luat în considerare munca de recuperare a datelor din tabele create anterior. Acum este timpul să ne dăm seama cum putem crea/șterge tabele, adăuga înregistrări noi și șterge pe cele vechi.

În aceste scopuri, există astfel de operatori în SQL ca:

  • CREATE - creează un tabel;
  • ALTER - modifică structura tabelului;
  • DROP - șterge un tabel sau un câmp;
  • INSERT - adaugă date la tabel.
  • Să începem să ne familiarizăm cu acest grup de operatori cu operatorul INSERT.


    1. Adăugarea de linii întregi

    După cum sugerează și numele, operatorul INSERT INTO este folosit pentru a insera (adăuga) rânduri într-un tabel al bazei de date.

    Adăugarea se poate face în mai multe moduri:

  • adăugați o linie completă;
  • adăugați o parte dintr-o nouă linie;
  • adăugați rezultatele interogării.
  • Deci, pentru a adăuga un nou rând la tabel, trebuie să specificăm numele tabelului, să listăm numele coloanelor și să specificăm valorile pentru fiecare coloană folosind INSERT INTO table_name(field1, field2 ...) VALUES (value1, valoare2 ...) construct. Să luăm în considerare un exemplu.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    De asemenea, puteți modifica ordinea numelor coloanelor, dar, în același timp, trebuie să modificați ordinea valorilor în parametrul VALUES.

    2. Adăugarea unei părți a liniilor

    În exemplul anterior, când folosim operatorul INSERT, am specificat în mod explicit numele coloanelor din tabel. Folosind această sintaxă, putem sări peste câteva coloane. Aceasta înseamnă că introduceți valori pentru unele coloane și nu le furnizați pentru altele. Exemplu:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    În acest exemplu, nu am specificat valori pentru cele două coloane Address și Country. Puteți exclude unele coloane din instrucțiunea aaa dacă vă permite să definiți tabelul. În acest caz, trebuie îndeplinită una dintre următoarele condiții: această coloană este definită ca permițând o valoare nulă (absența oricărei valori) sau o valoare implicită este specificată în definiția tabelului. Aceasta înseamnă că, dacă nu este specificată nicio valoare, va fi utilizată valoarea implicită. Dacă omiteți o coloană dintr-un tabel care nu permite să apară valorile NULL în rândurile sale și nu are o valoare definită pentru utilizare implicită, SGBD va emite un mesaj de eroare și rândul nu va fi adăugat.

    3. Adăugarea datelor selectate

    În exemplele anterioare, am inserat date în tabel tastându-le manual în interogare. Cu toate acestea, operatorul INSERT INTO ne permite să automatizăm acest proces dacă dorim să inserăm date dintr-un alt tabel. Pentru aceasta, există o astfel de construcție în SQL ca INSERT INTO ... SELECT ... . Acest design vă permite să selectați simultan date dintr-un tabel și să le introduceți în altul. Să presupunem că avem un alt tabel Sellers_EU cu o listă de vânzători ai produsului nostru în Europa și trebuie să îi adăugăm la tabelul general Sellers. Structura acestor tabele este aceeași (același număr de coloane și aceleași nume), dar datele sunt diferite. Pentru a face acest lucru, putem scrie următoarea interogare:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    Este necesar să acordați atenție pentru ca valorile cheilor interne să nu fie repetate (câmpul ID), altfel va apărea o eroare. Instrucțiunea SELECT poate include și o clauză WHERE pentru a filtra datele. De remarcat, de asemenea, că SGBD nu acordă atenție numelor coloanelor conținute în operatorul SELECT, îi pasă doar de ordinea locației acestora. Prin urmare, datele din prima coloană specificată care a fost selectată prin SELECT vor fi în orice caz completate în prima coloană a tabelului Sellers specificat după operatorul INSERT INTO, indiferent de numele câmpului.

    4. Copierea datelor dintr-un tabel în altul

    Adesea, atunci când lucrați cu baze de date, este nevoie să creați copii ale oricăror tabele în scopul copierii de rezervă sau modificării. Pentru a face o copie completă a tabelului în SQL, este furnizat un operator separat SELECT INTO. De exemplu, trebuie să creăm o copie a tabelului Sellers, va trebui să scriem interogarea după cum urmează:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    Spre deosebire de construcția anterioară INSERT INTO ... SELECT ... când datele sunt adăugate la un tabel existent, construcția SELECT ... INTO ... FROM ... copiază datele într-un tabel nou. Se mai poate spune că prima construcție importă date, iar a doua le exportă.

    Când utilizați construcția SELECT ... INTO ... FROM ... trebuie luate în considerare următoarele:

  • puteți folosi orice clauză din instrucțiunea SELECT, cum ar fi GROUP BY și HAVING;
  • puteți folosi o uniune pentru a adăuga date din mai multe tabele;
  • datele pot fi adăugate la un singur tabel, indiferent de câte tabele au fost preluate.