Aprobat de cei mai buni programatori ruși









Formă INSERT. SELECT inserează rânduri selectate dintr-un alt tabel sau tabele. Formă INSERT. Valorile cu o listă de mai multe valori sunt acceptate în MySQL versiunea 3.22.5 și ulterioară. Sintaxa expresiei col_name = expresie este susținută în MySQL versiunea 3.22.10 și mai târziu.







tbl_name specifică tabelul în care vor fi inserate rânduri. Coloanele pentru care sunt specificate valorile în comandă sunt specificate în lista de nume de coloane sau în partea SET.

  • Dacă nu specificați o listă de coloane pentru INSERT. VALORI sau INSERT. SELECT. valorile pentru toate coloanele trebuie să fie definite în lista VALUES () sau ca rezultat al operației SELECT. Dacă ordinea coloanelor din tabel nu este cunoscută, puteți utiliza DESCRIBE tbl_name pentru ao obține.
  • Orice coloană pentru care o valoare nu este specificată în mod explicit va fi setată la valoarea implicită. De exemplu, dacă nu specificați toate coloanele dintr-un tabel dat dintr-o listă specificată de coloane, atunci coloanele anonime sunt setate la valorile lor implicite. Setarea implicită este descrisă în secțiunea 6.5.3 Sintaxă a instrucțiunii CREATE TABLE. MySQL oferă întotdeauna o valoare implicită pentru fiecare câmp. Această cerință este `` impusă '' MySQL, pentru a oferi capacitatea de a lucra cu ambele tabele care suportă tranzacțiile și cu tabele care nu le suportă. Punctul de vedere (dezvoltatorii) este că conținutul câmpului trebuie să fie verificat de către aplicație, nu de serverul de bază de date.
  • Expresia expresiei se poate referi la orice coloană care a fost inclusă anterior într-o listă de valori. De exemplu, puteți specifica următoarele: dar nu puteți specifica:
  • Dacă este specificat cuvântul cheie LOW_PRIORITY. executarea acestei comenzi INSERT va fi întârziată până când alți clienți finalizează citirea acestui tabel. În acest caz, clientul trebuie să aștepte până când comanda de inserare este finalizată, ceea ce poate dura o perioadă considerabilă de timp în cazul utilizării intense a mesei. În schimb, comanda INSERT DELAYED permite acestui client să continue operația imediat. Vezi secțiunea 6.4.4 Sintaxa instrucțiunii INSERT DELAYED. Rețineți că indicatorul LOW_PRIORITY nu este utilizat în mod normal cu tabelele MyISAM. deoarece când o specificați, inserțiile paralele devin imposibile. Vezi tabelele MyISAM.
  • Dacă cuvântul cheie IGNORE este specificat în comanda INSERT cu șiruri care au multe valori. atunci toate rândurile care au chei duplicate PRIMARY sau UNIQUE în acest tabel vor fi ignorate și nu vor fi importate. Dacă nu specificați IGNORE. atunci această operație de inserare este terminată când se găsește un șir care are o valoare duplicată a unei chei existente. Numărul de rânduri introduse în acest tabel poate fi determinat utilizând funcția C API mysql_info ().
  • Dacă MySQL a fost configurat utilizând opțiunea DONT_USE_DEFAULT_FIELDS. comanda INSERT va genera o eroare dacă nu specificați în mod explicit valori pentru toate coloanele care necesită valori non-NULL. Vezi secțiunea 2.3.3 Opțiuni tipice de configurare.
  • Folosind funcția mysql_insert_id, puteți găsi valoarea folosită pentru coloana AUTO_INCREMENT. Vedeți secțiunea 8.4.3.126 mysql_insert_id ().






Dacă este specificată comanda INSERT. SELECTARE sau INSERARE. VALUES cu liste de mai multe valori, atunci puteți utiliza funcția C API mysql_info () pentru a obține informații despre această interogare. Formatul acestei linii de informare este următorul:

Duplicatele arată numărul de rânduri care nu au putut fi introduse deoarece ar duplica valorile anumitor indexuri existente. Indicatorul de avertismente indică numărul de încercări de a introduce o valoare într-o coloană, care, din orice motiv, sa dovedit a fi problematică. Avertismentele apar atunci când oricare dintre următoarele condiții este adevărată:

  • Introducerea NULL într-o coloană declarată ca NU NULL. Această coloană este setată la valoarea implicită.
  • Setați coloana numerică la o valoare care se află în afara domeniului său permis. Această valoare este trunchiată la punctul final corespunzător din acest interval.
  • Introducerea într-o coloană a unei cifre a unei valori precum '10 .34 a '. Datele finale sunt șterse și se introduce doar partea numerică rămasă. Dacă valoarea nu are sens deloc ca număr, atunci coloana este setată la 0.
  • Introducerea în coloane de tip CHAR. VARCHAR. TEXT sau BLOB care depășesc lungimea maximă a coloanei. Această valoare este redusă la lungimea maximă a coloanei.
  • Introducerea unei coloane de dată sau de timp într-un rând care nu este validă pentru acest tip de coloană. Această coloană este setată la valoarea zero corespunzătoare tipului dat.
MySQL.RU. Aprobat de cei mai buni programatori ruși






  • Articole similare

    Trimiteți-le prietenilor: