51
SUSTAVI BAZA PODATAKA 1 Doc.dr.sc. GORAN KRALJEVIĆ S USTAVI B AZA P ODATAKA FAKULTET STROJARSTVA I RAČUNARSTVA SVEUČILIŠTE U MOSTARU

SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 1

Doc.dr.sc. GORAN KRALJEVIĆ

SUSTAVI BAZA PODATAKA

FAKULTET STROJARSTVA I RAČUNARSTVA

SVEUČILIŠTE U MOSTARU

Page 2: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 2

Web:

http://www.uni-mo.ba/~goran

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: [email protected]

Sustavi baza podataka

Page 3: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 3

Uvod u SQL

Page 4: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 4

SQL

• SQL = Structured Query Language

• SQL je upitni jezik temeljen na relacijskoj algebri i predikatnom računu.

• SQL se koristi kao programski jezik i interaktivni upitni jezik. Kao programski jezik može se ugrađivati u jezike treće i četvrte generacije.

• Zadaća SQL-a je omogućiti definiciju podataka, upravljanje podacima i provođenje kontrole nad podacima u relacijskoj bazi podataka.

• Proizvođači komercijalnih sustava također ugrađuju i svoje, uglavnom nestandardne, DDL i DML naredbe.

Ti su nestandardni dijelovi problematični jer programski kod postaje neprenosiv između različitih SQL sustava, a također se bitno otežava usaglašavanje oko budućih standarda.

Page 5: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 5

SQL

• DDL (Data Definition Language)

= izrazi za definiranje podataka

CREATE, ALTER, DROP, GRANT, REVOKE ...

• DML (Data Manipulation Language)

= izrazi za upravljanje podacima

SELECT, INSERT, UPDATE, DELETE ...

Page 6: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 6

DDL naredbeCREATE, ALTER, DROP, ...

Page 7: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 7

Kreiranje tablica

Page 8: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 8

SQL – Kreiranje i brisanje tablica

Kreiranje tablice:

CREATE TABLE ime_tablice

(ime_stupca tip (veličina) (ograničenje),

ime_stupca tip (veličina) (ograničenje),

ime_stupca tip (veličina) (ograničenje),

...);

Brisanje tablice:

DROP TABLE ime_tablice;

Page 9: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 9

Ograničenja nad stupcima tablice i nad tablicama ...

• NULL/NOT NULL

• UNIQUE

• PRIMARY KEY

• FOREIGN KEY

• CHECK

Page 10: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 10

Tipovi podataka (ORACLE)

• VARCHAR2(size)

• CHAR[(size)]

• NUMBER[(p,s)]

• DATE

Page 11: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 11

Tipovi podatakaVeliki objekti

Page 12: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 12

PRIMJER – Relacijski model

Page 13: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 13

SQL – CREATE TABLE

CREATE TABLE MJESTO

( PBR NUMBER(10) NOT NULL,

NAZIV VARCHAR2(40) NOT NULL,

CONSTRAINT mjesto_pk PRIMARY KEY(PBR)

);

Page 14: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 14

SQL – CREATE TABLE

CREATE TABLE OSOBA

( MBR NUMBER(10) NOT NULL,

IME VARCHAR2(25) NOT NULL,

PREZIME VARCHAR2(25) NOT NULL,

EMAIL VARCHAR2(40),

PBR NUMBER(10) NOT NULL,

CONSTRAINT osoba_pk PRIMARY KEY(MBR),

CONSTRAINT osoba_mjesto_fk FOREIGN KEY(PBR)

REFERENCES MJESTO(PBR)

);

Page 15: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 15

SQL – ALTER TABLE

Primjeri:

ALTER TABLE osoba

DROP COLUMN email;

ALTER TABLE osoba

ADD (email VARCHAR2(25));

ALTER TABLE mjesto

MODIFY (naziv VARCHAR2(50));

Page 16: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 16

DML naredbeSELECT, INSERT, UPDATE, DELETE

Page 17: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 17

Najčešće korišteni DML izrazi

SELECT - Pretraživanje podataka

INSERT - Upisivanje novih podataka

UPDATE - Promjena vrijednosti podataka

DELETE - Brisanje postojećih podataka

Page 18: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 18

INSERT – Unos podataka u tablicu

• INSERT INTO ime_tablice (stupac, stupac,…)

VALUES (vrijednost, vrijednost, …);

Primjeri:

• INSERT INTO osoba (mbr, ime, prezime, email)

VALUES (1, 'Ivo', 'Ivic', '[email protected]');

• INSERT INTO osoba

VALUES (1, 'Ivo', 'Ivic', '[email protected]');

Page 19: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 19

UPDATE – Ažuriranje podataka u tablici

• UPDATE ime_tablice [alias] SET

stupac [,stupac…] = {iskaz, podupit}

[WHERE uvjet];

Primjer:

• UPDATE osoba SET email='[email protected]'

WHERE mbr=1;

Page 20: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 20

DELETE – Brisanje podataka u tablici

• DELETE FROM ime_tablice

[WHERE uvjet];

Primjer:

• DELETE FROM osoba

WHERE mbr=2;

Page 21: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 21

SELECT – Selektiranje podataka iz tablice

• SELECT stupac, stupac, stupac, …

FROM ime_tablice

[WHERE uvjet];

Primjeri:

• SELECT mbr, ime, prezime, email

FROM osoba;

• SELECT * FROM osoba;

Page 22: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 22

INSERT – Primjeri

• INSERT INTO mjesto (pbr, naziv)

VALUES (88000, 'Mostar');

• INSERT INTO mjesto (pbr, naziv)

VALUES (88220, 'Široki Brijeg');

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)

VALUES (1, 'Ivo', 'Ivic', '[email protected]', 88000);

• INSERT INTO osoba (mbr, ime, prezime, pbr)

VALUES (2, 'Mate', 'Matic', 88220);

Page 23: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 23

INSERT – Primjeri

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)

VALUES (2, 'Pero', 'Peric', '[email protected]', 88000);

→ ORA-00001: unique constraint (PC-1.OSOBA_PK) violated

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)

VALUES (3, 'Pero', 'Peric', '[email protected]', 90000);

→ ORA-02291: integrity constraint (PC-1.OSOBA_MJESTO_FK)

violated - parent key not found

• INSERT INTO osoba (mbr, ime, email, pbr)

VALUES (3, 'Pero', '[email protected]', 88000);

→ ORA-01400: cannot insert NULL into ("OSOBA"."PREZIME")

Page 24: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 24

UPDATE – Primjeri

• UPDATE mjesto SET pbr=10000

WHERE naziv='Mostar';

→ ORA-02292: integrity constraint (PC-1.OSOBA_MJESTO_FK) violated - child record found

• UPDATE mjesto SET naziv='Š.Brijeg'

WHERE pbr=88220;

• UPDATE osoba SET email='[email protected]'

WHERE mbr=2;

Page 25: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 25

DELETE – Primjeri

• DELETE FROM mjesto

WHERE pbr=88000;

→ ORA-02292: integrity constraint (PC-1.OSOBA_MJESTO_FK) violated - child record found

• DELETE FROM osoba

WHERE mbr=1;

• DELETE FROM mjesto

WHERE pbr=88000;

Page 26: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 26

S Q L

Page 27: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 27

Testna baza (Oracle DBMS) (Baza je napunjena testnim podacima - koristiti ćemo je na vježbama za SELECT upite ...)

Page 28: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 28

SELECT – Odabir podataka iz tablice

• SELECT stupci [alias]

FROM ime_tablice [alias]

[WHERE uvjeti za redak]

[GROUP BY stupci]

[HAVING uvjeti za grupu redaka]

[ORDER BY stupci];

Primjer – odabir svih podataka iz tablice djelatnik

• SELECT * FROM djelatnik;

Page 29: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 29

Operatori usporedbe, Logički i SQL operatori

=, >, <, >=, <=, <>

BETWEEN … AND… – između dvije vrijednosti (uključivo)

IN (lista) – odgovara bilo kojoj vrijednosti iz liste

LIKE – odgovara znakovnom “uzorku”

IS NULL – je NULL vrijednost

AND – vraća TRUE ako su svi uvjeti TRUE

OR – vraća TRUE ako je jedan od uvjeta TRUE

NOT – logičko NE

Page 30: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 30

Agregatne funkcije SQL-a

• ISO standard definira 5 agregatnih funkcija:

o COUNT

o SUM

o AVG

o MIN

o MAX

• Ove funkcije se izvršavaju nad jednim stupcem tablice i vraćaju jednu vrijednost.

• VAŽNO ! Agregatne funkcije se mogu koristiti samo

u SELECT listi i HAVING iskazu.

Page 31: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 31

GROUP BY

• Grupiranje se obavlja tako da se n-torke koje imaju jednake vrijednosti atributa navedenih u listi za grupiranje, kombiniraju u zajedničku grupu. Za svaku dobivenu grupu, u rezultatu se pojavljuje samo jedna n-torka.

• Grupiranje je vrlo korisno u kombinaciji s agregatnim funkcijama (COUNT, SUM, AVG, MIN, MAX).

Primjer:

• SELECT sifra_radmj, AVG(placa) prosjecna_placa

FROM djelatnik

GROUP BY sifra_radmj;

Page 32: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 32

GROUP BY

• P R A V I L O !

Bilo koji atribut ili izraz u SELECT listi koji

nije agregatna funkcija mora biti i u GROUP BY iskazu.

Međutim, dopušteno je u GROUP BY iskazu koristiti i one atribute koji se ne nalaze u SELECT listi.

Page 33: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 33

HAVING

• Koristi se ako se želi specificirati koje grupe treba prikazati, odnosno, koristi se za restrikciju grupa koje se prikazuju, tj. za ispitivanje vrijednosti agregatnih funkcija.

• VAŽNO ! WHERE iskaz se ne može koristiti za

restrikciju grupa (kao HAVING).

WHERE se koristi samo za restrikciju pojedinačnih redaka.

Page 34: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 34

Izvršavanje SQL iskaza ...

• SELECT sifra_radmj, COUNT(*) broj_djelatnika

FROM djelatnik

WHERE placa>1000

GROUP BY sifra_radmj

HAVING COUNT(*)>2

ORDER BY 2 desc;

• Pregled radnih mjesta na kojima radi više od 2 djelatnika s plaćom većom od 1000 KM.

Page 35: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 35

Izvršavanje SQL iskaza ...

• Pregled radnih mjesta na kojima radi više od 2 djelatnika s plaćom većom od 1000 KM.

ID_DJELATNIKA SIFRA_RADMJ PLACA

1 DIR 4800

2 TAJNIK 1100

100 IT-VOD 2500

101 IT-PROG 1600

102 IT-ADM 1400

103 IT-PROG 1800

104 IT-PROG 1500

105 IT-PROG 1500

106 IT-ADM 1300

107 IT-PROG 1250

108 IT-PROG 1200

109 IT-PROG 1000

110 IT-PROG 800

111 IT-PROG 900

112 IT-ADM 700

113 IT-PROG 1100

114 IT-PROG 950

115 IT-PROG 1350

200 PROD-VOD 2000

201 PROD-KAM 1000

202 PROD-KAM 1400

203 PROD-KAM 1100

204 PROD-KAM 1200

... ... ...

WHEREplaca > 1000

1. 2.

ID_DJELATNIKA SIFRA_RADMJ PLACA

1 DIR 4800

2 TAJNIK 1100

100 IT-VOD 2500

101 IT-PROG 1600

102 IT-ADM 1400

103 IT-PROG 1800

104 IT-PROG 1500

105 IT-PROG 1500

106 IT-ADM 1300

107 IT-PROG 1250

108 IT-PROG 1200

113 IT-PROG 1100

115 IT-PROG 1350

200 PROD-VOD 2000

202 PROD-KAM 1400

203 PROD-KAM 1100

204 PROD-KAM 1200

... ... ...

GROUP BY sifra_radmj

Page 36: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 36

Izvršavanje SQL iskaza ...

SIFRA_RADMJ COUNT(*)

PROD-KAM 3

IT-ADM 2

IT-PROG 8

...

GROUP BY sifra_radmj

HAVING COUNT(*)>2

ORDER BY 2 desc

2. 3.

4.

• Pregled radnih mjesta na kojima radi više od 2 djelatnika s plaćom većom od 1000 KM.

SIFRA_RADMJ COUNT(*)

PROD-KAM 3

IT-PROG 8

SIFRA_RADMJ COUNT(*)

IT-PROG 8

PROD-KAM 3

Page 37: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 37

WHERE – GROUP BY – HAVING

• WHERE dio naredbe određuje koje n-torke će

formirati grupe.

• GROUP BY lista određuje strukturu grupa tj. po

kojim atributima se obavlja grupiranje n-torki.

• HAVING dio naredbe određuje koje od nastalih

grupa će biti prihvaćene kao rezultat.

Page 38: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 38

Osnovne metode spajanja tablica

Page 39: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 39

SQL (spajanje tablica)

SQL – osnovne metode spajanja tablica:

equi-join

non-equi join

outer join

self join

Page 40: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 40

SQL (osnovna sintaksa spajanja tablica)

• SELECT tablica1.atribut1, tablica2.atribut2

FROM tablica1

[INNER JOIN tablica2

ON (tablica1.atribut1=tablica2.atribut2)] |

[LEFT|RIGHT|FULL OUTER JOIN tablica2

ON (tablica1.atribut1=tablica2.atribut2)];

• Rezervirane riječi INNER i OUTER se mogu izostaviti !

• JOIN ON – Sintaksa za spajanje koja se najčešće koristi bilo

da je u pitanju equi-join ili self-join.

Page 41: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 41

SQL (osnovna sintaksa spajanja tablica)

• SELECT tablica1.atribut1, tablica2.atribut2, ...

FROM tablica1, tablica2, tablica3, ...

WHERE uvjet spajanja 1 (FK<->PK)

AND uvjet spajanja 2 (FK<->PK)

...

P R A V I L O !

Broj tablica – 1 = Broj uvjeta spajanja

Page 42: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 42

SQLCROSS JOIN (Kartezijev produkt)

Primjer:

• SELECT id, ime, naziv_mjesta

FROM osoba, mjesto

• SELECT id, ime, naziv_mjesta

FROM osoba

CROSS JOIN mjesto

Obratiti pozornost ! Obavljanje Kartezijevog produktarelacija često je posljedica pogreške programera – kad se zaboravi navesti uvjet spajanja.

Page 43: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 43

ID IME PBR

1 Pero 88000

2 Mate 88000

3 Ivo 88220

PBR NAZIV_MJESTA

88000 Mostar

88220 Široki Brijeg

OSOBA MJESTO

ID IME NAZIV_MJESTA

1 Pero Mostar

2 Mate Mostar

3 Ivo Mostar

1 Pero Široki Brijeg

2 Mate Široki Brijeg

3 Ivo Široki Brijeg

OSOBA x MJESTO

SQLCROSS JOIN

Page 44: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 44

ID IME PBR

1 Pero 88000

2 Mate 88000

3 Ivo 88220

4 Tomo 88000

5 Marija 88220

PBR NAZIV_MJESTA

88000 Mostar

88220 Široki Brijeg

OSOBA MJESTO

Primjer:

• SELECT id, ime, naziv_mjesta

FROM osoba, mjesto

WHERE osoba.pbr=mjesto.pbr;

• SELECT id, ime, naziv_mjesta

FROM osoba JOIN mjesto

ON osoba.pbr=mjesto.pbr;

SQLEQUI JOIN

Page 45: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 45

ID IME NAZIV_MJESTA

1 Pero Mostar

2 Mate Mostar

3 Ivo Široki Brijeg

4 Tomo Mostar

5 Marija Široki Brijeg

Rezultat upita

Primjer:

• SELECT id, ime, naziv_mjesta

FROM osoba, mjesto

WHERE osoba.pbr=mjesto.pbr;

• SELECT id, ime, naziv_mjesta

FROM osoba JOIN mjesto

ON osoba.pbr=mjesto.pbr;

SQLEQUI JOIN

OSOBA wv MJESTO

Page 46: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 46

Primjer (spajanje 3 tablice):

• SELECT ime, prezime, placa, o.naziv_opcine, z.naziv_zupanije

FROM djelatnik d, opcina o, zupanija z

WHERE d.sifra_opcine = o.sifra_opcine

AND o.sifra_zupanije = z.sifra_zupanije;

• SELECT ime, prezime, placa, o.naziv_opcine, z.naziv_zupanije

FROM djelatnik d

JOIN opcina o

ON d.sifra_opcine = o.sifra_opcine

JOIN zupanija z

ON o.sifra_zupanije = z.sifra_zupanije;

SQLEQUI JOIN

Page 47: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 47

ID IME PBR

1 Pero 88000

2 Mate 88000

3 Ivo 88220

4 Tomo 88000

5 Marija NULL

PBR NAZIV_MJESTA

88000 Mostar

88220 Široki Brijeg

OSOBA MJESTO

?

SQLOUTER JOIN

Primjer:

• SELECT id, ime, naziv_mjesta

FROM osoba JOIN mjesto

ON osoba.pbr=mjesto.pbr;

• SELECT id, ime, naziv_mjesta

FROM osoba LEFT JOIN mjesto

ON osoba.pbr=mjesto.pbr;

Page 48: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 48

ID IME NAZIV_MJESTA

1 Pero Mostar

2 Mate Mostar

3 Ivo Široki Brijeg

4 Tomo Mostar

5 Marija

• SELECT id, ime, naziv_mjesta

FROM osoba JOIN mjesto

ON osoba.pbr=mjesto.pbr;

ID IME NAZIV_MJESTA

1 Pero Mostar

2 Mate Mostar

3 Ivo Široki Brijeg

4 Tomo Mostar

• SELECT id, ime, naziv_mjesta

FROM osoba LEFT JOIN mjesto

ON osoba.pbr=mjesto.pbr;

SQLOUTER JOIN

Page 49: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 49

Primjeri:

• SELECT rm.naziv_radmj, o.naziv_odjela

FROM radno_mjesto rm

LEFT (OUTER) JOIN odjel o

ON rm.sifra_odjela=o.sifra_odjela;

• SELECT rm.naziv_radmj, o.naziv_odjela

FROM radno_mjesto rm

RIGHT (OUTER) JOIN odjel o

ON rm.sifra_odjela=o.sifra_odjela;

• SELECT rm.naziv_radmj, o.naziv_odjela

FROM radno_mjesto rm

FULL (OUTER) JOIN odjel o

ON rm.sifra_odjela=o.sifra_odjela;

SQLOUTER JOIN

Page 50: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 50

ID IME ID_SEFA

1 Pero NULL

2 Mate 1

3 Ivo 1

4 Tomo 1

5 Marija 3

OSOBA

Primjer:

• SELECT a.id, a.ime, b.ime šef

FROM osoba a, osoba b

WHERE a.id_sefa=b.id;

ID IME_DJ IME_SEFA

2 Mate Pero

3 Ivo Pero

4 Tomo Pero

5 Marija Ivo

SQLSELF JOIN

• SELECT a.id, a.ime, b.ime šef

FROM osoba a JOIN osoba b

ON a.id_sefa=b.id;

Page 51: SUSTAVI BAZA PODATAKAuni-mo.sve-mo.ba/~goran/nastava/2_SBP_SQL.pdf · 2018-03-13 · Uvod u SQL. SUSTAVI BAZA PODATAKA 4 SQL ... • SQL se koristi kao programski jezik i interaktivni

SUSTAVI BAZA PODATAKA 51

Web:

http://www.uni-mo.ba/~goran

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: [email protected]

Sustavi baza podataka