baze podataka - sql

81
BAZE PODATAKA SQL – Structured Query Language

Upload: jdv1234

Post on 27-Dec-2015

121 views

Category:

Documents


8 download

DESCRIPTION

SQL, Oracle,

TRANSCRIPT

Page 1: Baze podataka - SQL

BAZE PODATAKA

SQL – Structured Query Language

Page 2: Baze podataka - SQL

UVOD

SQL = Structured Query Languagestrukturirani upitni jezik za rad s BPstandardni jezik za rad s relacijskim BPtvorac je Chamberlin, a nastao je u IBM-ovom istraživačkom laboratoriju 1974.g. (na istom mjestu gdje je Codd 1970. definirao osnovne koncepte relacijskog modela podataka)

Page 3: Baze podataka - SQL

ZAŠTO TREBA ZNATI SQL?

u literaturi o relacijskim BP često se ne objašnjava SQL, nego se koristi kao standard pomoću kojeg se objašnjavaju drugi koncepti relacijskih BP

SQL je implementiran u više od 50 komercijalno raspoloživih SUBP relacijskog tipa (DB2, SQL/DS, ORACLE,…) i znajući SQL moguće je na gotovo identičan način raditi s bilo kojim od njih.

Page 4: Baze podataka - SQL

ORACLE

ORACLE je relacijski sustav za upravljanje bazom podataka sa SQL upitnim jezikokm

proizvodi ga Oracle Corporation iz Belmonta u Californii

server Oracle 9i

client Oracle 8.1.7.

Page 5: Baze podataka - SQL

OSNOVNE KARAKTERISTIKE SQL-a

jednostavnost i jednoobraznost u korištenju – tablica (relacija) se kreira jednom izvršnom naredbom i odmah nakon kreiranja tablica je raspoloživa za korištenje

mogućnost interaktivnog i klasičnog (aplikativnog) programiranja – koristeći SQL dobivaju se odgovori na trenutne, unaprijed nepredviđene zahtjeve ili se SQL blokovi ‘ugrađuju’ u klasični viši programski jezik omogućujući klasičnu obradu

neproceduralnost (tj. minimalna proceduralnost) –SQL je u velikoj mjeri neproceduralan jer definira ŠTO, a ne KAKO: koji podaci se žele, koje tablice se referenciraju i koji uvjeti trebaju biti ispunjeni, bez specifikacije procedure za dobivanje željenih podataka.

Page 6: Baze podataka - SQL

SQL kao jezik objedinjuje

jezik za opis podataka (DDL = Data Definition Language) – definiranje sheme BP, tj. kreiranje objekata

jezik za rukovanje podacima (DML = Data Manipulation Language) – traženje, unos, izmjena, brisanje

jezik za upravljanje podacima (DCL = Data Control Language) – kontrola pristupa podacima, tj. dodjeljivanje i ukidanja prava

Page 7: Baze podataka - SQL
Page 8: Baze podataka - SQL
Page 9: Baze podataka - SQL
Page 10: Baze podataka - SQL

DDL – kreiranje nove tablice

CREATEopći oblik naredbe je:

CREATE TABLE ime_tablice (atr1 tip [not null], atr2 tip [not null],

… )

Primjer: kreirati relaciju STUDENT s atributima MBROJ, IME, PREZIME, DATRODJ.

Page 11: Baze podataka - SQL

PRIMJER

Rješenje: CREATE TABLE STUDENT(MBROJ NUMBER NOT NULL,

IME VARCHAR(10),PREZIME VARCHAR(20),DATRODJ DATE);

Primjetimo: nismo definirali primarni ključ (not null <> primarni ključ)!

U SQL-u uloga ključa se može iskazati formiranjem jedinstvenog indeksa nad kombinacijom polja koja čine primarni ključ.

Page 12: Baze podataka - SQL

DDL – promjena tablice

ako želimo dodati novi atribut u postojeću tablicu naredba je:

ALTER TABLE ime_tablice ADD (atr tip [, ATR TIP])

Primjer: dodati atribut ADRESA u relaciju STUDENT.

Rješenje: ALTER TABLE STUDENT ADD (ADRESA VARCHAR(30));

Page 13: Baze podataka - SQL

DDL – promjena tablice

ako želimo izmijeniti definiciju postojećeg atributa (dužina, tip, not null) u postojećoj tablici naredba je:

ALTER TABLE ime_tablice MODIFY (atr modifikacija)

Primjer: povećati dužinu atributa IME na 15.

Page 14: Baze podataka - SQL

PRIMJER

Rješenje: ALTER TABLE STUDENT MODIFY (IME VARCHAR(15));

Napomena:dodavanje novog polja s opcijom NOT NULL postojećoj tablici koja nije prazna nije moguće direktno izvršiti (najprije treba naredbom ALTER TABLE … ADD … dodati novo polje bez klauzule NOT NULL, zatim dodati vrijednost za novo polje za sve n-torke i tek na kraju naredbom ALTER TABLE … MODIFY … treba dodati klauzulu NOT NULL prethodno definiranom polju

Page 15: Baze podataka - SQL

DML – unos podataka (1)Ubacivanje vrijednosti SVIH atributa n-torke:

INSERT INTO naziv_tablice VALUES (vrijednost_atr1, vrijednost_atr2,…)

Primjer: ubaciti u tablicu podatke o studentu Marku Periću, koji je rođen 25.01.1985., nepoznata mu je adresa i

ima matični broj 43323. Ubacite još nekoliko studenata.

Rješenje: INSERT INTO STUDENT VALUES (43323, ‘Marko’, ‘Perić’, ‘25011985’, NULL);

Rezultat INSERT naredbe: SELECT * FROM STUDENT;

Page 16: Baze podataka - SQL

DML – unos podataka (2)

Ubacivanje vrijednosti NEKIH atributa n-torke:

INSERT INTO naziv_tablice (ATR1, ATR2, …)VALUES (vrijednost_atr1, vrijednost_atr2,…)

Primjer: ubaciti u tablicu podatke o studentu Lovri Antiću s matičnim broj 35666.

Rješenje: INSERT INTO STUDENT (IME, PREZIME, MBROJ) VALUES ( ‘Lovro’, ‘Antić’, 35666);

Rezultat INSERT naredbe: SELECT * FROM STUDENT;

Page 17: Baze podataka - SQL

DML – unos podataka (3)

Ubacivanje podataka iz jedne tablice u drugu:Ako obje tablice imaju isti broj atributa i ukoliko su oni identično definirani naredba INSERT je oblika:

• INSERT INTO naziv_tablice1 SELECT * FROM naziv_tablice2

Inače:

• INSERT INTO naziv_tablice1 (atr1, atr2,…)SELECT atribut, izrazFROM naziv_tablice2WHERE kriterij selekcije

Page 18: Baze podataka - SQL

DML – izmjena podataka

Opći oblik naredbe je:

• UPDATE naziv_tablice SET atribut1=izraz1[, atribut2=izraz2] [WHERE kriterij selekcije n-torki]

odnosno

• UPDATE naziv_tablice SET (atribut1, atribut2, …) =(podupit) [WHERE kriterij selekcije n-torki]

Page 19: Baze podataka - SQL

PRIMJER

Studentu Marku promijenite adresu u Omladinska 14.

Rješenje: UPDATE STUDENTSET ADRESA=‘Omladinska 14’WHERE IME=‘Marko’;

Page 20: Baze podataka - SQL

DML – brisanje podataka

Opći oblik naredbe je:

• DELETE [FROM] naziv_tablice [WHERE kriterij selekcije n-torki]

Primjer: izbaciti podatke o Marku jer je diplomirao.

Rješenje: DELETE FROM STUDENTWHERE IME=‘Marko’;

Page 21: Baze podataka - SQL

DDL – izbacivanje relacije iz BP

ako želimo izbaciti definiciju tablice, zajedno s podacima koje sadrži naredba je:

DROP TABLE ime_tablice

Napomena:različit rezultat naredbi DROP TABLE i DELETE(DELETE može izbrisati kompletan sadržaj tablice, ali sama tablica ostaje u BP i s njom se može dalje raditi).

Page 22: Baze podataka - SQL

DDL – INDEKSI

Indeksi se koriste za:osiguravanje brzog pristupa po poljima koja se indeksirajuosiguravanje jedinstvenosti za vrijednosti indeksiranih kolona (tada te indeksirane kolone imaju ulogu primarnog ključa)

Opći oblik naredbe je:

CREATE [UNIQUE] INDEX naziv_indeksaON ime_tablice (atr [, atr,…])

Page 23: Baze podataka - SQL

PRIMJER

Kreirati indeks nad prezimenom i imenom studenta, te jedinstveni indeks nad matičnim brojem

Rješenje: CREATE INDEX PREZ_INDON STUDENT (PREZIME, IME);

CREATE UNIQUE INDEX MBROJ_INDON STUDENT (MBROJ);

Indeks se izbacuje naredbom:

DROP INDEX naziv_indeksa

Page 24: Baze podataka - SQL

DCL – dodjeljivanje i oduzimanje prava

korištenja vlastitih tablica drugim korisnicima BP Opći oblik naredbe za dodjeljivanje prava je:

GRANT {ALL | [ALTER, DELETE, INDEKS, INSERT, SELECT, UPDATE(atr)]}

ON [kreator.]{tablica | pogled}TO {PUBLIC | korisnik1, korisnik2,…}[WITH GRANT OPTION]

Opći oblik naredbe za oduzimanje prava je:

REVOKE {ALL | [ALTER, DELETE, INDEKS, INSERT, SELECT, UPDATE(atr)]}

ON [kreator.]{tablica | pogled}FROM {PUBLIC | korisnik1, korisnik2,…}

Page 25: Baze podataka - SQL

Pogled - VIEW

Što je pogled?pogled je ‘prozor’ kroz koji se vide podaci BPpogled je virtualna tablica - s njom se radi gotovo kao s baznom tablicom, iako nema svoje podatke i ne zauzima nikakav memorijski prostorpreciznije, pogled se koristi kao bilo koja druga tablica pri izvješćivanju

Zašto koristiti pogled?jednostavnost korištenja – pojednostavljuje upite,tajnost – jak mehanizam kontrole pristupa podacima,performanse – čuva se u kompajliranom obliku,nezavisnost podataka – mijenjaju se definicije pogleda, a ne aplikacijski programi koji koriste podatke BP preko pogleda.

Page 26: Baze podataka - SQL

Pogled - VIEW

Opći oblik naredbe za kreiranje pogleda je:

CREATE VIEW naziv_pogleda[(nazivi atributa pogleda)] AS

SELECT . . .

Primjer: kreirati pogled koji se sastoji od imena i prezimena studenata čija je adresa Omladinska 14.

Rješenje: CREATE VIEW Omladinska AS SELECT IME, PREZIMEFROM STUDENTWHERE ADRESA=‘Omladinska 14’

Rezultat naredbe VIEW: SELECT * FROM OMLADINSKA

Izbacivanje definicije pogleda: DROP VIEW naziv_pogleda

Page 27: Baze podataka - SQL

UPITI

Osnova SQL-a je upitni blok oblika:

SELECT [DISTINCT] {*|atribut|izraz [alias],…}FROM tablica[WHERE uvjet(i)][GROUP BY group_by_uvjet][ORDER BY atribut]

najjednostavniji oblik SELECT naredbe mora uključivati:SELECT (određivanje atributa koji će se prikazati) i FROM (određivanje tablice koje sadrže atribute navedene pod SELECT)

Page 28: Baze podataka - SQL

UPITI

sortira redoveORDER BY

specificira atribute čije vrijednosti čine osnovu za grupiranje redova

group_by_uvjet

dijeli redove tablice u grupeGROUP BY

sastoje se od naziva atributa, izraza, konstanti i operatora usporedbe

uvjeti

sužava rezultat upita na redove koji zadovoljavaju uvjetWHERE

specificira tablicu koja sadrži atribute (stupce)FROM tablica

izabranom stupcu daje različit naziv zaglavljaalias

selektira imenovani stupacatribut

selektira sve atribute*

izbacuje duple redove i prikazuje atribute u rastućem redoslijedu

DISTINCT

prikazuje jedan ili više atributa (stupaca)SELECT

Page 29: Baze podataka - SQL

Upiti nad jednom tablicom

prikaz jednostavnog, neizmijenjenog sadržaja tablice

prikazati šifre, nazive i lokacije svih odjela iz relacije ODJEL (prikaz svih atributa neke tablice)

SELECT SODJEL, NAZIV, GRAD FROM ODJEL

kada se traže svi atributi neke relacije, umjesto navođenja svih atributa, može se staviti znak ‘*’ s istim rezultatom:

SELECT * FROM ODJEL

prikazati nazive i šifre svih odjela (prikaz nekih atributa)

SELECT NAZIV, SODJEL FROM ODJEL

Page 30: Baze podataka - SQL

prikazati sve poslove radnika

SELECT POSAO FROM RADNIIK

prikazati sve RAZLIČITE poslove radnika

SELECT DISTINCT POSAO FROM RADNIIK

Upiti nad jednom tablicom

prikaz jednostavnog, neizmijenjenog sadržaja tablice

Page 31: Baze podataka - SQL

nije obavezna, a može se koristiti sa SELECT, UPDATE i DELETE naredbamakorištena u SELECT bloku omogućava:

selekciju specifičnih n-torki relacije (redova tablice)selekciju n-torki koje zadovoljavaju višestruke uvjeteselekciju n-torki koje zadovoljavaju bar jedan od više uvjetaselekciju n-torki koje ne zadovoljavaju određene uvjeteselekciju n-torki istovremenim korištenjem AND i OR logičkih operatoraselekciju n-torki unutar nekog intervalaselekciju n-torki koje zadovoljavaju vrijednosti iz liste vrijednostiselekciju n-torki koje sadrže određenu kombinaciju znakova

WHERE klauzula

Page 32: Baze podataka - SQL

prikazati sve podatke o radnicima koji rade u odjelu 30

WHERE klauzula

SELECT * FROM RADNIK WHERE SODJELA=30

osim operatora ‘=‘ moguće je koristiti i ostale operatore usporedbe:RAZLIČITO ‘!=‘, VEĆE ‘>’, MANJE ‘<‘, VEĆE ILI JEDNAKO ‘>=‘ i MANJE ILI JEDNAKO ‘<=‘

prikazati ime, plaću, posao i šifru odjela za voditelje koji ne rade u odjelu 30 – korištenje operatora usporedbe ‘!=‘

SELECT IME, PLACA, POSAO, SODJEL FROM RADNIK WHERE POSAO=‘VODITELJ’ AND SODJELA!=30

Page 33: Baze podataka - SQL

prikazati sve podatke o voditeljima odjela i direktoru –korištenje logičkog operatora OR

WHERE klauzula

SELECT * FROM RADNIK WHERE POSAO=‘VODITELJ’ OR POSAO=‘DIREKTOR’

prikazati ime, prezime, posao i placu svakog radnika iz odjela 20 koji zarađuje više od 20000kn – korištenje logičkog operatora AND

SELECT IME, PREZIME, POSAO, PLACA FROM RADNIK WHERE SODJELA=20 AND PLACA>20000

Page 34: Baze podataka - SQL

prikazati ime, plaću, posao i šifru odjela za voditelje i analitičare u odjelu 10 – prioritet (redoslijed) izvršavanja uvjeta

WHERE klauzula

SELECT IME, PLACA, POSAO, SODJELA FROM RADNIK WHERE (POSAO=‘VODITELJ’ OR POSAO=‘ANALITICAR’) AND SODJEL=10

prikazati ime, posao i plaću radnika koji zarađuju između 12000 i 15000 – klauzula BETWEEN

SELECT IME, POSAO, PLACA FROM RADNIK WHERE PLACA BETWEEN 12000 AND 15000

isto je moguće dobiti i ovako:

WHERE PLACA >=12000 AND PLACA <=15000

Page 35: Baze podataka - SQL

prikazati ime, posao i šifru odjela radnika koji nisu analitičari, savjetnici ili trgovački putnici– korištenje operatora IN koji mijenja višestruku primjenu operatora OR

WHERE klauzula

SELECT IME, POSAO, SODJEL FROM RADNIK WHERE POSAO NOT IN (‘ANALITICAR’, ‘SAVJETNIK’, ‘TRG_PUTNIK’)

prikazati ime, posao i šifru odjela radnika čija imena počinju s M – klauzula LIKE

SELECT IME, POSAO, SODJEL FROM RADNIK WHERE IME LIKE ‘M%’

Page 36: Baze podataka - SQL

klauzula LIKE koristi 2 specijalna znaka:‘%’ koji predstavlja string od 0 ili više znakova i ‘_’ koji predstavlja poziciju jednog znaka.

WHERE klauzula

Primjeri:ime završava s N WHERE IME LIKE ‘%N’treći znak imena je R WHERE IME LIKE ‘__R%’ime je dugačko 5 znakova WHERE IME LIKE ‘_____’ime nije dugačko 5 znakova WHERE IME NOT LIKE ‘_____’u imenu je slovo G poslije R WHERE IME LIKE ‘%R%G%’

Page 37: Baze podataka - SQL

bez obzira o kojem tipu nul-vrijednosti se radi, NULL vrijednost određenog atributa može se testirati samo pomoću dvije specijalne klauzule: IS NULLili IS NOT NULLoperatori usporedbe ne mogu se koristiti za testiranje NULL vrijednosti

KORIŠTENJE NULL VRIJEDNOSTI

prikazati ime, posao i dodatak radnika koji ne primaju dodatak

SELECT IME, POSAO, DODATAK FROM RADNIK WHERE DODATAK IS NULL

prikazati ime, posao i dodatak radnika koji primaju premiju

SELECT IME, POSAO, DODATAK FROM RADNIK WHERE DODATAK IS NOT NULL

Page 38: Baze podataka - SQL

omogućava sortiranje rezultirajuće tablice po jednom ili više atributa u rastućem (ASCending) ili padajućem (DESCending) redoslijeduumjesto naziva stupca u ORDER BY klauzuli moguće je navesti i samo redni broj rezultirajućeg stupcaORDER BY je uvijek posljednja klauzula u SELECT bloku

ORDER BY klauzula

prikazati ime, posao i plaću radnika u odjelu 30 složene u rastućem redoslijedu poslova i padajućem redoslijedu plaća

SELECT IME, POSAO, PLACA FROM RADNIK WHERE SODJEL=30ORDER BY POSAO, PLACA DESC

kada se sortiranje izvodi po stupcu s NULL vrijednostima, n-torke s NULL vrijednostima uvijek su na početku rezultirajuće tablice, bez obzira je li sortiranje u rastućem ili padajućem redoslijedu.

Page 39: Baze podataka - SQL

1. Prikazati šifru radnika, ime, prezime, posao i datum zapošljavanja za radnike iz odjela 10.

2. Prikazati imena, prezimena i plaću analitičara.3. Prikazati ime, prezime, posao i plaću svakog radnika zaposlenog

17.12.1980.4. Prikazati naziv i šifru svakog odjela sa šifrom većom ili jednakom 20.5. Prikazati ime, plaću i premiju svakog radnika koji ima premiju veću od

plaće.6. Prikazati ime, posao i plaću svakog radnika iz odjela 20 koji zarađuje

više od 20000 kn.7. Prikazati ime, prezime, plaću premiju, posao i šifru odjela voditelja koji

ne rade u odjelu 30.8. Prikazati imena radnika koja sadrže slovo S.9. Prikazati imena radnika koja ne završavaju na N.10. U tri posebna upita prikazati imena, prezimena, poslove, plaće, šifre

odjela i datume zaposlenja svih radnika u slijedećem redoslijedu:a) u rastućem redoslijedu šifri odjela,b) u redoslijedu zapošljavanja,c) u rastućem redoslijedu poslova i unutar posla padajućem redoslijedu plaća.

ZADACI 1

Page 40: Baze podataka - SQL

Upiti nad jednom tablicom

prikaz modificiranog sadržaja tablice

mogućnost dobivanja zbirnih informacija, mogućnost primjene aritmetičkih funkcija,mogućnost primjene funkcija nad stringovima

Funkcije za dobivanje zbirnih informacija su:

Ove funkcije su definirane nad numeričkim stupcima.

pronalazi maksimalnu vrijednostMAX (atribut)

pronalazi minimalnu vrijednostMIN (atribut)

izračunava ukupnu vrijednostSUM (atribut)

izračunava srednju vrijednostAVG (atribut)

Page 41: Baze podataka - SQL

Upiti nad jednom tablicom

prikaz modificiranog sadržaja tablice

pronalazi različite NOT_NULL vrijednosti stupca

COUNT (DISTINCT atribut)

pronalazi NOT_NULL vrijednosti stupcaCOUNT (atribut)

pronalazi broj n-torki u grupiCOUNT (*)

Funkcija COUNT definirana je nad stupcima bilo kojeg tipa. Ima tri oblika:

Sve ove funkcije navode se iza SELECT klauzule.

Page 42: Baze podataka - SQL

Upiti nad jednom tablicom

prikaz modificiranog sadržaja tablice

naći minimalnu, srednju i maksimalnu plaću, kao i brojradnika u odjelu 10

