220 likes | 442 Views
SQL. Kratki uvod u SQL. SQL - S tructured Q uery L anguage /Struktuirani upitni jezik/ Razvoj SQL-a počinje 1974. godine kada se pojavljuje članak autora D. D. Chamberlaina i R. F. Boycea u kojem oni opisuju strukturni upitni jezik za pretraživanje podataka nazvan SEQUEL.
E N D
Kratki uvod u SQL • SQL- Structured Query Language /Struktuirani upitni jezik/ • Razvoj SQL-a počinje 1974. godine kada se pojavljuje članak autora D. D. Chamberlaina i R. F. Boycea u kojem oni opisuju strukturni upitni jezik za pretraživanje podataka nazvan SEQUEL. • Godine 1975. Boyce, Chamberlain i M. Hammer predstavljaju koncept jezika SQUARE koji je koristio matematičke izraze, za razliku od engleskih termina koje je koristio SEQUEL. Uskoro SQUARE mijenja ime u SEQUEL2 i taj jezik je korišten u razvoju prvog prototipa relacijskog sustava za upravljanje bazama podataka, nazvanog “System R” razvijenog u laboratorijima IBM-a. • Kasnije jezik mijenja ime u SQL.
Kratki uvod u SQL • SQL je standardiziran od strane ISO (International Standardization Organisation) i ANSI instituta (American National Standards Institute) i danas se koristi u većini relacijskih sustava baza podataka. • SQL spada u neproceduralne jezike, što znači da korisnik pomoću njega definira što želi dobiti, a ne kako će to dobiti. • Kao osnovne osobine SQL-a mogu se izdvojiti sljedeće: • English-like jezik. Koristi riječi kao što su: select (odaberi), insert (dodaj), delete (obriši) kao dio naredbe. • Ne-proceduralni jezik • U jednom trenutku češće obrađuje skup slogova nego jedan slog tablice
Kratki uvod u SQL • Mogu ga koristiti korisnici različitog profila: administratori baze podataka, aplikativni programeri, neprofesionalni korisnici. • Osigurava naredbe za različite zadaće uključujući : • upite nad podacima, • dodavanje, mijenjanje i brisanje redaka u tablicama, • kreiranje, mijenjanje i brisanje objekata sheme, • kontrolu pristupa bazi podataka i objektima sheme, • konzistentnost baze podataka. • SQL izrazi mogu se razvrstati u nekoliko skupina : • izrazi za upravljanje podacima (engl. Data Manipulation Language Statements - DML), • izrazi za definiranje podataka (engl. Data Definition Language Statements - DDL), • izrazi za kontrolu transakcija (engl. Transaction Control Statements),
Kratki uvod u SQL • izrazi za kontrolu sesije (engl. Session Control Statements), • izrazi za kontrolu sustava (engl. System Control Statements), • ugrađeni SQL izrazi (engl. Embedded SQL Statements). • Dva su osnovna načina primjene SQL –a: • Direktno (interaktivno) korištenje SQL –a • Ugrađeni (embedded) SQL kod u kod nekog programskog jezika. • Rad sa SQL –om se odvija u tzv. transakcijama. Transakcija je grupa SQL naredbi koje se izvršavaju sve ili ni jedna. Da li će sve promjene i fizički biti zapisane u bazu ovisi o posljednjoj naredbi transakcije – commit ili rollback.
Osnovne naredbe SQL -a • KREIRANJE TABELA • Opći oblik SQL naredbe za kreiranje tablica u relacijskom modelu je: CREATE TABLE <ime-tablice> <definicija atributa> • Definicija atributa ima oblik: <ime stupca tip podataka> < [NOT NULL]> CREATE TABLE Proizvodi (ID INTEGER NOT NULL, Naziv CHAR(50), JM CHAR(10), Kolicina DECIMAL(10,2), Cijena DECIMAL(10,2), PRIMARY KEY (ID))
Osnovne naredbe SQL -a • UNOS PODATAKA U TABLICU • Opći oblik SQL naredbe za unos podataka je: INSERT INTO ime-tablice (lista_atributa) VALUES (lista_vrijednosti) INSERT INTO Proizvodi VALUES (1,’Miš optički’,’kom’,100,10.25) ili INSERT INTO Proizvodi (ID,naziv,cijena) VALUES (5,’HD Seagate250’,120.25) • Naredba omogućava i unos podataka iz neke druge tablice i tada ima oblik: INSERT INTO ime-tablice (lista_atributa) SELECT lista_atributa FROM ime-tablice2 WHERE uvjet
Osnovne naredbe SQL -a • PROMJENA STRUKTURE TABLICE • Opći oblik naredbe koja omogućava dodavanje novih stupaca (atributa) u tablicu je: ALTER TABLE ime-tablice ADD COLUMN def-atr ALTER TABLE Proizvodi ADD COLUMN jm decimal (5,2) • Izbacivanje (brisanje) atributa iz tablice izvodi se naredbom: ALTER TABLE ime-tablice DROP COLUMN ime-atributa
Osnovne naredbe SQL -a • Važniji tipovi podataka • CHAR (n) – tekstualni podatatak maksimalne dužine n znakova (karaktera) • DECIMAL (x,y) i NUMERIC (x,y) – decimalni broj s predznakom sa ukupno x cifara, od kojih je y decimala • INTEGER – cijeli broj (32 bita) • SMALLIINT – cijeli broj iz manjeg opsega, zauzima manje memorije (16 bita) • FLOAT, REAL i DOUBLE - mali ili veliki realni brojevi • DATE – datum u formatu yyyy-mm-dd • TIME – vrijeme u formatu hh:mm:ss
Osnovne naredbe SQL -a • PRETRAŽIVANJE PODATAKA • Dohvaćanje (pretraživanje) podataka je najčešća operacija koja se izvodi nad sadržajem tablica (relacija). Za to u SQL postoji naredba SELECT čija je sintaksa: SELECT [All/DISTINCT] <lista atributa> FROM <lista tablica> WHERE <uvjet>; gdje je: <Lista atributa> - stupci (atributi) tablica (relacija) koji se žele u rezultatu. <Lista tablica> - tablice (relacije) koje se pretražuju, <Uvjet> - uvjet koji moraju zadovoljiti n-torke da bi bile odabrane
Osnovne naredbe SQL -a • Primjer1: Iz tablice proizvodi prikazati sve proizvode i njihove cijene. SELECT naziv, cijena FROM proizvodi; • Primjer2: Iz tablice proizvodi prikazati nazive artikala, količine i cijene samo za artikle jeftinije od 10,00KM. SELECT naziv,kol,cijena FROM proizvodi WHERE cijena<10; • Primjer3: Iz tablice proizvodi prikazati nazive artikala, količine i cijene samo za artikle jeftinije od 10,00KM i kojih je na stanju manje od 20. (URADITI SAMOSTALNO)
Osnovne naredbe SQL -a • Operatori u Where klauzuli, pored standardnih operatora poređenja (=,>,<,<>,>=,<=) mogu biti i logički: • AND, OR i NOT. • Također se primjenjuju i operatori BETWEEN (za definiranje raspona ili intervala vrijednosti), IN (zamjenjuje višestruku primjenu operatora OR) i LIKE (omogućava pretraživanje na osnovu uzorka). • Primjer4 (primjena AND operatora): Ispisati nazive, cijene i količine svih artikala čija je cijena manja od 10.00 KM i kojih je na stanju više od 50. Select naziv From Proizvodi Where cijena<10 and kolicina>50;
Osnovne naredbe SQL -a • Primjer5 (primjena OR operatora): Ispisati nazive i cijene svih artikala čija je cijena manja od 10.00 KM kao i onih čija je cijena veća od 100.00KM. Podatke sortirati prema nazivu artikla u rastućem redoslijedu (a-ž). Select naziv,cijena From Proizvodi Where cijena<10 or cijena>100 Order by naziv; • Primjer6 (primjena NOT operatora): Ispisati nazive i cijene onih artikala koji su skuplji od 10.00KM. Podatke sortirati prema cijeni u opadajućem redoslijedu. Select naziv,cijena From Proizvodi Where not (cijena<10) Order by cijena desc;
Osnovne naredbe SQL -a • Primjer7 (primjena operatora BETWEEN): Ispisati nazive, cijene i količine svih artikala kojih je na stanju između 10 i 20 Select naziv,cijena,kolicina From Proizvodi Where kolicina between 10 and 20; • Primjer8 (primjena IN operatora): Ispisati imena, podignute iznose i periode na koje su krediti podignuti za sve klijente banke koji su kredit podigli na 6, 12 ili 24 mjeseca Select imeprezime, iznos, period From krediti Where period IN (6,12,24);
Osnovne naredbe SQL -a • Primjer9 (primjena operatora LIKE): Ispisati imena i iznose kredita koje su podigle osobe prezimena “Perić” Select imeprezime, iznos From krediti Where period imeprezime like ‘%Perić%’; • Primjer10: Ispisati imena, podignute iznose, periode i trenutne dugove za sve klijente koji su kredit podigli u iznosu većem od 20 000, na period od 12, 24 ili 36 mjeseci a trenutno duguju između 5 000 i 10 000. Podatke sortirati prema visini duga u opadajućem redoslijedu. (URADITI SAMOSTALNO)
Osnovne naredbe SQL -a • PROMJENA (AŽURIRANJE) PODATAKA • Izmjena vrijednosti podataka (ažuriranje) u tablici postiže se uporabom naredbe UPDATE, čija je sintaksa: UPDATE <ime-tablice> SET <atribut = izraz> WHERE <uvjet>; U svim n-torkama u relaciji koje zadovoljavaju uvjet mijenja se (ažurira) vrijednost navedenih atributa. P1:UPDATE krediti SET period=24 where period=12; P2: UPDATE proizvodi SET cijena=cijena*0.8 where cijena>=1000;
Osnovne naredbe SQL -a • BRISANJE PODATAKA • Za brisanje podataka iz tablice koristi se SQL naredba DELETE, čija je sintaksa: DELETE FROM <ime-tablice> WHERE <uvjet> • Ovom naredbom se brišu sve n-torke koje zadovoljavaju postavljene uvjete. Npr. Delete From proizvodi Where kolicina=0;
Osnovne naredbe SQL -a • AGREGATNE FUNKCIJE • Pored prikazivanja prostih vrijednosti memoriranih u tabelama (relacijama) BP –a, SQL podržava i nekoliko funkcija za dobivanje izvedenih, sumarnih informacija. • Takve funkcije nazivamo agregatnim funkcijama. • Primjena agregatnih funkcija zahtijeva određeni način grupiranja redova tablice nad kojom se ove funkcije primjenjuju. • Svaka agregatna funkcija generira jedan rezultujući red za svaku grupu redova. Ukoliko grupiranje nije eksplicitno specificirano čitava tablica se tretira kao jedna grupa.
Osnovne naredbe SQL -a • Najznačajnije agregatne funkcije su: • AVG (atribut) – izračunava srednju vrijednost • SUM (atribut) – izračunava ukupnu vrijednost (sumu) • MIN (atribut) – nalazi najmanju vrijednost • MAX (atribut) – nalazi najveću vrijednost • COUNT (*) – nalazi broj redova (zapisa) u grupi • COUNT ([ALL] atribut) – nalazi ukupan broj definiranih (not null) vrijednosti • COUNT ([DISTINCT] atribut) – nalazi ukupan broj različitih definiranih (not null) vrijednosti • Primjer11: Naći najmanju, srednju i najveću platu, kao i broj radnika u odjeljenju 10. Select min (plata), avg (plata), max (plata), count (*) From Radnik Where odjeljenje=10;
Osnovne naredbe SQL -a • Primjer12: Naći ukupnu platu i ukupnu premiju za trgovačke putnike. Select sum (plata), sum (premija), From Radnik Where posao=‘trgovački putnik’; • Primjer13: Koliko je srednje godišnje primanje trgovačkih putnika? Select avg (plata+premija)*12, From Radnik Where posao=‘trgovački putnik’;
Osnovne naredbe SQL -a • GROUP BY klauzula • Služi za dobivanje jednog rezultujućeg reda za svaku različitu vrijednost kolone po kojoj se vrši grupiranje. • Grupiranje se može vršiti i po više kolona i u tom slučaju svaka različita kombinacija vrijednosti kolona čini grupu. • Primjer14: Naći minimalnu, srednju i maksimalnu platu i ukupan broj radnika za svako odjeljenje. Select min (plata), avg (plata, max (plata), count (*), odjeljenje From radnik Group by odjeljenje; • Zadatak: Ispisati ukupan broj radnika koj obavljaju različit posao unutar svakog odjeljenja.
Osnovne naredbe SQL -a • Rješenje: Select odjeljenje, posao, count(*) From Radnik Group by odjeljenje, posao; • HAVING klauzula • Određuje kriterije za selekciju grupa koje su prethodno specificirane GROUP BY klauzulom. • Primjer15: Prikazati koje poslove obavlja više od dva dadnika u svakom odjeljenju Select odjeljenje, posao, count(*) From Radnik Group by odjeljenje, posao Having count(*)>2 ;