SQL - Odjel za matematiku

Download Report

Transcript SQL - Odjel za matematiku

Jezik za rad s relacijskom bazom podataka
Maja Petekić
Prisjetimo se . . .
Baza podataka
 mjesto na kojemu se čuvaju podaci
Relacijska baza podataka
 ona baza podataka u kojoj
se podaci čuvaju u tabelama
i koja istovremeno vodi
evidenciju o tome kako su te
tabele međusobno povezane
Tabela
 objekt u kojemu se čuvaju podaci
 svaka tabela sadrži podatke o određenom entitetu
Sadržaj . . .
1.
Naredbe (za definiranje podataka, za rukovanje podacima, za
2.
3.
4.
5.
6.
Ključne riječi
Detaljan opis naredbi
View (pogled)
Primjer
Formiranje upita (upiti nad jednom tabelom, upit nad jednom
7.
Standardni način povezivanja SQL-a s višim programskim
jezicima
Kursori
8.
upravljanje podacima)
tabelom uz prikaz modificiranog sadržaja tabele, ulaganje upita
nad jednom tabelom u upit nad drugom tabelom, upiti kojima se
realizira spajanje tabela, upiti nad tabelama koje u sebi imaju
hijerarhijsku strukturu)
Uvod . . .
 za rad s relacijskom bazom podataka postoji
više jezika: SQL, QUEL, QBE
 to
su
jezici
četvrte
generacije, koji se služe
parafraziranim
dobro
oblikovanim
formulama
logike prvog reda

svi
opisuju
uvjete
pretraživanja
pomoću predikatne logike prvog reda
 SQL je “userfriendly” jezik
SQL – Structured Query Language
. . . strukturirani upitni jezik . . .
 tvorac Chamberlin
 nastao 1974. godine u
IBM-ovom istraživačkom
laboratoriju u Californiji
 prethodnik mu je SEQUEL
Osnovne karakteristike . . .
1.
Jednostavnost u korištenju

tabela (relacija) se kreira izvršnom naredbom i odmah je
raspoloživa za korištenje

svi podaci se memoriraju u obliku tabela i rezultat svake
operacije se logički prikazuje tabelom
2.
Mogućnost interaktivnog i
aplikativnog programiranja

SQL daje odgovore na unaprijed
nedefinirane zahtjeve ili se SQL blokovi
ugrađuju u viši programski jezik
(Fortran, C) i mogućuju
klasičnu
obradu
3.
Minimalna proceduralnost

SQL definira ŠTO, a ne KAKO: koji podaci se
žele, koji uvjeti moraju biti ispunjeni, bez
specifikacije procedure za dobivanje željenih
podataka
funkcija SQL-a je omogućavanje definiranja, korištenja i kontrole
podataka relacijske baze


SQL je na višem nivou apstrakcije, nego klasični viši programski jezici
Kada se uči gramatika novog jezika (naredbe), bitno je kategorizirati njegov rječnik prema
namjeni, stoga slijedi gramatika SQL-a u narednih 6 kategorija:
1. DDL (Data Definition Language) = jezik za definiranje podataka
. . . CREATE TABLE, CREATE VIEW , . . .
2. DQL (Data Query Language) = jezik za ispitivanje podataka
. . . SELECT . . .
3. DML (Data Manipulation Language) = jezik za upravljanje podacima
. . . INSERT, DELETE, UPDATE, . . .
4. TPL (Transaction Processing Language) = jezik za obradu podataka
. . . COMMIT, ROLLBACK, . . .
5. CCL (Cursor Control Language) = jezik za kontrolu kursora
6. DCL (Data Control Language) = jezik za kontrolu podataka
. . . GRANT, REVOKE, . . .
Naredbe za definiranje podataka
 definiraju strukture tabela i pogleda, koriste se za
njihovo mijenjanje, te za izradu i brisanje indeksa
 CREATE TABLE
(kreiranje tabele baze podataka)
 CREATE VIEW
(kreiranje virtualne tabele – “pogleda”)
pogled je nova definicija postojećeg podatka,
prividna tabela koja ne sadrži podatke
 CREATE INDEX
(kreiranje indexa nad kombinacijom kolona tabele)
 ALTER TABLE
(izmjena definicije tabele)
 DROP TABLE
(izbacivanje tabele iz baza podataka)
Naredbe za rukovanje podacima
 omogućuju ažuriranje i izvještavanje iz relacijske
baze podataka
 SELECT
(prikaz sadržaja relacijske baze podataka)
 UPDATE
(izmjena vrijednosti u kolonama tabele)
 DELETE
(izbacivanje redova tabele)
 INSERT
(dodavanje redova u postojeću tabelu)
Naredbe za upravljanje
 omogućuju sigurnost, konkurentnost,
oporavak i integritet relacijske baze
podataka
 GRANT
(dodjela prava korištenja vlastite tabele
drugim korisnicima)
 COMMIT WORK
(djelovanje na bazu podataka)
 REVOKE
(oduzimanje prava korištenja vlastite tabele
od drugih korisnika)
 ROLLBACK WORK
(poništavanje djelovanja)
Ključne riječi
 NAREDBE – glagoli koji prouzrokuju akciju, koja se
izvršava (SELECT)
 KVALIFIKATORI – ograničavaju opseg vrijednosti
entiteta koji čine upit (WHERE)
 KLAUZULE – mijenjaju akciju
instrukcije (ORDER BY)
 OPERATORI – poredaju vrijednosti (=, <, >)
 AGREGATNE FUNKCIJE GRUPA – vraćaju jedan rezultat za skup
vrijednosti (MIN())
Detaljan opis naredbi
 AŽURIRANJE – dodavanje, izmjena sadržaja i
brisanje reda ili redova tabele:
1.
2.
3.
4.
INSERT
UPDATE
DELETE
SELECT
 sve četiri navedene naredbe moraju se
primjenjivati nad istom tabelom (radi očuvanja
integriteta baze podataka)
1. INSERT – postoje tri načina za unos:
1. ubacivanje vrijednosti SVIH atributa n-torke
(ne specificiramo nazive atributa)
2. ubacivanje vrijednosti NEKIH atributa n-torke
(specificiramo nazive atributa)
3. ubacivanje podataka iz jedne tabele u drugu
(tabele moraju imati isti broj atributa koji su jednako definirani)
Opći oblik:
INSERT INTO naziv_tabele
VALUES (vrijednosti atributa)
2. UPDATE – kod izmjene sadržaja tabele potrebno je paziti da
vrijednost svakog atributa mijenjamo samo jednim izrazom
Opći oblik: UPDATE tabela
SET atribut=izraz
[WHERE uvjet]
3. DELETE– brisanje (uz unaprijed zadane kriterije)
Opći oblik: DELETE [FROM] tabela
[WHERE uvjet]
4. SELECT – prikaz sadržaja baze podataka
Opći oblik: SELECT atributi
FROM tabela
[WHERE uvjet]
Definiranje podataka i kontrolne funkcije
 CREATE TABLE – kreiranje nove tabele
 potrebno je navesti ime relacije i za svaki
atribut (kolonu tabele), naziv, tip, dužinu i da
li su NULL vrijednosti dozvoljene
Opći oblik: CREATE TABLE ime_tabele
(atr1 tip [not null],
atr2 tip [not null], . . .)
 nedostatak – ne definira primarni ključ, pa ni sekundarni
(sekundarni ključ je kombinacija atributa, koja nije ključ u toj, nego u nekoj drugoj tabeli
baze podataka)
 ALTER TABLE – dodavanje novog atributa (nove kolone)
postojećoj tabeli
Opći oblik: ALTER TABLE tabela
ADD (atr tip [, atr tip])
 DROP TABLE – služi za izbacivanje
