Instrucțiunea INSERT INTO VALUES().

Ne-am dat seama cum să creăm tabele, haideți acum să aruncăm o privire detaliată asupra modului de adăugare a datelor la un tabel folosind o interogare SQL.

De fapt, este foarte simplu să faci asta, dar există mai multe nuanțe. Cea mai simplă opțiune pentru inserarea datelor într-un tabel necesită specificarea a două lucruri:

  • nume de coloane
  • valorile coloanei (date)

Numele coloanelor trebuie specificate, deoarece foarte des coloanele au valori implicite care nu sunt specificate la inserarea datelor. Și, de obicei, fiecare tabel are cel puțin o astfel de coloană, de exemplu id-ul rândului.

Forma generală a interogării pentru inserarea datelor într-un tabel arată astfel:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

De exemplu, dacă doriți să inserați o înregistrare nouă în tabelul utilizator, așa ar arăta interogarea:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

Instrucțiunea INSERT INTO SELECT

Un alt scenariu obișnuit pentru inserarea datelor într-un tabel este preluarea lor dintr-un alt tabel, schemă sau chiar dintr-un DBMS.

Pentru a face acest lucru, există un alt format de interogare INSERT INTO, în care, în loc de partea VALUES, puteți specifica o interogare pentru selectarea datelor.

Forma generală a unei astfel de cereri este:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Să scriem o interogare care va adăuga toți utilizatorii din tabelul de angajați la tabelul de utilizatori:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Avem diverse date în tabelul angajaților, dar din ele selectăm doar două câmpuri - numele și ora sosirii la companie.

De asemenea, tabelul de utilizatori vă solicită să specificați nivelul utilizatorului - nivel. Angajații nu au un nivel în tabelul de angajați, așa că vom folosi faptul că tabelul de utilizatori are o valoare implicită pentru câmpul de nivel. Pur și simplu nu specificăm nivelul și SQL va seta valoarea implicită.

Să presupunem că nu suntem mulțumiți de valoarea implicită și dorim ca nivelul să fie 99 și să înlocuim user.created_time cu data de astăzi, atunci putem scrie asta:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Sunt multe de făcut, dar cred că acest lucru va fi suficient pentru moment. Puteți citi mai multe pe pagina oficială MySQL.