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: