SQL Server komande - DML, DDL, DCL, TCL

Saturday, May 21, 2016


SQL Server komande (DDL, DML, DCL i TCL) su teme ovog blog posta u kojem ću nastojati pojasniti koje komande spadaju u koju grupu, te se nadam da ću na konkretnim primjerima pokazati upotrebu istih.

Za one koji se prvi put susreću sa SQL-om i standardnim komandama (mada mislim da je takvih malo na mom blogu)... jednostavno rečeno SQL komande su instrukcije koje mi koristimo kroz različite upite (query) u komunikaciju sa našom bazom podataka.

Putem ovih komandi možemo raditi svu administraciju naše baze kao i povlačiti/čitati podatke, raditi izmjene nad njima, brisati ih, kopirati itd...

Nije rijedak slučaj da se upravo kroz njih kreira baza podataka sa tabelama i neophodnim relacijama između naših tabela.

U ovom blog postu ću uglavnom pisati o SQL Server komandama koje su manje više jednake kao i na svim ostalim DBMS okruženjima,

SQL Server komande podjeljene u četri ključne logičke grupe, a to su:

  • Data Manipulation Language (DML)
  • Data Definition Language (DDL)
  • Data Control Language (DCL
  • Transaction Control Language (TCL)

Koristeći ove komande mi definišemo strukture naše baze podataka, radimo unos i izmjenu te vršimo kontrolu privilegija koje korisnik ima nad bazom podataka.


Ja ću krenuti objašnjavati pojedine komande kao što su i grupisane na slici, pa ćemo prvo krenuti sa Data Manipulation Language grupom komandi.


Data Manipulation Language - DML

DML komande se uglavnom odnose na manipulaciju sa rekordima u tabeli, pa tako sa njima možemo da uzimamo/povlačimo rekorde po određenom kriterijumu, da unosimo nove podatke u tabelu, da editujemo postojeće i naravno da brišemo rekorde koji nam nisu više potrebni.

DML komande su:

SELECT - selektujemo/povlačimo rekorde iz tabele u bazi podataka,
INSERT - unos novih rekorda u tabelu,
UPDATE - editovanje/izmjena već postojećih rekorda,
DELETE - brisanje postojećih rekorda u tabeli

DML komande se uglavnom na sličan način koriste i po svom nazivu jako je jednostavno za shvatiti čemu služe u praksi, na sljedećoj slici imamo primjer sve četri komande nad tabelom.


Kratki komentar na komade navedene na primjeru,

Iz SELECT dijela vidimo jako jednostavnu upotrebu, navodimo ključnu riječ SELECT potom asterisk znak koji zamjenjuje "sve", a "sve" upravo znači da u output dijelu želimo sve kolone iz tabele employee, u slučaju da ne želimo sve kolone potrebno je bilo navesti pojedine kolone koje želimo koristiti... također u SELECT dijelu smo mogli koristiti i WHERE klauzulu pomoću koje bismo filtrirali naš izlaz za određene rekorde prema navedenom kriteriju.

INSERT komanda je jako jednostavna, nakon ključne riječi INSERT slijedi ime tabele (INTO možemo, a i ne moramo da koristimo) poslije imena tabele u zagrada možemo specificarati koje atribute unosimo... nakon toga slijedi ključna riječ VALUES unutar čijih zagrada navodimo podatke za unos, raspored navedenih kolona/atributa rekorda moraju se poklapati sa podacima koje unosimo.

UPDATE je jako korisna komanda koja se koristi kada želimo raditi izmjenu podataka u tabeli po sintaksi je jako jednostavna i kao što na slici vidimo poslije ključne riječi UPDATE navodimo ime tabele nakon toga SET i kolonu koju želimo izmjeniti nakon toga poslije znaka jednako navodimo novu vrijednost (moguće je kombinirati više kolona koje odvajamo zarezom)... nakon toga najvažnija stvar je da navedemo klauzulu WHERE sa kojom specificiramo koji rekord u bazi izmjenjujemo a za to nam je najpogodniji jedinstveni identifikator rekorda u tabeli.

DELETE jako moćna komanda sa jako jednostavnom sintaksom, poslije ključne riječi DELETE navodimo tabelu iz koje brišemo rekord nakon toga najvažniji dio je klauzula WHERE u kojoj kao i UPDATE definišemo kriterij po kojem brišemo rekord

Oprez: UPDATE i DELETE bez klauzule WHERE izmjenjuju odnosno brišu sve rekorde u tabeli!


Data Definition Language - DDL

DDL komande kao što i njihov naziv govori koristimo za definisanje i izmjenu objekata baze podataka (Tabela, Procedura, View-a...). Ove komande se uglavnom brinu o dizajnu i strukturi baze podataka.

DDL komande su:

CREATE - kreiramo novu tabelu, bazu, proceduru, view...
ALTER - obično koristimo za izmjene u tabeli npr. za dodavanje ili uklanjanje atributa
DROP - koristimo za brisanje objekata iz naše baze podataka

Njihovu upotrebu možemo vidjeti na jako jednostavnom primjeru sa slike ispod:



Kao i za prošlu sliku kratki komentar na svaku komandu ponaosob.

CREATE TABLE kreiramo u ovom slučaju novu tabelu u čijem tijelu navodimo atribute koje će posjedovati ova tabela. Također na jako sličan način komandu CREATE koristimo i za kreiranje Viewa, Procedura i Triggera...

ALTER nam služi za izmjenu objekata baze podataka, na slici iznad imamo primjer u kojem smo dodali kolonu "GodinaRodjenja" u tabelu Osoba.

DROP koristimo kada želimo ukloniti/izbrisati objekte iz baze podataka bilo da je riječ o tabeli, view, proceduri ili trigeru na isti način koristimo ovu komandu kobinacijom ključne riječi DROP nakon čega slijedi naziv objekta i njegovo ime.


Data Control Language - DCL

DCL komande primarno koristimo za kontrolu pristupa podataka koje korisnici baze podataka imaju. Sa njima možemo odobriti ili zabraniti određenim korisnicima pristup pojedinim tabelama ili rekordima u njima (row level security).

DCL komande su:

GRANT - dajemo određene privilegije nad tabelom (ili ostalih objekata) oređenim korisnicima,
DENY - oduzimamo navedenu privilegiju od korisnika koja mu je predhodno dana.
REVOKE - povlačimo tj. oduzimamo privilegije sa tabele (ili ostalih objekata) od korisnika i vracamo je na predhodnu.

Primjer upotrebe ove tri komande je na slijedećoj slici:


GRANT komandom u prvom slučaju sam korisniku imena almir dodjelio privilegije SELECT, INSERT, UPDATE i DELETE nad tabelom employees.

REVOKE sa ovom komandom sam povukao privilegiju INSERT nad tabelom employees od korisnika "almir" i vratio na predhnodno stanje.

DENY je jako specifična komanda i ako bolje pogledamo svaki korisnik ima listu privilegija koje su mu DENY i koje su mu GRANT, REVOKE vam uklanja privilegiju koje ste dobili a DENY vam eksplicitno zabranjuje da to koristite.


Transaction Control Language - TCL

Sa TCL komandama imamo mogućnost upravljanja i kontrole T-SQL transakcija kako bismo bili sigurni da se očuvao integritet podataka i uspješno izvršavanje transakcije.

TCL komande su:

BEGIN TRAN - početak transakcije u bazi podataka,
COMMIT TRAN - potvrda izvršene transakcije,
ROLLBACK - vraćanje na početak transakcije ako je došlo do problema u izvršavanju.



Na predhodnoj slici imamo primjer sve tri komande kombinovane u jednu transakciju. Sa BEGIN počinjemo tj. otvaramo transakciju u kojoj kao što na slici vidimo editujemo određenog autora sa određenim ID-ijem... upit je manje više jasan i jedan i drugi, a najzanimljiviji je dio u IF-ELSE iskazu gdje mi u slučaju da nam je broj rekorda koje izmjenimo jednak pet tada ovu transakciju potvrđujemo  sa COMMIT ili u suportnom je vraćano na početak... Kao što i možemo vidjeti sa slike mi ovim upitom editujemo dva rekorda u tabeli i samim time vrlo je jednostavno za predpostaviti da će se izvršiti ROLLBACK komanda koja vraća transakciju u početno stanje tj. poništava ono sve što je predhodno bilo promjenjeno.

Nadam se da sam vam sa ovim blog postom približio osnove SQL komandi i njihovih grupa, ja sam se u ovom blog postu vodio osnovnim grupama... istina je da postoje neki koji uvode još neke grupe te pojedine komande prebacuju u njih, ali ovaj blog post i njegov sadržaj se bavio osnovim grupama kada shvatimo njihov raspored u njima mnogo je lakše shvatiti uvođenje novih grupa i njihov razlog za to.

Ako vam je ovaj blog post bio od pomoći podijelite ga sa vašim prijateljima ili kolegama kako bi došao do što više ljude, uskoro dolazi i engleska verzija ovog tutorijala.

Pozdrav! Almir Vuk | AV Development | http://almirvuk.blogspot.ba/

You Might Also Like

0 comments