SELECT MIN(PLACA), AVG(PLACA), MAX(PLACA), COUNT(*) FROM RADNIKWHERE SODJELA=10

naći ukupnu plaću i ukupni dodatak za trgovačke putnike

SELECT SUM(PLACA), SUM(DODATAK) FROM RADNIKWHERE POSAO=‘TRG_PUTNIK’

Page 43: Baze podataka - SQL

Omogućava dobivanje zbirne informacije za svaku različituvrijednost stupca po kojem se vrši grupiranje

Pogledajmo slijedeći upit:

naći minimalnu, srednju i maksimalnu plaću, kao i ukupan broj radnika u svakom odjelu

GROUP BY klauzula

ovaj upit mogao bi se riješiti formiranjem onoliko SQL SELECT naredbi koliko ima različitih odjela i pri tom bi SELECT i FROM klauzule bile slijedećeg oblika:

SELECT MIN(PLACA), AVG(PLACA), MAX(PLACA), COUNT(*), FROM RADNIK

Page 44: Baze podataka - SQL

mijenjao bi se samo uvjet selekcije u klauzuli WHERE:

WHERE SODJELA=10WHERE SODJELA=20WHERE SODJELA=30

rezultat svake SELECT naredbe bila bi jedna n-torka.

GROUP BY klauzula

identičan rezultat dala bi i slijedeća naredba:

SELECT MIN(PLACA), AVG(PLACA), MAX(PLACA), COUNT(*), SODJELA

FROM RADNIKGROUP BY SODJELA

Page 45: Baze podataka - SQL

djelovanje GROUP BY klauzule je identično višestrukom pisanju SELECT naredbe s različitim uvjetimaosim funkcija u SELECT listi može doći samo onaj jednostavni atribut po kojem se vrši grupiranjegrupiranje se može vršiti po više atributa i tada svaka različita n-torka čini grupu

GROUP BY klauzula

izračunati broj radnika koji obavljaju različit posao unutar svakog odjela

SELECT SODJELA, POSAO, COUNT(*) FROM RADNIKGROUP BY SODJELA, POSAO

Page 46: Baze podataka - SQL

Određuje kriterije za selekciju grupa kada su grupe većformirane s GROUP BY klauzulom

prikazati koje poslove obavljaju više od 2 radnika u svakom odjelu

HAVING klauzula

SELECT SODJELA, POSAO, COUNT(*) FROM RADNIKGROUP BY SODJELA, POSAOHAVING COUNT(*)>2

SQL naredbe mogu sadržavati aritmetičke izraze sastavljene od naziva atributa i konstanti povezanih aritmetičkim operatorima (“+”, “*”, “-”, “/”)

Page 47: Baze podataka - SQL

kolika je srednja godišnja zarada trgovačkih putnika

HAVING klauzula

SELECT AVG(PLACA + DODATAK) * 12 FROM RADNIKWHERE POSAO = ‘TRG_PUTNIK’

odrediti srednju godišnju plaću za svaki odjel (pri računanju ne uzimati u obzir direktora i voditelje odjela)

SELECT SODJELA, AVG(PLACA) * 12 FROM RADNIKWHERE POSAO NOT IN (‘DIREKTOR’, ‘VODITELJ’)GROUP BY SODJELA

Page 48: Baze podataka - SQL

Aritmetičke funkcije

SQL podržava slijedeće aritmetičke funkcije:

izračunava pozitivan kvadratni korijen brojaSQRT (broj)

izračunava ostatak dijeljenja broja1 s brojem2

MOD (broj1, broj2)

daje +1 ako je broj>0, 0 ako je broj=0, -1 ako je broj<0

SIGN (broj)

pronalazi apsolutnu vrijednost brojaABS (broj)

odbacuje ostatak od d-tog decimalnog mjestaTRUNC (broj [,d])

zaokružuje broj na d decimalaROUND (broj [,d])

izračunava n-tu potenciju brojaPOWER (broj, n)

Page 49: Baze podataka - SQL

Koji radnici zarađuju više od 100 kuna po satu? Zaradu po satu zaokružiti na 2 decimale (podrazumijeva se da postoje 22 radna dana u mjesecu i 8 radnih sati u danu)

Aritmetičke funkcije

SELECT IME, PREZIME, ROUND(PLACA/(22*8),2) “ZARADA PO SATU”FROM RADNIKWHERE PLACA/(22*8) > 100

Napomena:Zaglavlje rezultirajućeg stupca privremeno je zamijenjeno izrazom pod duplim navodnicima, a odvojeni su jednim praznim mjestom (ukoliko se izraz sastoji samo od jedne riječi nije ga potrebno stavljati pod navodnike).

Page 50: Baze podataka - SQL

NULL funkcija - NVL

NULL vrijednost je nedefinirana vrijednost i zbog toga se ne koristi u izračunavanju izraza i funkcijada bi se izračunavanje ipak omogućilo koristi se NVL funkcija koja privremeno mijenja NULL vrijednost s vrijednošću za koju se sami odlučimo, tj. s vrijednošću koja je neutralna u odnosu na željenu operaciju

prikaži ukupnu mjesečnu zaradu radnika u odjelu 30

SELECT IME, PREZIME, PLACA, DODATAK, PLACA+NVL(DODATAK,0) FROM RADNIKWHERE SODJELA=30

Napomena:da nismo koristili NVL funkciju, radnici koji nemaju dodatak imali bi urezultirajućem stupcu nedefiniranu vrijednost – NULL (jer je zbroj konkretne vrijednosti i NULL vrijednosti uvijek NULL vrijednost).

Page 51: Baze podataka - SQL

NULL funkcija - NVL

za odjel 30 izračunaj srednju plaću, srednji dodatak, srednju mjesečnu zaradu za radnike koji primaju dodatak i srednju mjesečnu zaradu za sve radnike

SELECT AVG(PLACA), AVG(DODATAK), AVG(PLACA+DODATAK), AVG(PLACA+NVL(DODATAK,0))

FROM RADNIKWHERE SODJELA=30

Razmotriti i komentirati rezultirajuće vrijednosti!

Page 52: Baze podataka - SQL

Funkcije nad nizom znakova

U SQL-u su definirane brojne funkcije nad znakovnim atributima. Najčešće se primjenjuju slijedeće:

pretvara niz znakova u brojTO_NUM (str)

pretvara sva velika slova u malaLOWER(str)

pretvara sva mala slova u velikaUPPER(str)

traži podstring ‘sstr’ u stringu ‘str’ polazeći od pozicije i. Ako je nadjen vraća se njegova pozicija, inače 0.

INSTR(str, sstr [, i])

daje podstring dužine d od pozicije i SUBSTR(str, i,[, d])

daje dužinu stringaLENGTH(str)

spajanje stringovastring1 || string2

Page 53: Baze podataka - SQL

Funkcije nad nizom znakova

rezultat je rst, ako je str=cs. Posljednji argument je default vrijednost

DECODE(str, cs1, rst1,..., dft)

ako je str1 NULL vraća str2, inače vraća str1NVL(str1, str2)

popunjava desnu stranu stringa ‘str’ sa znakom ‘char’ u dužini od ‘len

RPAD(str, len [, char])

popunjava lijevu stranu stringa ‘str’ sa znakom ‘char’ u dužini od ‘len’

LPAD(str, len [, char])

pretvara broj u niz znakovaTO_CHAR(str)

Sve ove funkcije navode se iza SELECT klauzule.

Page 54: Baze podataka - SQL

Funkcije nad nizom znakova

Prikaži imena radnika odjela 30 iza kojih neposredno slijedi posao koji obavljaju (odvojeno zarezom). Sortiratirezultirajuću tablicu u rastućem redoslijedu vrijednosti atributa posao

SELECT IME ||’, ‘|| POSAO RADNIKFROM RADNIKWHERE SODJELA=30ORDER BY POSAO

Napomena:Ovaj upit spaja tri stringa i spojeni string naziva RADNIK. Prvi string je atribut IME, drugi string se sastoji od dva znaka – zareza i jednog praznog mjesta i treći string je atribut POSAO.

Page 55: Baze podataka - SQL

Funkcije nad nizom znakova

Koristeći atribut POSAO formirati stupac KLASA tako da za posao analitičara vrijednost klase bude 1, voditelja 3, direktora 5, a za sve ostalo 2.

SELECT IME, POSAO, DECODE(POSAO,’ANALITICAR’,1,’VODITELJ’,3, ’DIREKTOR’,5,2) KLASA

FROM RADNIK

Koliko su duga prezimena radnika?

SELECT PREZIME, LENGTH(PREZIME) DUZINAFROM RADNIK

Page 56: Baze podataka - SQL

1. Koliko iznosi dužina najdužeg imena radnika?

2. Prikazati ime, mjesečnu plaću, dnevnu zaradu i zaradu po satu rada radnika koji nemaju pravo na dodatak. (Podrazumijevati da su u mjesecu 22 radna dana i 8 radnih sati dnevno)

3. Izračunati broj radnika u odjelu 20 koji primaju plaću i broj radnika koji primaju dodatak.

4. Izračunati srednju, minimalnu i maksimalnu plaću onih grupa radnika koji obavljaju posao analitičara ili voditelja.

ZADACI 2

Page 57: Baze podataka - SQL

Umetanje upita nad jednom tablicom

u upit nad drugom tablicom

prvi način povezivanja tablica relacijske baze podatakadinamička zamjena rezultata jednog upita u WHERE klauzuli drugim

Pogledajmo slijedeći upit:

prikazati ime i posao svakog radnika koji ima isti posao kaoDean

najprije bi trebalo utvrditi koji posao obavlja Dean:

SELECT POSAO FROM RADNIKWHERE IME=‘DEAN’

izvršavanjem ove naredbe saznajemo da je Dean analitičar i polazni zahtjev se svodi na prikazivanje imena i posla svakog radnika koji obavlja posao analitičara:

Page 58: Baze podataka - SQL

Umetanje upita nad jednom tablicom

u upit nad drugom tablicom

SELECT IME, POSAO FROM RADNIKWHERE POSAO=‘ANALITICAR’

povezivanje tablica dinamičkom zamjenom rezultata jednog upita u WHERE klauzuli drugim sastoji se upravo u tome da se umjesto rezultata prvog upita (u našem slučaju ‘ANALITICAR’) u WHERE klauzuli drugog piše prvi upit:

SELECT IME, POSAO FROM RADNIKWHERE POSAO=(SELECT POSAO

FROM RADNIKWHERE IME=‘DEAN’)

prvi upit (upit u zagradi) se naziva unutarnji upit i on se uvijek izvršava prvidrugi upit se naziva vanjski upit

Page 59: Baze podataka - SQL

Umetanje upita nad jednom tablicom

u upit nad drugom tablicom

prikazati ime i posao radnika koji rade u Rijeci

SELECT IME, POSAO FROM RADNIKWHERE SODJELA IN (SELECT SODJELA

FROM ODJELWHERE LOKACIJA=‘RIJEKA’)

prikazati ime, posao i plaću radnika iz odjela 20 koji imaju isti posao kao radnici iz odjela projektiranje

SELECT IME, POSAO , PLACA FROM RADNIKWHERE SODJELA= 20 ANDPOSAO IN (SELECT POSAO FROM RADNIK

WHERE SODJELA IN (SELECT SODJEL FROM ODJEL WHERE NAZIV=‘PROJEKTIRANJE’))

Page 60: Baze podataka - SQL

Umetanje upita nad jednom tablicom

u upit nad drugom tablicom

Tko je najbolje plaćeni radnik u svakom odjelu?

SELECT IME, PREZIME, SODJELA,POSAO, PLACAFROM RADNIKWHERE (SODJELA, PLACA) IN (SELECT SODJELA, MAX(PLACA)

FROM RADNIKGROUP BY SODJELA)

Page 61: Baze podataka - SQL

Primjena operatora unije (UNION), presjeka (INTERSECT) i razlike (MINUS)

upit (unutarnji ili vanjski) može biti sastavljen od dva ili više SELECT blokova povezanih operatorima UNION, INTERSECT ili MINUS

rezultat primjene operatora UNION na dva SELECT bloka su sve rezultirajuće n-torke prvog SELECT bloka i one rezultirajuće n-torke drugog, koje nisu među rezultirajućim n-torkama prvog SELECT bloka

rezultat primjene operatora INTERSECT na dva SELECT bloka su sve rezultirajuće n-torke prvog SELECT bloka koje su istovremeno i rezultirajuće n-torke drugog SELECT bloka

rezultat primjene operatora MINUS na dva SELECT bloka su sve rezultirajuće n-torke prvog SELECT bloka koje nisu istovremeno rezultirajuće n-torke drugog SELECT bloka

Page 62: Baze podataka - SQL

Primjena operatora unije (UNION), presjeka (INTERSECT) i razlike (MINUS)

da bi se navedene operacije mogle primijeniti, SELECT blokovi (upiti) na koje se operacije odnose moraju imati isti broj rezultirajućih stupaca i oni moraju odgovarati po tipu

primjena ovih operacija na upite nad istom tablicom nema puno smisla, jer se identičan rezultat može postići korištenjem logičkih operatora AND, OR i NOT

pogledajmo primjer nad dvije tablice. Pretpostavimo da je kreirana i tablica o trgovačkim putnicima čija je shema:

TRGOVACKI_PUTNIK(SRADNIK, DODATAK)

prikazati šifre radnika koji nisu trgovački putnici mogao bi se riješiti na slijedeći način:

SELECT SRADNIK FROM RADNIK MINUSSELECT SRADNIK FROM TRGOVACKI_PUTNIK

Page 63: Baze podataka - SQL

1. Koji radnici zarađuju manje od 30% direktorove plaće?

2. Prikazati imena radnika s najdužim imenom.

3. Tko je posljednji zaposleni radnik u svakom odjelu?

4. Koliko radnika iz odjela 10 prima plaću veću od najveće plaće iz odjela projektiranje?

ZADACI 3

Page 64: Baze podataka - SQL

JOIN – spajanje dvije ili više tablica

povezivanje tablica dinamičkom zamjenom rezultata jednog upita u WHERE klauzuli drugim ima jedno značajno ograničenje:

iako se referenciraju podaci iz više tablica, mogu se prikazivati samo podaci jedne tablice

za prikazivanje podataka iz više tablica mora se koristiti JOIN

JOIN povezuje n-torke različitih tablica koristeći zajedničke atribute, odnosno atribute definirane nad istim domenama

uobičajeni način povezivanja tablica relacijske baze podataka

Page 65: Baze podataka - SQL

EQUIJOIN – spajanje s izjednačavanjem

prikazati za svakog radnika ime, prezime, posao i podatke o odjelu u kojem radi

SELECT IME, PREZIME, POSAO,RADNIK.SODJELA, ODJEL.SODJELA, NAZIV, LOKACIJAFROM RADNIK, ODJELWHERE RADNIK.SODJELA=ODJEL.SODJELA

potpuna specifikacija naziva atributa sastoji se od naziva tablice, točke i naziva stupca (ona se mora navoditi ukoliko naziv atributa (stupca) nije jedinstven u bazi podataka, tj. ukoliko se isti naziv koristi za stupce različitih tablica)

u WHERE klauzuli se javlja uvjet spajanja (do sada su u WHERE klauzuli prikazivani samo uvjeti selekcije)

Page 66: Baze podataka - SQL

EQUIJOIN – spajanje s izjednačavanjem

za svakog analitičara prikazati ime i lokaciju na kojoj radi

SELECT IME, PREZIME, LOKACIJAFROM RADNIK, ODJELWHERE RADNIK.SODJELA=ODJEL.SODJELAAND POSAO=‘ANALITICAR’

uz potpunu specifikaciju naziva atributa po kojima se vrši spajanje tablica RADNIK i ODJEL navodi se i operator spajanja, u ovom slučaju jednakost (=)

spajanje tablica moguće je vršiti u odnosu na bilo koji operator uspoređivanja

Page 67: Baze podataka - SQL

CARTESIAN JOIN – Kartezijev produkt

za svakog analitičara prikazati ime i lokaciju na kojoj radi (izostavljajući JOIN klauzulu)

SELECT IME, PREZIME, LOKACIJAFROM RADNIK, ODJELWHERE POSAO=‘ANALITICAR’

ako svakoj n-torki tablice s velikim brojem n-torki treba pridružiti istu vrijednost, moguće je formirati pomoćnu tablicu s jednim stupcem i tom vrijednosti u stupcu i izvršiti Kartezijev produkt te dvije tablice

ukoliko se izostavi uvjet spajanja u WHERE klauzuli izvršava se CARTESIAN JOIN

ako se primjenjuje na dvije tablice tada se svaka n-torka prve spaja sa svakom n-torkom druge tablice

ako se primjenjuje na više od dvije tablice tada se rezultirajuća tablica sastoji od svih kombinacija n-torki svih tablica

Page 68: Baze podataka - SQL

OUTER JOIN

prikazati naziv odjela, kao i ime i posao svakog radnika koji u njemu radi, uključujući i odjele bez radnika

SELECT NAZIV, IME, PREZIMEFROM ODJEL, RADNIKWHERE ODJEL.SODJELA=RADNIK.SODJELA(+)ORDER BY ODJEL.SODJELA

koristi se da bi se u rezultat JOIN-a uključili i oni redovi koji ne zadovoljavaju uvjet spajanja

samo zbog JOIN-a tablici se dodaje prazan red, koji se uključuje u JOIN samo za one redove za koje se ne nađe odgovarajuća stvarna vrijednost

OUTER JOIN se označava navođenjem oznake “(+)” u WHERE klauzuli iza tablica.stupac kombinacije koja zahtijeva prazan red

Page 69: Baze podataka - SQL

SELF JOIN

prikazati ime i posao svakog radnika koji ima nadređenog; također prikazati ime i posao nadređenog

SELECT PODR.IME, PODR.POSAO, PODR.SNADR,NADR.SRADNIK SEF, NADR.IME SEF_IME, NADR.POSAO SEF_POSAO

FROM RADNIK PODR, RADNIK NADRWHERE PODR.SNADR=NADR.SRADNIK

tablica može biti spojena sa samom sobom po stupcima koji sadrže isti tip informacije

SELF JOIN spaja redove tablice s ostalim ili istim redovima te iste tablice

tablici RADNIK se daju dva sinonima PODR i NADR, pomoću kojih su praktično formirane dvije virtualne tablice s identičnim sadržajem

Page 70: Baze podataka - SQL

Realizirati na dva načina (dinamičkom zamjenom rezultata jednog upita u WHERE klauzuli drugim, odnosno spajanjem tablica) slijedeće upite:

1. Koliko radnika radi u Matuljima?2. Koji radnici rade u Matuljima? 3. Prikazati naziv i lokaciju odjela koji su zaposlili bar dva trgovačka

putnika u prva dva mjeseca 1981. godine.4. Prikazati sve podatke o odjelima koji imaju bar dva analitičara.

Realizirati spajanjem tablica slijedeće upite:

1. Prikazati imena radnika i lokacije u kojima rade. Sortirati listu po rastućim vrijednostima atributa lokacija.

2. Prikazati ime i plaću radnika i njihovih neposredno nadređenih, za one radnike koji zarađuju više od svojih neposredno nadređenih.

3. Prikazati prosječnu plaću i broj radnika čije su plaće veće od plaća neposredno nadređenih

4. Prikazati ime, plaću i datum zaposlenja radnika i njegovog neposredno nadređenog, za radnike zaposlene prije svojih nadređenih.

5. Prikazati šifru odjela, lokaciju i broj radnika za svaki odjel.

ZADACI 4

Page 71: Baze podataka - SQL

Operacije nad tablicama koje u sebi

sadrže strukturu tipa stabla

ponekad postoji veza između n-torki relacije koja praktično predstavlja hijerarhijsku vezu (vezu tipa stabla)

koristeći atribute SRADNIK i SNADR tablicu RADNIK moguće je predstaviti i na slijedeći način:

STJEPAN

IVAN MARKO DANIEL

DEAN BOŽIDAR FILIP LOVRO PETAR JOSIP GORAN ANTE

MATEJ JAKOV

Page 72: Baze podataka - SQL

Operacije nad tablicama koje u sebi sadrže strukturu tipa stabla

prikazati organizacijsku kartu navodeći razinu na kojoj se nalazi svaki radnik

SELECT LEVEL, IME, PREZIME, SRADNIK, POSAO, SODJELA, SNADRFROM RADNIKCONNECT BY PRIOR SRADNIK=SNADRSTART WITH IME=‘STJEPAN’

koristeći SQL klauzule CONNECT BY i START WITH moguće je transformirati tablicu u stablo

CONNECT BY – definira strukturu stablaSTART WITH – definira korijen stabla

LEVEL – određuje razinu u hijerarhijiPRIOR – određuje smjer formiranja stabla

Page 73: Baze podataka - SQL

SQL *Plus

SQL je standardni upitni jezik implementiran unutar nekog programskog modula konkretnog SUBPkod ORACLA taj programski modul je SQL*Plus (od verzije 5)osim što omogućava korištenje standardnog SQL-a, ima i vlastite

naredbe, kojima se omogućava:editiranje teksta SQL naredbedobivanje novih izvedenih podataka,formatiranje rezultata upita i sl.

Pregled SQL *Plus naredbi dan je u slijedećoj tablici:

Izvršava naredbu iz SQL buffera/

Izvršava naredbu operativnog sustava ne izlazeći iz SQL*Plus-a. (ekvivalentno HOST naredbi)

$

Završava DOCUMENT naredbu#

Pokreće izvršavanje datoteke sa SQL i SQL*Plus naredbama@

OpisNaredba

Page 74: Baze podataka - SQL

SQL *Plus

Definira korisničku varijablu i dodjeljuje joj CHAR vrijednost

DEFINE

Omogućava izlazak iz ORACLE-a i ulazak pod drugom identifikacijom (username/password)

CONNECT

Izvršava obradu grupe selektiranih redovaCOMPUTE

Omogućava formatiranje stupca i njegovog zaglavlja na izvješću

COLUMN

Briše break definiciju, sadržaj tekućeg buffera, column definiciju itd.

CLEAR

Mijenja tekuću liniju tekućeg bufferaCHANGE

Omogućava prikaz konstantnog teksta na dnu svake strane izvješća

BTITLE

Specificira događaj koji će prouzrokovati prekid i SQL akciju u toku prekida

BREAK

Dodaje tekst na kraj tekuće linije naredbe tekućeg bufferaAPPEND

OpisNaredba

Page 75: Baze podataka - SQL

SQL *Plus

Prikazuje sadržaj tekućeg buffera (posljednja linija je tekuća linija)

LIST

Dodaje nove linije iza tekuće linije tekućeg bufferaINPUT

Izvršava naredbu operativnog sustava ne napuštajući SQL*Plus (ekvivalentno “$” naredbi)

HOST

Prikazuje informacije o SQL ili SQL*Plus naredbamaHELP

Puni tekući buffer sadržajem specificirane datotekeGET

Napušta SQL*Plus i vraća kontrolu operativnom sustavuEXIT

Poziva standardni tekst editor, sa sadržajem tekućeg buffera ili specificirane datoteke

EDIT

Omogućava pisanje komentara, sastavljenog od proizvoljnog broja linija teksta, unutar datoteke naredbi

DOCUMENT

Izvršava COMMIT i napušta ORACLE, ali ne i SQL*PlusDISCONNECT

Prikazuje kratak opis tabliceDESCRIBE

Briše tekuću liniju tekućeg bufferaDEL

OpisNaredba

Page 76: Baze podataka - SQL

SQL *Plus

Nastavlja prikaz izvješća na novoj straniciNEWPAGE

Prikazuje poruku i čeka pritisak tipke <RETURN>PAUSE

Sinonim za EXITQUIT

Počinje komentar u programuREMARK

Prikazuje i izvršava naredbu sadržanu u SQL bufferuRUN

Čuva sadržaj tekućeg buffera (programa ili SQL naredbe) u bazi podataka ili datoteci operativnog sustava

SAVE

Postavlja sustavnu varijablu na određenu vrijednostSET

Prikazuje vrijednost sustavne varijableSHOW

Omogućava da se sve što se prikazuje na terminalu istovremeno zapisuje u specificiranu datoteku ili se tiska

SPOOL

Starta SQL*Plus – sustavna naredbaSQLPLUS

Izvršava naredbe datoteke naredbiSTART

OpisNaredba

Page 77: Baze podataka - SQL

SQL *Plus

Prikazuje vremensku analizu izvršavanja SQL naredbi i SQL*Plus programa

TIMING

Omogućava prikaz zaglavlja na početku svake stranice izvješća

TTITLE

Briše definiciju korisničke varijableUNDEFINE

OpisNaredba

Sintaksa SQL naredbi:svaka SQL naredba mora se završiti znakom “;” (to nije dio naredbe, već služi za oznaku kraja teksta naredbe)posljednja unijeta SQL naredba čuva se u bufferu sve dok se ne unese novanaredba se može editirati i ponovno izvršavatiprilikom editiranja znak “;” se neće vidjeti i ne treba ga unositi (njegova funkcija je završena unošenjem SQL naredbe)ukoliko se radi o podatku tipa CHAR ili vrijednosti za identifikaciju korisnika (vrijednosti za username i password) mora se voditi računa o velikim i malim slovima; kada se radi o nazivima tablica, stupaca ili drugim objektima baze i rezerviranim riječima, nije važno koriste li se mala ili velika slova

Page 78: Baze podataka - SQL

SQL *Plus

Sintaksa SQL *Plus naredbi:obično se unosi u jednoj linijiukoliko ne stane, može se nastaviti u idućoj liniji i pri tom ne treba pritisnuti <ENTER> , već na kraju linije treba unijeti crticu (“-”)ako se za SQL *Plus naredbu koristi više linija, svaka linija , osim posljednje, završava crticomzavršetak cijele naredbe se označava pritiskom na <ENTER>znak “;” se ne koristi za oznaku kraja SQL *Plus naredbeSQL *Plus naredbe se ne čuvaju u SQL bufferu

SQL *Plus naredbe za editiranjeomogućavaju ispravljanje grešaka i modificiranje unijete SQL naredbeposljednja unijeta SQL naredba čuva se u bufferu tako da se SQL *Plus naredbama za editiranje mijenja sadržaj bufferaSQL naredba u bufferu je ‘tekuća’ SQL naredba

SQL *Plus editor je linijski editor; linija na koju se odnosi naredba za editiranje je ‘tekuća’ linija i označena je zvjezdicom (“*”)

Page 79: Baze podataka - SQL

SQL *Plus naredbe za editiranje

A[PPEND] <tekst> dodaje tekst na kraj tekuće linije tekućeg buffera ako tekst počinje praznim mjestom, iza riječi APPEND treba unijeti dva prazna mjesta (jedno prazno mjesto je obavezni kontrolni znak); ako se tekst završava znakom “;”, potrebno je unijeti dva takva znaka (“;;”)

C[HANGE] /<stari tekst>/<novi tekst>/ zamjenjuje stari tekst novim tekstom u tekućoj liniji

DEL briše tekuću liniju tekućeg buffera

I[NPUT] [<tekst>] dodaje jednu ili više linija iza tekuće linije tekućeg buffera

L[IST] <tekst> prikazuje sadržaj buffera, tj. linije tekuće SQL naredbe i čini posljednju liniju tekućom linijom

L[IST] <n> prikazuje specificiranu liniju, tj. čini je tekućom linijom

L[IST] <m> <n> prikazuje linije između specificiranih granica, uključujući i linije određene graničnim vrijednostima

R[UN] prikazuje i izvršava tekuću SQL naredbu

/ izvršava tekuću SQL naredbu

Page 80: Baze podataka - SQL

SQL *Plus naredbe za editiranje

Ako u SQL naredbi postoji greška, bit će prikazana odgovarajuća porukaPrimjer: SQL> SELECT *

2 FROM RADDNIK; - javit će grešku da tablica ne postoji

Prikazujemo sadržaj buffera:SQL> L

(zvjezdica iza broja 2 ukazuje da je druga linija SQL naredbe tekuća linija)

Ispravljamo grešku:SQL> C /RADDNIK/RADNIK/

Prikazujemo sadržaj buffera:SQL> L

Izvršavamo naredbu:SQL> / ili SQL> RUN (prikazuje se kompletan sadržaj tablice RADNIK)

Greška se mogla ukloniti i naredbom:SQL> C/DD/D/

ili:SQL> C/D…/DNIK/

Page 81: Baze podataka - SQL

SQL *Plus naredbe za editiranje

Ako umjesto svih podataka o radnicima želimo prikazati samo imena radnika, najprije treba prvu liniju SQL naredbe učiniti tekućom linijom:

SQL> L 1 (1* SELECT *)SQL> C/*/IME/ (1* SELECT IME)

Ako osim imena želimo i poslove koje radnici obavljaju, može se koristiti naredba APPEND:

SQL> A, POSAO (1* SELECT IME, POSAO)Izvršenje naredbe:

SQL> / ili SQL> RUN

Ako želimo prikazati ime i posao samo onih radnika koji rade u odjelu 30, treba dodati kriterij selekcije:

SQL> L 2 (pozicioniranje na drugu liniju)

Koristimo naredbu INPUT:SQL> I

Unosimo kriterij selekcije

WHERE SODJELA=30 (1* SELECT IME, POSAO.)

Izvršenje naredbe: SQL> / ili SQL> RUN