DML - manipulisanje podacima - INSERT, DELETE, UPDATE
Pod jezikom za manipulisanje podacima (Data Manipulation Language) podrazumevaju se naredbe za rad sa samim podacima u bazi. Pod manipulisanjem (rukovanjem) podacima se podrazumeva:
- unos (dodavanje) podataka
- pregled (korišćenje) podataka
- izmena podataka
- uklanjanje podataka
Unos podataka - INSERT
- koristi se za unos podataka u tabele baze podataka.
Postoje 3 načina korišćenja naredbe INSERT:
- unoos vrednosti SVIH atributa (kolona)
- unos vrednosti samo NEKIH atributa (kolona)
- unos podataka iz jedne tabele u drugu
Unos vrednosti NEKIH atributa / kolona:
Ako želimo da unesemo vrednost za samo neke atribute (kolone), nazivi tih atributa se moraju eksplicitno navesti.
Pogledajte kako to izgleda:
INSERT INTO table_name (co1, co2, co3)
VALUES (vrednost_co1, vrednost_co2, vrednost_co3);
Pomoću ovoga se ubacuju podaci u jedan red. Redosled pod kojim se podaci upisuju mora da odgovara redosledu navedenih kolona unutar prve zagrade.
Unos vrednosti SVIH atributa (kolona):
Ako se trebaju unositi podaci na sva mesta - sve kolone redom - ne moraju se navesti imena kolona:
INSERT INTO table_name VALUES (value_1, value_2, value_3);
Za svaki atribut MORA postojati vrednost, pri čemu je NULL dozvoljena opcija za svaki atribut koji nije NOT NULL.
*****
Da bi se popunilo više redova odjednom, koristi se zarez da bi se razdvojile vrednosti za pojedine redove, kao što je u nastavku:
INSERT INTO table_name
VALUES
(value_1, value_2, value_3),
(value_21, value_22, value_23),
(value_31, value_32, value_33),
Ovo gore će da popuni 3 reda, pod pretpostavkom da su 3 kolone u svakom od redova.
Unos podataka iz jedne tabele u drugu:
Ukoliko obe tabele imaju isti broj atributa i ukoliko su atributi identično definisani, naredba INSERT je sledećeg oblika:
INSERT INTO Tabela1 SELECT * FROM Tabela2;
inače:
INSERT INTO tabela1 (atribut1, atribut2, ...)
SELECT atribut1, atribut2
FROM tabela2
WHERE kriterijum selekcije;
Uklanjanje podataka - DELETE
Ovde se misli na uklanjanje podataka iz neke (jedne ili više) od tabela u bazi podataka. moguće je ukloniti samo kompletne redove tabela. (Uklanjanje vrednosti parametara zapisa se vrši pomoću naredbe UPDATE).
Uklanjanje podataka se u SQL-u vrši naredbom DELETE.
DELETE FROM ime_tabele
[WHERE where_condition]
[ORDER BY ... ]
[LIMIT broj_redova]
Osnovni oblik komande DELETE kojom će da se uklone svi zapisi iz tabele Ucenici:
DELETE FROM Ucenici;
Ukoliko treba da se uklanjanje vrši samo za neke određene zapiise (redove), neophodno je koristiti ključnu reč WHERE:
DELETE FROM Ucenici
WHERE Ime="Pera";
Parametar LIMIT služi za ograničavanje broja redova na koje će da se primeni uklanjanje:
DELETE FROM Ucenici
LIMIT 3;
U poslednjem slučaju, izbrisaće se 3 reda iz tabele Ucenici.
Izmena podataka - UPDATE
Ovde se misli na izmenu podataka u nekoj (jednoj ili više) od tabela u bazi podataka. Moguće je izmeniti jedan ili više parametara (kolona) jednog ili više zapisa (redova).
Izmena podataka se u SQL-u vrši naredbom UPDATE
UPDATE tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ ORDER BY ...]
[ LIMIT row_count]
Recimo da imamo tabelu Proiyvodi, i u njoj kolone Naziv_proizvoda, Cena, Jedinica_mere, Zemlja_porekla. Ako bismo hteli da svim proizvodima u tabeli postavimo istu cenu (na primer 100) :
UPDATE Proizvod
SET Cena=100;
Ukoliko je potrebno da se izmena primeni samo na određene zapise (redove), koristi se ključna reč WHERE :
UPDATE Proizvod
SET Cena=200
WHERE Zemlja_porekla='Srbija';
Ukoliko je potrebno više parametara (kolona) izmeniti pomoću jednog upita, potrebno je navesti više kolona i vrednosti odvojenih zarezom:
UPDATE Proizvod
SET Cena=300, Jedinica_mere='cm'
WHERE Zemlja_porekla='Srbija';
Ako treba da se koristi već postojeća vrednost iz neke od drugih kolona , onda se za vrednost navodi naziv kolone zapisa čija se vrednost koristi:
UPDATE ProizvodAko treba da se za vrednost koristi već postojeća vrednost uz primenu neke matematičke operacije:
SET Cena=Sifra
WHERE Zemlja_porekla='Srbija';
UPDATE Proizvod
SET Cena=Cena*1.15;
Ako se koristi parametar LIMIT, to će da izvrši ograničavanje broja zapisa na koje će da se primeni izmena.