MySQL INSERT INTO Query: Kako dodati redak u tablicu (primjer)

⚡ Pametni sažetak

MySQL INSERT INTO upit dodaje nove retke u tablicu, bilo eksplicitnim imenovanjem ciljnih stupaca ili navođenjem vrijednosti za svaki stupac. Ispravno navođenje nizova, brojeva i datuma određuje hoće li pohranjeni podaci ostati netaknuti.

  • 📥 Osnovna sintaksa: INSERT INTO `naziv_tablice`(stupac_1,stupac_2) VALUES (vrijednost_1,vrijednost_2) stvara jedan novi redak u imenovanoj tablici.
  • 🔤 Pravilo citiranja: Vrijednosti nizova i datuma zahtijevaju jednostruke navodnike; numeričke vrijednosti se navode bez navodnika.
  • 0️⃣ Vodeća nulta zamka: Nenavedeni telefonski broj čita se kao broj, pa se vodeća nula tiho izostavlja.
  • 🔀 Redoslijed stupaca: Redoslijed stupaca unutar upita nije bitan, pod uvjetom da se svaka vrijednost preslikava na odgovarajući stupac.
  • 🕳️ Izostavljeni stupci: Stupci izostavljeni iz naredbe dobivaju NULL ili svoju deklariranu zadanu vrijednost.
  • 📑 Od stola do stola: INSERT INTO … SELECT kopira retke između tablica kada se strukture stupaca poravnaju.

Što je INSERT INTO?

UMETNUTI U koristi se za pohranu podataka u tablice. Naredba INSERT stvara novi redak u tablici za pohranu podataka. Podatke obično daju aplikacijski programi koji se izvode preko baze podataka.

Osnovna sintaksa

Pogledajmo osnovnu sintaksu INSERT INTO MySQL naredba:

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

OVDJE

  • INSERT INTO `table_name` je naredba koja govori MySQL poslužitelj za dodavanje novog reda u tablicu pod nazivom `table_name.`
  • (column_1,column_2,…) navodi stupce koji će se ažurirati u novom MySQL red
  • VRIJEDNOSTI (vrijednost_1,vrijednost_2,…) navodi vrijednosti koje treba dodati u novi red

Prilikom unosa vrijednosti podataka koje treba umetnuti u novu tablicu, treba uzeti u obzir sljedeće:

  • Vrste podataka niza – sve vrijednosti niza trebaju biti u jednostrukim navodnicima.
  • Numerički tipovi podataka – sve numeričke vrijednosti trebaju se izravno navesti bez stavljanja u jednostruke ili dvostruke navodnike.
  • Vrste datumskih podataka – stavite datumske vrijednosti u jednostruke navodnike u formatu 'GGGG-MM-DD'.

Umetanje više redaka odjednom

Jedna INSERT naredba može sadržavati nekoliko redaka. Odvojite svaki skup vrijednosti zarezom. Jedna naredba je brža od više njih jer se indeks ažurira jednom.

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

MySQL Primjer upita INSERT INTO

Pretpostavimo da imamo sljedeći popis novih članova knjižnice koje je potrebno dodati u bazu podataka.

Puna imena Datum rođenja rod Fizička adresa poštanska adresa Kontakt broj Email adresa
Leonard Hofstadter Muški Woodcrest 0845738767
Sheldon Cooper Muški Woodcrest 0976736763
Rajesh Koothrappali Muški Woodcrest 0938867763
Leslie Winkle 14/02/1984 Muški Woodcrest 0987636553
Howarda Wolowitza 24/08/1981 Muški Južni park PO Box 4563 0987786553 lwolowitz@email.me

Umetnimo podatke redak po redak, počevši od Leonarda Hofstadtera. Broj kontakta tretirat ćemo kao numerički tip podataka i nećemo ga stavljati u jednostruke navodnike.

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

Izvršavanjem gornjeg skripta iz Leonardovog kontaktnog broja izostavlja se 0 jer se vrijednost tretira kao numerička, a vodeća nula nije značajna.

Kako bi se izbjegli takvi problemi, vrijednost mora biti zatvorena u jednostruke navodnike kao što je prikazano u nastavku.

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

⚠️ Savjet: Pohranite telefonske brojeve, poštanske brojeve i slične identifikatore u tekstualni stupac kao što je VARCHAR. Numerički stupci ne mogu sadržavati vodeću nulu.

Promjena redoslijeda stupaca

Promjena redoslijeda stupaca nema utjecaja na INSERT upit u MySQL, sve dok su ispravne vrijednosti mapirane na ispravne stupce. Upit u nastavku pokazuje ovu tvrdnju.

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

Gornji upiti preskočili su stupac datuma rođenja. Prema zadanim postavkama MySQL ubacuje NULL vrijednosti u stupce koji su izostavljeni iz INSERT upita.

Sada umetnimo zapis za Leslie, kojem je naveden datum rođenja. Vrijednost datuma mora biti zatvorena u jednostruke navodnike u formatu 'GGGG-MM-DD'.

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');

Izostavljanje popisa stupaca

Svi gore navedeni upiti imenovali su stupce i mapirali ih na vrijednosti. Ako navedemo vrijednosti za SVE stupce u tablici, popis stupaca može se izostaviti iz MySQL umetnite upit.

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

Iskoristimo sada SELECT izraz za pregled svih redaka u tablici članova.

SELECT * FROM `members`;
članski broj puna_ imena rod Datum rođenja fizička adresa poštanska adresa kontakt_ broj e-mail
1 Janet Jones ženski 21-07-1980 Prva ulica Parcela broj 4 Privatna torba 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones ženski 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Muški 12-07-1989 3. ulica 34 NULL 12345 rm@tstreet.com
4 Gloria Williams ženski 14-02-1984 2. ulica 23 NULL NULL NULL
5 Leonard Hofstadter Muški NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Muški NULL Woodcrest NULL 0976736763 NULL
7 Rajesh Koothrappali Muški NULL Woodcrest NULL 0938867763 NULL
8 Leslie Winkle Muški 14-02-1984 Woodcrest NULL 0987636553 NULL
9 Howarda Wolowitza Muški 24-08-1981 Južni park PO Box 4563 0987786553 lwolowitz@email.me

Primijetite da je kontaktni broj Leonarda Hofstadtera izostavio svoju vodeću nulu, točno kako je predviđeno. Navedeni brojevi su je zadržali.

Umetanje u tablicu iz druge tablice

Naredba INSERT također se može koristiti za umetanje podataka u tablicu iz druge tablice. Osnovna sintaksa je prikazana u nastavku.

INSERT INTO table_1 SELECT * FROM table_2;

Sada ćemo kreirati lažnu tablicu za kategorije filmova, pod nazivom categories_archive. Skript u nastavku stvara tablicu.

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`))

Izvršite gornji skript za izradu tablice. Sada umetnimo sve retke iz tablice kategorija u tablicu arhive kategorija.

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

Strukture tablica moraju biti iste da bi ta skripta radila. Robusnija skripta mapira nazive stupaca u odredišnoj tablici na one u tablici koja sadrži podatke, kao što je prikazano u nastavku.

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

Izvršavanje SELECT upita u nastavku daje sljedeće rezultate.

SELECT * FROM `categories_archive`;
kategorija_id category_name primjedbe
1 Komedija Filmovi s humorom
2 Romantičan Ljubavne priče
3 Ep Priča drevnih filmova
4 Užas NULL
5 Naučna fantastika NULL
6 triler NULL
7 Akcijski NULL
8 Romantična komedija NULL
9 Crtići NULL
10 Crtići NULL

Primjer PHP-a: Umetni u MySQL Stol

Za izvođenje se koristi funkcija mysqli_query SQL upite iz PHP-a. Izvršava naredbe Insert, Select, Update i Delete podjednako, a ima sljedeću sintaksu.

mysqli_query($db_handle,$query);

OVDJE,

  • “mysqli_query(…)” je funkcija koja izvršava SQL upite.
  • „$query“ je SQL upit koji treba izvršiti.
  • „$db_handle“ je veza za povezivanje s poslužiteljem koju vraća mysqli_connect.

Primjer

$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);
}

Pitanja i odgovori

MySQL odbacuje ga s pogreškom dupliciranog unosa. Koristite INSERT IGNORE za tiho preskakanje retka ili INSERT … ON DUPLICATE KEY UPDATE za ažuriranje postojećeg retka.

Pokrenite SELECT LAST_INSERT_ID() odmah nakon umetanja ili pozovite mysqli_insert_id($conn) u PHP-u. Vraća AUTO_INCREMENT ključ generiran za posljednji red na vašoj vlastitoj vezi.

Nikada ne spajajte korisnički unos u niz upita. Koristite pripremljene naredbe s vezanim parametrima kako bi vrijednosti putovale odvojeno od SQL i ne mogu se izvršavati kao naredbe.

Da. AI asistenti pretvaraju proračunske tablice ili obične opise u INSERT naredbe i MySQL Radna tezga može ih pokrenuti. Provjerite redoslijed stupaca i navođenje, jer model može pogoditi shemu.

Prvo ga umetnite u razvojnu kopiju. Redci generirani umjetnom inteligencijom mogu prekinuti strane ključeve, premašiti duljine stupaca ili izmisliti nevažeće datume. Pokrenite seriju u transakciji kako bi se mogla vratiti unatrag.

Sažmite ovu objavu uz: