1 / 89

Baze podataka

Lekcija 9. Baze podataka. Uvod u SQL Jezik relacione BP. SQL S tructured Q uery L anguage. Strukturni upitni jezik za RBP, modifikovana rel. algebra Razvio ga je IBM u okviru projekta System R Danas je SQL ugrađen u sve vodeće SUBP ANSI standard American National Standards Institute

Télécharger la présentation

Baze podataka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lekcija 9 Baze podataka Uvod u SQL Jezik relacione BP Predavanja

  2. SQLStructured Query Language • Strukturni upitni jezikza RBP, modifikovana rel. algebra • Razvio ga je IBM u okviru projekta System R • Danas je SQL ugrađen u sve vodeće SUBP • ANSI standardAmerican National Standards Institute • Standardizacija: • Zaštita programa od zastarevanja • Vertikalna kompatibilnost • Prenosivost programa na druge računare • Standardizacija za relacione BP • Prvi standard 1986, dopunjen 1989 • Značajnije dopune 1992. (ANSI SQL), 1995., 1999. • Razvoj SQL-a traje i danas Predavanja

  3. SQL • Svaki programski jezik obuhvata podatke i manipulacije nad tim podacima • SQL-jezik: • Objekti manipulacije su relacije • Rezultati manipulacija su relacije • Terminologija: • relacija  tabela • n-torka  red (vrsta) • Vrednosti u n-torkama za jedan atribut  kolona • SQL se zasniva na relacionom računu n-torki Predavanja

  4. SQL • SQL sadrži naredbe za: • definisanje relacija (shema) • ažuriranje podataka (unos, izmena, brisanje) • postavljanje upita • sortiranje i formatiranje ispisa • aritmetičke operacije nad podacima • definisanje pogleda (view) • kontrolu sigurnosti • itd.... • SQL podržava 3 osnovne funkcije BP: definicije, manipulacije i kontrolu Predavanja

  5. SQL- definicije - • Definicija BP: struktura, koje tabele, koji atributi, koji tipovi, koja ograničenja, pomoćni indeksi za direktan pristup(DDL – Data Definition Language) • CREATE TABLE – kreiranje tabele u BPDROP TABLE – uklanjanje tabele iz BP ALTER TABLE – izmena definicije tabeleCREATE INDEX – kreiranje indeksaDROP INDEX – uklanjanje indeksaCREATE VIEW – kreiranje pogledaDROP VIEW – uklanjanje pogleda Predavanja

  6. SQL- manipulacije - • Manipulacija BP: • upit nad bazom podataka (izveštavanje), • ažuriranje (unos, izmena, brisanje) • (DML – Data manipulation Language) • SELECT – prikaz željenog sadržaja RBPUPDATE – izmena vrednosti kolona tabeleDELETE – izbacivanje redova tabeleINSERT – dodavanje redova u tabelu Predavanja

  7. SQL- kontrola - • Kontrola pristupa podacima: • koji korisnici imaju pristup, • kojim podacima, • šta mogu da rade sa tim podacima • (DCL – Data Control Language) • GRANT (dodeljivanje ovlašćenja nad objektima baze drugim korisnicima od strane vlasnika) • REVOKE (ukidanje ovalašćenja dodeljenih pomoću GRANT) Predavanja

  8. SQL • SQL – neodgovarajući naziv - nije samo upitni jezik • SQL podržava oba režima rada sa BP: • Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko tastature, ishod se prikazuje na monitoru, pristup BP je ograničen jedino pravima korisnika • Programski: korisnik pokreće program u kome su ugrađene SQL naredbe, pristup BP je ograničen pravima korisnika i sadržajem programa • SQL blokovi ugrađeni u klasični viši programski jezik Predavanja

  9. SQL • Logičke operacije: AND, OR i NOT • Operacije poređenja: • =, <, >, , ,  • IN, ANY, ALL, BETWEEN, IS NULL, LIKE, … • Skupovne operacije: • UNION, INTERSECT, EXCEPT • Funkcije nad skupovima podataka: • COUNT, SUM, MIN, MAX, AVG • Izrazi se mogu grupisati pomoću zagrada Predavanja

  10. SQLtipovi podataka • INTEGER: (INT), ceo broj sa ili bez predznaka čiji broj cifara zavisi od konkretne implement. • SMALLINT: ceo broj sa brojem cifara manjim u odnosu na INTEGER • REAL: realni broj sa ili bez predznaka, preciznost zavisi od konkreten implement. • DOUBLE PRECISION: (DOUBLE), proširena preciznost u odnosu na REAL • DECIMAL(m,n): (DEC(m,n)), decimalni broj sa ili bez predznaka, m-cifara, a n-decimalnih Predavanja

  11. SQLtipovi podataka • CHARACTER(n): (CHAR(n)), niz znakova fiksne dužine n • Konstanta tipa CHAR se piše između jednostrukih navodnika • VARCHAR(n) - niz znakova dužine najviše n • TEXT – tekst proizvoljne dužine • Praktično sve implementacije SQL-a podržavaju dodatne tipove podataka kao što su: • BOOLEAN – TRUE/FALSE (tačno/netačno) • DATE – datum (‘2004-12-01’) • TIME – vreme (’16:50:07’) Predavanja

  12. SQL- sintaksa - • SQL ne pravi razliku između velikih i malih slova (case insensitive). Sledeće dve naredbe su jednake: • select prezime from osoba where ime = ‘Marko’; • SELECT prezime FROM osoba WHERE ime = ‘Marko’; • Komentari: • -- ovo je komentar • /* ovo je komentar koji se proteže u više redova */ • Za nazive (imena) se ne smeju koristiti rezervisane reči Predavanja

  13. SQL- sintaksa - • Separator naredbi:naredba1;naredba2; • FORMAT naredbi: Sledeće naredbe su ispravno napisane • SELECT * FROM student WHERE BrInd ≤ 100; • SELECT * FROM student WHERE BrInd ≤ 100; • SELECT * FROM student WHERE BrInd ≤ 100; Predavanja

  14. Kreiranje tabela • Prilikom kreiranja tabele (definicija njene strukture i osobina) neophodno je navesti: • Ime tabele, mora biti unikatno u BP • Ime svake kolone, mora biti unikatno unutar tabele • Tip svake kolone • Jedno ili više ograničenja za kolone, koje ih imaju • Jedno ili više ograničenja za svaku tabelu, ako postoje Predavanja

  15. Kreiranje tabela • Sintaksa naredbe kreiranja tabele:CREATE TABLE ImeTabele (ImeKoloneTipKoloneOgraničenjeKolone ...{, ImeKoloneTipKoloneOgraničenjeKolone ...} [OgraničenjeTabele{, OgraničenjeTabele}]); • ImeTabele i ImeKolone – pravila koja važe za većinu varijabli: prvi znak je slovo, ostali znaci su slova, cifre, posebni znaci itd.) • TipKolone – SQL tip podataka • Uz svaku kolonu mogu se navesti jedno ili više ograničenja za tu kolonu Predavanja

  16. Kreiranje tabela • Osnovne klauzule OgraničenjeKolone: • NOT NULL – u koloni nije dozvoljena NULL • UNIQUE – u koloni nije dozvoljeno ponavljanje iste vrednosti • PRIMARY KEY – kolona je primarni ključ, nije dozvoljena NULL vrednost niti ponavljanje vrednosti • CHECK (Predikat) – svaka vrednost u koloni mora da zadovolji uslov zadat logičkim izrazom Predikat. U izrazu se ne mogu navoditi druge kolone Predavanja

  17. Kreiranje tabela • DEFAULT=Konstanta– ako se prilikom unošenja jednog reda podataka u tabelu za kolonu ne zada vrednost, podrazumeva se Konstanta • REFERENCES ImeTabele - specifikacija referencijalnog integriteta za jednu kolonu • kolona je strani ključ u odnosu na tabelu ImeTabele, • mora imati ili vrednost primarnog ključa u toj tabeli ili NULL (ako nema NOT NULL ograničenja) Predavanja

  18. Kreiranje tabela • Za celu tabelu se mogu zadati: • ni jedno, • jedno ili • više ograničenja. • Ograničenja mogu da važe za jednu ili više kolona • UNIQUE(ListaKolona) – nije dozvoljeno ponavljanje istih vrednosti kombinacija • PRIMARY KEY(ListaKolona) – navedene kolone su primarni ključ,... • Konstrukcija ListaKolona označava:ImeKolone{, ImeKolone} Predavanja

  19. Kreiranje tabela • Klauzule za dinamičku specifikaciju referencijalnog integriteta, • Šta se dešava u slučaju pokušaja brisanja reda u ciljnoj tabeli ImeTabele, • Šta se dešava u slučaju pokušaja izmene vrednosti primarnog ključa u ciljnoj tabeli ImeTabele • DELETE OF ImeTabele{RESTRICTED CASCADES NULLS} • UPDATE OF ImeTabele{RESTRICTED CASCADES NULLS} Predavanja

  20. Kreiranje tabela • Sva ograničenja navedena u CREATE TABLE su aktivna u svakom trenutku postojanja tabele • SUBP će odbiti svaki pokušaj sa tabelom, koji je u suprotnosti sa ograničenjima • Olakšica za projektante i programere BP • Provere se ne moraju ugrađivati u aplikativne programe • Deklarativna moć naredbe CREATE TABLE je od velikog značaja, naročito kod dinamičke specifikacije referencijalnog integriteta Predavanja

  21. Kreiranje tabela • Primer: Kompletna definicija BP Biblioteka • CREATE TABLE Oblast (SifO CHAR(2) PRIMARY KEY,Naziv CHAR(20) NOT NULL UNIQUE ); • CREATE TABLE Naslov (SifN CHAR(4) PRIMARY KEY,Naziv CHAR(20) NOT NULLSifO CHAR(2) NOT NULL REFERENCES OblastUPDATE OF Oblast CASCADES,DELETE OF Oblast RESTRICTED ); Predavanja

  22. Kreiranje tabela • CREATE TABLE Autor (SifA CHAR(3) PRIMARY KEY,Ime CHAR(15) NOT NULL ); • CREATE TABLE Clan (SifC CHAR(3) PRIMARY KEY,Ime CHAR(15) NOT NULL ); • CREATE TABLE Knjiga (SifK CHAR(3) PRIMARY KEY,SifN CHAR(4) NOT NULL REFERENCES NaslovUPDATE OF Naslov CASCADES,DELETE OF Naslov RESTRICTED ); Predavanja

  23. Kreiranje tabela • CREATE TABLE Autor (SifA CHAR(3) PRIMARY KEY,Ime CHAR(15) NOT NULL ); • CREATE TABLE Clan (SifC CHAR(3) PRIMARY KEY,Ime CHAR(15) NOT NULL ); • CREATE TABLE Knjiga (SifK CHAR(3) PRIMARY KEY,SifN CHAR(4) NOT NULL REFERENCES NaslovUPDATE OF Naslov CASCADES,DELETE OF Naslov RESTRICTED ); Predavanja

  24. Kreiranje tabela • CREATE TABLE Je_Autor (SifA CHAR(3) REFERENCES Autor,SifN CHAR(4) REFERENCES Naslov,Koji INT NOT NULL CHECK(Koji>0)PRIMARY KEY (SifA,SifN),UPDATE OF Autor CASCADES,DELETE OF Autor RESTRICTED,UPDATE OF Naslov CASCADES,DELETE OF Naslov RESTRICTED ); Predavanja

  25. Kreiranje tabela • CREATE TABLE Drzi (SifK CHAR(3) PRIMARY KEYREFERENCES Knjiga,SifC CHAR(3) NOT NULL REFERENCES Clan,DatumDATE NOT NULLUPDATE OF Knjiga CASCADES,DELETE OF Knjiga RESTRICTED,UPDATE OF Clan CASCADES,DELETE OF Clan RESTRICTED ); Predavanja

  26. Primer Datum Sala Prezime Vreme Ime Ocena Ime Prezime BrInd Ispit Student Profesor Adresa IdProf Email NaucnoZvanje Telefon Predmet IdPredmeta NazivPredmeta Predavanja

  27. Primer • Primer: • Studenti(BrInd, Ime, Prezime, Adresa, Telefon, Email) • Profesori(IdProf, Ime Prezime, NaucnoZvanje) • Predmeti(IdPredmet, NazivPredmeta) • Ispit(Brind, IdPredmet, IdProf, Ocena, Sala, Datum, Vreme) Predavanja

  28. Primer • Kreiranje tabele Studenti • CREATE TABLE Studenti (BrInd INT PRIMARY KEY CHECK(0<BrInd≤300), Ime VARCHAR(20) NOT NULL,Prezime VARCHAR(20) NOT NULL,Adresa VARCHAR(50) NOT NULL,Telefon VARCHAR(15),Email VARCHAR(30)); Predavanja

  29. Primer • CREATE TABLE Ispit (BrInd INT REFERENCES Studenti, IdPredmet INT REFERENCES Predmeti,IdProf INT REFERENCES Profesori,Ocena INT NOT NULL CHECK (5≤Ocena≤10),Sala CHAR(5) UNIQUE,Datum DATE,Vreme TIMEPRIMARY KEY (BrInd,IdPredmeta,IdProf)UPDATE OF Studenti CASCADES,DELETE OF Studenti RESTRICTED,UPDATE OF Predmeti CASCADES,DELETE OF Predmeti RESTRICTED,UPDATE OF Profesori CASCADES,DELETE OF Profesori RESTRICTED); Predavanja

  30. Uklanjanje tabela • Izbor dinamičke specifikacije referencijalnih integriteta, kod uklanjanja predstavlja delikatnu operaciju • Ako se nepromišljeno koristi RESTRICTED, nameće se krut režim, npr. ne mogu se ukloniti pogrešno uneti podaci iz tabele • Naredba uklanjanja tabele iz BPDROP TABLEImeTabele ; • Tabela koja se uklanja mora biti prazna. U suprotnom SUBP neće izvršiti tu naredbu Predavanja

  31. Kreiranje indeksa • Indeks – pomoćna datoteka za ubrzanje pristupa podacima u osnovnoj datoteci • U osnovnoj datoteci zapisi se nalaze u nekom fizičkom redosledu (redosled unošenja) • Indeks – može se preuređivati u rastućoj ili opadajućoj vrednosti indeksnog niza • Sintaksa naredbe kreiranja indeksa:CREATE [UNIQUE] INDEX ImeIndeksa ON ImeTabele (ListaKolona) Predavanja

  32. Kreiranje indeksa • UNIQUE – opcija da indeks mora biti unikatan. U tabeli na koju se indeks odnosi ne sme se više puta ponoviti vrednost ListaKolona • ImeIndeksa – unikatni naziv indeksa u BP • Ime tabele – tabela na koju se indeks odnosi • ListaKolona – navođenje jedne ili više kolona, po kojima se formira INDEKS • Nad istom tabelom se može definisati više indeksa (za različite pristupe podacima) • Indeks se može kreirati odmah (dok je tabela prazna) ili naknadno Predavanja

  33. Kreiranje i uklanjanje indeksa • Klauzula UNIQUE u definiciji indeksa ima efekat na klauzulu UNIQUE kod tabele: • SUBP odbija svaku izmenu podataka u tabeli koja narušava unikatnost indeksa • SUBP odbija kreiranje unikatnog indeksa za tabelu čiji zatečeni sadržaj narušava tu unikatnost • Indeks se može bilo kada i bez obzira na sadržaj svoje tabele ukloniti naredbom:DROP INDEX ImeIndeksa Predavanja

  34. je_autor1 (SIFA) • AP0 • AP1 • DM0 • DM0 • IT0 • JN0 • ZP0 • ZP0 je_autor (SIFA SIFN KOJI) AP0 RBP0 1 JN0 RBP0 2 DM0 RK00 1 ZP0 PP00 1 DM0 PP00 2 AP1 PJC0 1 IT0 PP00 3 ZP0 PJC0 2 • je_autor2 (SIFN) • PJC0 • PJC0 • PP00 • PP00 • PP00 • RBP0 • RBP0 • RK00 Indeksi • Primer: Ako se želi brz pristup podacima u tabeli Je_Autor po dva osnova, po šifri autora i po šifri naslova, kreiraju se dva indeksa: • CREATE INDEX Je_Autor1 ON Je_Autor(SifA); • CREATE INDEX Je_Autor2 ON Je_Autor(SifN); Predavanja

  35. Indeksi • Napomene: • Svaka indeksna datoteka ima dva dela: • ListaKolona, po kojima se vrši pretraživanje i po kojima se vrši uređivanje indeksa • Indeks, koji služi za vezu sa osnovnom datot. • Primer: Kreiranje indeksa nad jednim atributom koji nije primarni. Zadata je tabela gradjanin (matbr#,prezime,ime,datrodj,adresa) • Redni broj zapisa (record number) vodi se u većini programskih paketa • Neka je INDGRAD indeksna datoteka Predavanja

  36. Indeksi gradjanin indgrad Predavanja

  37. Indeksi • Nisu svi atributi dobri kandidati za indeks. Npr. bit-map, text ili slika • Po pravilu su strani ključevi kandidati za indeks • Indeksiranje ima i svojih nedostataka: Prilikom ažuriranja osnovne tabele (brisanje, unošenje), mora se vršiti reindeksiranje, pa se gubi na vremenu. • Tabele sa malim brojem podataka u zapisu se ne indeksiraju, jer se pretraga može efikasno izvršiti brzim računarima. Predavanja

  38. Izmena postojeće tabele • Naredba ALTER • Sintaksa:ALTER TABLE ImeTabeleADD (ImeKolone Tip, [ImeKolone Tip]...); • Primer: U tabelu Odeljenje dodati kolone Sef_Od i Br_ZapALTER TABLE OdeljenjeADD (Šef_Od INTEGER, Br_Zap NUMBER(2)); • Primer: U istoj tabeli povećati dužinu za Br_ZapALTER TABLE OdeljenjeMODIFY (Br_Zap NUMBER(6)); Predavanja

  39. Kreiranje i uklanjanje pogleda • Osnovne tabele – fizički postoje na disku • Pogled – virtuelna (izvedena) tabela • Nastaje kao rezultat upita • Sintaksa naredbe kreiranja pogleda:CREATE VIEW ImePogleda [ListaKolona] AS Upit; • ImePogleda- unikatno ime u BP • Upit – naredba upita SELECT • Pogled nasleđuje tipove kolona iz osnovnihtabela • Uklanjanje – DROP VIEW ImePogleda; Predavanja

  40. Prednosti pogleda • Jednostavnost korišćenja, uprošćavaju se upiti • Tajnost, mehanizam za kontrolu pristupa podacima (korisnik vidi samo neke podatke) • Performanse, definicija pogleda se čuva u kompajliranom, prevedenom obliku • Nezavisnost podataka, menjaju se definicije pogleda, a ne aplikacije koji koriste podatke iz BP preko pogleda • Vrsta potprograma u SQL-u • Jednom kreiran može da se koristi u podupitima, u WHERE i HAVING klauzulama • Zamenjuje komplikovane upite Predavanja

  41. UPIT- SELECT - • Najznačajnija i najčešće korišćena SQL naredba za manipulaciju podacima • Kod svakog upita zadajemo (u principu): • Koje podatke tražimo kao rezultat, • Iz kojih tabela to tražimo, • Koji uslov treba da zadovolje podaci, da bi bili uključeni u rezultat • U kom redosledu želimo prikaz podataka Predavanja

  42. Prost upit nad jednom tabelom • Podrazumeva se naredba upita SELECT, nad jednom tabelom • Kao rezultat daje niz redova (ili jedan ili nijedan) koji zadovoljavaju eventualno zadati uslov • SELECT lista – podrazumeva se specifikacija podataka u rezultatu upita • Specifikacija – zadata jednim ili sa više izraza odvojenih zarezima (R-lista) • Rezultat upita ne mora biti relacija (unikatnost) Predavanja

  43. Prost upit nad jednom tabelom • Sintaksa • SELECT * {[ALL  DISTINCT] R-Lista} FROM ImeTabele [WHERE R-Predikat] [ORDER BY ImeKolone [DESC] {, ImeKolone [DESC]} …]; • *- Specijalni slučaj R-liste, kada u rezultat želimo da uključimo sve kolone tabele • ALL– iz rezultata neuklanja istovetne redove,DISTINCT– suprotno. Podrazumeva se ALL. • R-Listase zadaje kao jedan ili više R-Izraza, pored naziva kolone javljaju se i konstante Predavanja

  44. Prost upit nad jednom tabelom • Klauzula FROM (“odakle”), specificira se ImeTabele. To je ime osnovne tabele ili pogleda nad kojim se vrši upit. Ovo je obavezna klauzula. • R_Predikat , uslov prikazivanja rezultata, • to je logički izraz izračunljiv nad svakim pojedinim redom tabele. • Rezultat upita se dobija samo za one vrednosti R_Predikata koje daju istinitosnu vrednost. • Najčešće je to relacioni izraz (>,<,=,…) sa kolonama,a sa desne strane može se javiti i konstanta • ORDER BY – daje željeni redosled prikaza rezultata. Podrazumeva se rastući redosled (ASC). U suprotnom se navodi DESC uz odgovarajuću kolonu. Uvek je poslednja klauzula u SELECT bloku. Predavanja

  45. Prost upit nad jednom tabelom • Najjednostavniji mogući SQL upit je u formi:SELECT * FROM ImeTabele; • Ova naredba prikazuje sve redove tabele čije je ime navedeno iza FROM klauzule • U svakom redu prikazuju se vrednosti svih kolona, onim redom kako je to zapisano u datoteci (tj. kreirano sa CREATE TABLE) • Kod upita se obično traži prikaz samo određenih kolona, ili prikaz svih kolona u redosledu koji je drugačije određen. • Ovo odgovara operaciji projekcije, ali se ne elimišu višestruka ponavljanja istih vrednosti Predavanja

  46. Prost upit nad jednom tabelom • Primeri: Upiti sa dobijenim rezultatima • Upit za prikaz cele tabele – (simbol *) • Ogovara restrikciji  - kada nema uslova PSELECT *FROM Student ; Student SELECT Predavanja

  47. Prost upit nad jednom tabelom • Upit za prikaz cele tabele u željenom redosleduSELECT * FROM StudentORDER BY Ime; Student SELECT Predavanja 28.11.2006. Predavanja 47

  48. Prost upit nad jednom tabelom • Upit za prikaz samo jedne kolone iz tabele i bez eliminacije duplikata SELECT FakultetFROM Student; Student SELECT Predavanja

  49. Prost upit nad jednom tabelom • Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata :SELECT DISTINCT FakultetFROM Student; Student SELECT Predavanja 28.11.2006. Predavanja

  50. Prost upit nad jednom tabelom • Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata , a u željenom redosledu:SELECT DISTINCT FakultetFROM StudentORDER BY Fakultet ; Student SELECT Predavanja 28.11.2006. Predavanja

More Related