MySQL INSERT INTO Query: Cum se adaugă un rând în tabel (exemplu)

⚡ Rezumat inteligent

MySQL Interogarea INSERT INTO adaugă rânduri noi într-un tabel, fie prin denumirea explicită a coloanelor țintă, fie prin furnizarea unei valori pentru fiecare coloană. Citirea corectă a șirurilor, numerelor și datelor determină dacă datele stocate rămân intacte.

  • 📥 Sintaxă de bază: INSERT INTO `nume_tabel`(coloana_1,coloana_2) VALUES (valoare_1,valoare_2) creează un rând nou în tabelul numit.
  • 🔤 Regula de citare: Valorile șirurilor de caractere și date necesită ghilimele simple; valorile numerice sunt furnizate fără ghilimele.
  • 0️⃣ Capcana zero principală: Un număr de telefon neîncadrat în ghilimele este citit ca un număr, deci zeroul inițial este omis în mod silențios.
  • 🔀 Ordinea coloanelor: Ordinea coloanelor în cadrul interogării este irelevantă, cu condiția ca fiecare valoare să fie mapată la coloana sa corespunzătoare.
  • 🕳️ Coloane omise: Coloanele omise din instrucțiune primesc NULL sau valoarea lor implicită declarată.
  • 📑 De la masă la masă: INSERT INTO … SELECT copiază rândurile dintre tabele atunci când structurile de coloane se aliniază.

Ce este INSERT INTO?

INTRODU IN este utilizată pentru stocarea datelor în tabele. Comanda INSERT creează un rând nou în tabel pentru stocarea datelor. Datele sunt de obicei furnizate de programe de aplicație care rulează pe baza de date.

Sintaxa de bază

Să ne uităm la sintaxa de bază a INSERT INTO MySQL comanda:

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

AICI

  • INSERT INTO `table_name` este comanda care spune MySQL server pentru a adăuga un nou rând într-un tabel numit `table_name.`
  • (coloana_1,coloana_2,...) specifică coloanele care urmează să fie actualizate în noul MySQL rând
  • VALUES (valoare_1, valoare_2,...) specifică valorile care trebuie adăugate în noul rând

La furnizarea valorilor datelor care urmează să fie introduse în noul tabel, trebuie luate în considerare următoarele:

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

Inserarea mai multor rânduri simultan

O singură instrucțiune INSERT poate conține mai multe rânduri. Separați fiecare set de valori cu o virgulă. O instrucțiune este mai rapidă decât mai multe, deoarece indexul se actualizează o singură dată.

INSERT INTO `categories`(`category_name`,`remarks`) VALUES
('Documentary', 'Factual films'),
('Musical', 'Song driven films');

MySQL Exemplu de interogare INSERT INTO

Să presupunem că avem următoarea listă de noi membri ai bibliotecii care trebuie adăugate la baza de date.

Nume complete Data naşterii sex Adresă fizică Adresa postală Numar de contact Adresa de e-mail
Leonard Hofstadter Masculin Woodcrest 0845738767
Sheldon Cooper Masculin Woodcrest 0976736763
Rajesh Koothrappali Masculin Woodcrest 0938867763
Leslie Winkle 14/02/1984 Masculin Woodcrest 0987636553
Howard Wolowitz 24/08/1981 Masculin Parcul din sud PO Box 4563 0987786553 lwolowitz@email.me

Să INSERĂM datele rând cu rând, începând cu Leonard Hofstadter. Vom trata numărul de contact ca pe un tip de date numeric și nu vom include numărul între ghilimele simple.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);

Executarea scriptului de mai sus elimină cifra 0 din numărul de contact al lui Leonard, deoarece valoarea este tratată ca numerică, iar un zero la început nu este semnificativ.

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

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');

⚠️ Sfat: Stocați numere de telefon, coduri poștale și identificatori similari într-o coloană de text, cum ar fi VARCHAR. Coloanele numerice nu pot păstra un zero la început.

Modificarea ordinii coloanelor

Modificarea ordinii coloanelor nu are efect asupra interogării INSERT în MySQL, atâta timp cât valorile corecte au fost mapate în coloanele corecte. Interogarea de mai jos demonstrează acest aspect.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');

Interogările de mai sus au omis coloana cu data nașterii. În mod implicit, MySQL inserează valori NULL în coloane care sunt omise din 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 `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');

Omiterea listei de coloane

Toate interogările de mai sus au denumit coloanele și le-au mapat la valori. Dacă furnizăm valori pentru TOATE coloanele din tabel, lista de coloane poate fi omisă din MySQL interogare de inserare.

INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');

Să folosim acum instrucțiunea SELECT pentru a vizualiza toate rândurile din tabelul de membri.

SELECT * FROM `members`;
numar de membru nume complete sex data nașterii adresă fizică adresa postala contct_ număr e-mail
1 Janet Jones Femeie 21-07-1980 Primul teren stradal nr. 4 Geantă privată 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Femeie 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Masculin 12-07-1989 Strada a 3-a 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Femeie 14-02-1984 Strada 2 23 NULL NULL NULL
5 Leonard Hofstadter Masculin NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Masculin NULL Woodcrest NULL 0976736763 NULL
7 Rajesh Koothrappali Masculin NULL Woodcrest NULL 0938867763 NULL
8 Leslie Winkle Masculin 14-02-1984 Woodcrest NULL 0987636553 NULL
9 Howard Wolowitz Masculin 24-08-1981 Parcul din sud PO Box 4563 0987786553 lwolowitz@email.me

Observați că numărul de contact al lui Leonard Hofstadter a eliminat zeroul inițial, exact așa cum a fost prevăzut. Numerele citate îl păstrează.

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;

Vom crea acum un tabel fictiv pentru categoriile de filme, numit categories_archive. Scriptul de 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. Acum să inserăm toate rândurile din tabelul de categorii în tabelul de arhivă a categoriilor.

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

Structurile tabelelor trebuie să fie aceleași pentru ca scriptul respectiv să funcționeze. Un script mai robust mapează numele coloanelor din tabelul de destinație cu cele din tabelul care conține datele, așa cum se arată mai jos.

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

Executarea interogării SELECT de mai jos dă următoarele rezultate.

SELECT * FROM `categories_archive`;
categorie_id CATEGORY_NAME Observații
1 Comedie Filme cu umor
2 Romantic Povesti de dragoste
3 Epic Filme antice cu povești
4 Groază NULL
5 Romane științifico-fantastice NULL
6 Film de aventuri NULL
7 Acțiune NULL
8 Comedie romantica NULL
9 Desene animate NULL
10 Desene animate NULL

Exemplu PHP: Inserați în MySQL Tabel

Funcția mysqli_query este folosită pentru a executa SQL interogări din PHP. Rulează instrucțiunile Insert, Select, Update și Delete în mod similar și are următoarea sintaxă.

mysqli_query($db_handle,$query);

AICI,

  • „mysqli_query(…)” este funcția care execută interogările SQL.
  • „$query” este interogarea SQL care va fi executată.
  • „$db_handle” este linkul de conexiune la server returnat de mysql_connect.

Exemplu

$servername = "localhost";
$username = "alex";
$password = "yPXuPT";
$dbname = "afmznf";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO addkeyworddata(link, keyword) VALUES ('https://www.guru99.com/','1000')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully" . '<br>';
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

Întrebări frecvente

MySQL o respinge cu o eroare de intrare duplicată. Folosiți INSERT IGNORE pentru a sări peste rând în mod silențios sau INSERT … ON DUPLICATE KEY UPDATE pentru a actualiza rândul existent.

Executați SELECT LAST_INSERT_ID() imediat după inserare sau apelați mysql_insert_id($conn) în PHP. Aceasta returnează cheia AUTO_INCREMENT generată pentru cel mai recent rând de pe propria conexiune.

Nu concatenați niciodată datele introduse de utilizator în șirul de interogare. Folosiți instrucțiuni pregătite cu parametri legați, astfel încât valorile să circule separat de SQL și nu pot fi executate ca comenzi.

Da. Asistenții inteligenți artificiali transformă foile de calcul sau descrierile simple în instrucțiuni INSERT și MySQL Banc de lucru le poate rula. Verificați ordinea coloanelor și citarea, deoarece un model poate ghici schema.

Introduceți-l mai întâi într-o copie de dezvoltare. Rândurile generate de inteligența artificială pot încălca cheile externe, pot depăși lungimea coloanelor sau pot inventa date nevalide. Rulați lotul într-o tranzacție, astfel încât să poată fi anulat.

Rezumați această postare cu: