Uvod u Umetanje u MySQL
Glavni cilj sustava baza podataka je pohranjivanje podataka u tablice. Za definiranje funkcionalnosti u bazi podataka imamo različite vrste SQL naredbi. U ovoj ćemo temi upoznati Insert u MySQL-u.
SQL naredbe mogu se kategorizirati u sljedeće:
- DDL (jezik definiranja podataka)
- DML (jezik za obradu podataka)
- DQL (jezik upita podataka)
- DCL (jezik kontrole podataka)
- TCL (jezik kontrole transakcije)
Ovdje u ovom članku ćemo se fokusirati uglavnom na DML. Kao što možemo vidjeti naziv Jezik za upravljanje podacima, tako da je jednom kada je stvorena tablica / baza podataka za manipuliranje nečim potrebnim DML naredbama. Zasluge korištenja ovih naredbi su ako u slučaju bilo kakvih pogrešnih promjena, možemo ih odvratiti / poništiti.
Slijede naredbe u DML-u:
1. INSERT: Koristi se za umetanje novih redaka u tablicu.
INSERT into employee
Values(101, 'abcd');
2. DELETE: koristi se za brisanje pojedinog retka ili čitavih zapisa u tablici.
DELETE TABLE employee;
3. UPDATE: Koristi se za ažuriranje postojećih zapisa u tablici.
UPDATE employee
SET col1 = new_col
WHERE condition;
Sintaksa naredbe za umetanje u MySQL
Izvod INSERT INTO možemo napisati na sljedeća dva načina.
Put br. 1
INSERT INTO table_name
VALUES (value1, value2, ….);
Put broj 2
INSERT INTO table_name (column1, column2, …….)
VALUES (value1, value2, ….);
- INSERT INTO table_name je naredba koja dodaje novi redak u tablicu pod nazivom `table_name` u MySQL bazi podataka.
- (stupac_1, stupac_2, …) su nazivi stupaca u koje će se dodati novi zapis.
- VALUES (vrijednost_1, vrijednost_2, …) određuje vrijednosti koje se dodaju u novi redak.
Prilikom dodavanja novih zapisa moramo biti oprezni prema definiranim tipovima podataka tijekom stvaranja strukture tablice.
- Niz: Sve vrijednosti stringova trebaju biti zatvorene jednim navodnicima.
- Numeričke: Numeričke vrijednosti ne smiju se nalaziti u jednom ili dvostrukom navodnju.
- Datum: Te vrste podataka trebaju biti u jednom navodu s formatom 'GGGG-MM-DD'.
Razmotrimo da postoji tablica "zaposlenika" koja se sastoji od sljedećih atributa:
Emp_id | Emp_name | Telefon | odjel | Menadžer | Grad | |
1001 | Vinay | 9876543219 | DOP | Sudhir | Bangalore | |
1002 | Raaj | 9764527848 | TO | Stephen | Hyderabad | |
1003 | sakti | 9567382784 | automobilski | Ved | Bhubaneswar |
Ako dodamo vrijednosti za sve stupce tablice, ne moramo navesti nazive stupaca u upitu, ali moramo biti sigurni da bi naš novi zapis trebao slijediti redoslijed stupca definiran u tablici.
INSERT INTO employee
VALUES (1004, 'Ravi', 9856478398, ' ', 'marketing', 'shiv', 'kolkata');
Ako nemamo sve vrijednosti stupaca pa ćemo umetnuti neke od njih, tada moramo u upitu navesti imena stupaca.
INSERT INTO employee (emp_id, emp_name, phone, email, manager)
VALUES (1005, 'sam', 9856478398, ' ', 'shivankar');
Implementacija Umetanje naredbe u MySQL
Razmotrimo da imamo slijedeće popise novih zapisa koje je potrebno dodati u tablicu baze podataka STUDENT.
Roll_no | Ime | Prezime | Standard | Telefon | Postotak | Grad |
1 | Sandeep | Kumar | 10 | 9876456726 | 89, 33 | Cuttack |
2 | Shyam | 9 | 76 | Bhubaneswar | ||
3 | sakti | Naik | 6463765776 | 76 | ||
4 | Sid | 8 | 9864876986 | Kolkata | ||
5 | Vinay | Kumar | 10 | 92 |
Te ćemo retke umetnuti jedan po jedan u bazu podataka.
- Krenimo od Sandeepa. Ovdje su 'Roll_no', 'Standard', 'Phone' i 'Postotak' numerička polja, tako da će se vrijednosti u ovaj stupac umetnuti bez navodnika.
INSERT INTO student
VALUES (1, 'Sandeep', 'Kumar', 10, 9876456726, 89.33, 'Cuttack');
Napomena: Kako imamo vrijednosti svih stupaca studentske tablice, ne trebamo navesti naziv stupca tijekom upotrebe naredbe INSERT. Ali moramo biti sigurni da bi naša vrijednost trebala slijediti redoslijed stupaca u tablici.
- U slučaju zapisa Shyam, možemo primijetiti da mnoge vrijednosti nedostaju. Dakle, ovdje moramo odrediti imena stupaca, u koje želimo umetnuti vrijednosti.
INSERT INTO student (Roll_no, First_name, Standard, Percentage, City)
VALUES (2, 'Shyam', 9, 76, 'Bhubaneswar');
Napomena: U ovom zapisu nemamo vrijednosti svakog stupca. Zato moramo odrediti sva imena stupaca u koje želimo umetnuti naše vrijednosti, a redoslijedom tih imena stupaca moramo spomenuti i vrijednosti.
INSERT INTO student (Roll_no, First_name, Last_name, Phone, Percentage)
VALUES (3, 'Sakti', 'naik', 6463765776, 76);
INSERT INTO student (Roll_no, First_name, Standard, Phone, City)
VALUES (4, 'Sid', 8, 9864876986, 'Kolkata');
INSERT INTO student (Roll_no, First_name, Last_name, standard, Percentage)
VALUES (5, 'Vinay', 'Kumar', 10, 92);
Promjena redoslijeda stupaca i vrijednosti neće imati utjecaja na INSERT upit jer se prava vrijednost ne može preslikati u desni stupac. Stoga mogu nastati problemi poput umetanja numeričke vrijednosti u niz ili obrnuto.
U svim gornjim upitima nedostaje toliko polja kao što su Prezime, Telefon, Grad. U takvim će slučajevima MySQL umetnuti zadane NULL vrijednosti u stupce koje smo preskočili u upitima.
Umetanje u tablicu iz druge tablice
Ako postoje 2 slične tablice i želimo podatke izravno umetnuti iz tablice_1 u tablicu_2 kako bismo izbjegli ručni rad, možemo upotrijebiti i drugu vrstu INSERT upita. U takvom slučaju moramo upotrijebiti naredbu SELECT s naredbom INSERT. U osnovi SELECT naredba dolazi pod DQL (jezik upita podataka), koji se koristi za pretraživanje / dohvaćanje podataka. Naredba za odabir također se može koristiti s mnogim vrstama klauzula.
Osnovna sintaksa za umetanje zapisa u jednu tablicu iz druge je sljedeća:
INSERT INTO table_1 SELECT * FROM table_2;
Primjer
Pogledajmo primjer naveden u nastavku:
1. Tablica narudžbe
Order_No | Order_department | Ime kupca | Contact_no | Količina | Mjesto |
8465637 | Namještaj | nestajati | 8659876766 | 1000 | Delhi |
9473636 | ukrasi | Alex | 9863769898 | 800 | Mumbai |
2. Tablica_arhiva
Order_No | Order_department | Ime kupca | Contact_no | Količina | Mjesto |
Ovdje imamo 2 tablice pod nazivom Poredak i narudžba. Ako ćemo sve zapise iz tablice Narudžbe premjestiti u Order_archive, zadatak može obaviti sljedeći kôd:
INSERT INTO Order_archive SELECT * FROM Order;
Ako želimo premjestiti neke određene stupce iz tablice Narudžbe u Order_archive, tada:
INSERT INTO Order_archive (Order_no, Order_department, Contact_no, Quantity)
SELECT Order_no, Order_department, Contact_no, Quantity FROM Order;
Zaključak
Naredba Insert vrlo je korisna jer se igra od vremena stvaranja tablice do svakog trenutka kad god postojećoj tablici dodamo još zapisa. Iz ovog članka možemo sažeti sljedeće točke:
- Naredba INSERT koristi se za dodavanje novih podataka u tablicu.
- Datum i vrijednost stringa trebaju biti u jednom navodu.
- Numerička vrijednost ne bi trebala biti u navodnicima.
- Prilikom umetanja zapisa u određene stupce, naziv i vrijednost stupca trebaju se preslikavati istim redoslijedom.
- Ova se naredba također može koristiti za umetanje zapisa iz jedne tablice u drugu tablicu.
Preporučeni članci
Ovo je vodič za Umetanje u MySQL. Ovdje raspravljamo o implementaciji Insert Command u MySQL uz odgovarajuće primjere i sintaksu. Možete pogledati i sljedeći članak.
- Što je MySQL shema?
- MySQL String funkcije
- Što je MySQL?
- Kako instalirati MySQL
- Primjeri za implementaciju INSERT-a u Oracle