tabele iz baze podataka
Opći oblik: DROP TABLE tabela
 razlika naredbi DROP TABLE i DELETE:
 naredba DELETE briše kompletan
sadržaj tabele, ali ne i samu tabelu
 naredba DROP TABLE briše
sadržaj tabele i samu tabelu
i

INDEKSI :
1. omogućuju brzi pristup kolonama koje se indeksiraju
2. omogućuju jedinstvenost vrijednosti indeksiranih kolona
(tada te kolone imaju ulogu primarnog ključa)
Opći oblik:
CREATE [UNIQUE] INDEX naziv_indexa
ON tabela (atribut)

indeks se izbacuje naredbom:
DROP INDEKS naziv_indeksa
Sigurnost, integritet podataka
 GRANT – dodjeljivanje prava korištenja
vlastite tabele drugim korisnicima
(sva prava ALL, svim korisnicima PUBLIC)
 REVOKE – oduzimanje prava korištenja
View (pogled)
 Pogled – virtualna tabela (ne uzima nikakav
memorijski prostor, nema svoje podatke, ali
se s njim redi slično kao s običnom tabelom)
 prozor kroz koji se vide
podaci baze podataka
 ažuriranje preko pogleda može se vršiti samo
kada je pogled definiran nad jednom tabelom i
ako on sadrži sve NOT NULL kolone te tabele
Prednosti korištenja pogleda
1.
jednostavnost
2.
tajnost
3.
izvedba (čuva se u kompajliranom obliku )
4.
nezavisnost podataka
Opći oblik: CREATE VIEW naziv_pogleda [(nazivi atributa)]
SELECT atributi
FROM . . .
Primjer

relacijski model sastavljen od dvije relacije:
RADNIK (atributi: IME, POSAO, SRUKOV, DATZAP, OD, PREMIJA, SOOUR, ključ: SRADNIK)
OOUR (atributi: NAZIV, GRAD, ključ: SOOUR )

atribut SOOUR relacije RADNIK omogućuje povezivanje te relacije s relacijom OOUR
(vanjski, sekundarni ključ)
OOUR (SOOUR, NAZIV, GRAD)
RADNIK (SRADNIK, IME, POSAO, SRUKOV, DATZAP, OD, PREMIJA, SOOUR)
Relacijska shema za primjer
SOOUR
NAZIV
GRAD
10
RAD_ZAJ
ZAGREB
20
PRIPREMA
OSIJEK
30
PROJEKTIRANJE
POŽEGA
40
ISTRAŽIVANJE
SPLIT
Relacijski model za primjer
SRADNIK
IME
POSAO
SRUKOV
DATZAP
OD
PREMIJA
SOOUR
3069
ANITA
analitičar
3602
17-DEC-80
80 000
3199
IVANA
trg_putnik
3398
20-FEB-81
160 000
30 000
20
3221
BARICA
trg_putnik
9398
22-FEB-81
125 000
50 000
20
3266
ANITA
rukovodioc
3539
02-APR-81
297 500
3354
JASNA
trg_putnik
3398
28-SEP-81
125 000
3398
KATARINA
rukovodioc
3539
01-MAY-81
285 000
30
3482
MARCELA
rukovodioc
3539
09-JUN-81
245 000
10
3488
ŽELJKA
savjetnik
3266
09-NOV-81
300 000
20
3539
BLANKA
predsjednik
17-NOV-81
500 000
10
20
20
140 000
20
Komentar . . .
 ova relacijska shema nije optimalna, jer sadrži NULL vrijednosti u
koloni PREMIJA, koje je potrebno eliminirati izbacivanjem kolone
PREMIJA iz tabele RADNIK i formiranjem nove relacije:
TRGOVACKI_PUTNIK (SRADNIK, PREMIJA)
 tako PREMIJA postaje svojstvo svih radnika