Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

Baze podataka i SQL

Vježba 3

Jednostavne SQL funkcije

1
Osnovni SQL upit

OSNOVNI SQL UPIT:

SELECT <kolone> FROM <tablica> (SQL sintaksa)


ISPIŠI <kolone> IZ <tablica>

Laički rečeno:

Iz popisa tablica koji su navedeni u grupi tablica


<tablica> želim ispisati stupce koji su navedeni u
grupi stupaca <kolone>

2
SQL (engl. Structured Query
Language)
• za rad sa bazama podataka koristi se SQL (strukturirani
upitni jezik) čije se naredbe mogu podijeliti u 4 grupe:

1. Dohvat podataka – SELECT

2. Data Manipulation Language (DML)


- INSERT (umetanje redaka)
- UPDATE (ažuriranje redaka)
- DELETE (brisanje redaka)

3. Data Definition Language (DDL)


- CREATE (stvaranje nove relacije)
- ALTER (promjena strukture relacije)
- DROP (brisanje relacije)
- TRUNCATE (brisanje svih redaka relacije)

4. Prava pristupa
- GRANT (dodjeljivanje prava korisniku)
- REVOKE (oduzimanje prava korisniku) 3
SQL funkcije
• izvođenje računskih operacija nad podacima
• modifikacije prikaza pojedinih kolona
• konverzije tipova podataka odgovarajućih kolona

• sintaksa  naziv_funkcije(argument1, argument2, …)

1. Jednostavne funkcije radnik


- odnose se na jedan redak tablice
- izvršavaju se ponovo za svaki selektirani redak
- brojčane, znakovne, datumske, funkcije za konverziju
ostale funkcije

2. Grupne funkcije
- odnose se na više redaka tablice

VRATI DULJINU ZNAKOVNOG NIZA


-jednostavna funkcija, odnosi se na jedan redak
IZRAČUNAJ PROSJEČNU PLAĆU
-grupna funkcija, odnosi se na više redaka

4
Brojčane funkcije (1/3)

- ulazni parametri i rezultat su numerici

Primjeri brojčanih funkcija:

1. ROUND funkcija – zaokruživanje na N decimalnih mjesta


SELECT ROUND(45.976,2) FROM SYS.DUAL;
SELECT ROUND(commission_pct,1) FROM
employees;

2. TRUNC funkcija – odvoji broj na N decimalnih mjesta


SELECT TRUNC(45.976,2) FROM SYS.DUAL;
SELECT TRUNC(commission_pct,1) FROM
5
employees;
Brojčane funkcije (2/3)

3. POWER funkcija – računa ulazni izraz na N-tu potenciju


SELECT POWER(20,2) FROM SYS.DUAL;

4. SQRT funkcija – računa drugi korijen ulaznog izraza


SELECT first_name, SQRT(salary) FROM employees;

5. SIGN funkcija – ispituje predznak, vraća -1 (negativan


broj), 0 (nula) ili 1 (pozitivan broj)
SELECT first_name, SIGN(salary-5000) FROM
employees;

6
Brojčane funkcije (3/3)

6. FLOOR funkcija – vraća najveći cijeli broj manji ili jednak


ulaznom izrazu
SELECT FLOOR(salary*commission_pct)
FROM employees;

7. CEIL funkcija – vraća najmanji cijeli broj veći ili jednak


ulaznom izrazu
SELECT CEIL(salary*commission_pct)
FROM employees;

8. MOD funkcija – vraća ostatak kod dijeljenja


SELECT MOD(100, 3) FROM SYS.DUAL;
7
Znakovne funkcije (1/4)

- kao ulazni parametar koriste znakovni tip, dok kao


rezultat mogu vratiti znakovnu ili numeričku vrijednost

Primjeri znakovnih funkcija (1):

# pretvori znakovni niz u mala slova


SELECT LOWER(first_name), last_name
FROM employees;

# pretvori znakovni niz u velika slova


SELECT UPPER(first_name), last_name
FROM employees;
8
Znakovne funkcije (2/4)

# spajanje dva znakovna niza


SELECT CONCAT(first_name,last_name)
FROM employees;

# vrati dio znakovnog niza


SELECT first_name, SUBSTR(first_name,1,3)
FROM employees;

# nađi poziciju prvog pojavljivanja zadanog stringa


unutar ulaznog stringa
SELECT first_name, INSTR(first_name,’on’)
FROM employees;
9
Znakovne funkcije (3/4)

# vrati duljinu znakovnog niza


SELECT first_name, LENGTH(first_name)
FROM employees;

# pretvori jedan znak u drugi


SELECT first_name, TRANSLATE(first_name,’k’,’p’)
FROM employees;

# pretvori jedan znakovni niz u drugi


SELECT first_name,REPLACE(first_name,’John’,’Ivan’)
FROM employees;

10
Znakovne funkcije (4/4)

# ulazni niz se s desne strane popunjava zadanim


znakovima do zadane duljine
SELECT RPAD(first_name,15,’*’) FROM employees;

# vrati niz znakova duljine N kojem je na prvi niz lijevo


dodan drugi
SELECT LPAD(first_name,15,’*’) FROM employees;

# vrati ASCII vrijednost od znaka


SELECT ASCII(‘X’) FROM SYS.DUAL;

11
Datumske funkcije (1/2)

- funkcije za izvođenje operacija nad datumima


- rezultat izvođenja je datum, a kod nekih funkcija može
biti i numerička vrijednost

Sysdate
- pseudo kolona koja vraća trenutni datum i vrijeme
SELECT SYSDATE FROM SYS.DUAL;

Aritmetičke operacije sa datumima:


- mogu se koristiti + i – operatori

SELECT SYSDATE+21 FROM SYS.DUAL;

SELECT SYSDATE-21 FROM SYS.DUAL; 12


Datumske funkcije (2/2)

# ispiši broj mjeseca između dva datuma


SELECT first_name, last_name, MONTHS_BETWEEN(SYSDATE,hire_date)
FROM employees ;

# dodaj N kalendarskih mjeseca na određeni datum


SELECT first_name, last_name, ADD_MONTHS(hire_date,36)
FROM employees;

# nađi datum slijedećeg definiranog dana nakon zadanog datuma


SELECT first_name, last_name, NEXT_DAY(hire_date, ‘Subota’)
FROM employees;

# nađi datum zadnjeg dana u mjesecu kojem pripada zadani datum


SELECT first_name, last_name, LAST_DAY(hire_date)
FROM employees;

13
Funkcije za konverziju
• TO_CHAR(number|date,’format’)
• TO_NUMBER(char)
• TO_DATE(char,’format’)

Primjeri konverzijskih funkcija:

# ispiši datum zaposlenja u zadanom obliku


SELECT first_name, last_name, TO_CHAR(hire_date,'Month dd,yyyy')
FROM employees;

# ispiši trenutno vrijeme


SELECT TO_CHAR(SYSDATE,’HH24:MI:SS’) FROM SYS.DUAL;

# pretvori numeričko polje u znakovno


SELECT first_name, last_name, salary FROM employees
WHERE salary > TO_NUMBER(‘6000’);

# ispiši sve radnike koji su se zaposlili nakon određenog datuma


SELECT first_name, last_name, hire_date FROM employees
WHERE hire_date > TO_DATE(‘Ožujak 10,1997’,’Month dd,yyyy’);

14
Ostale funkcije
• NVL(value,val)
• GREATEST(value1,value2)
• LEAST(value1,value2)

Primjeri:

SELECT first_name, last_name, NVL(salary*commission_pct,0)


FROM employees;

SELECT first_name, last_name,


GREATEST(salary,NVL(salary*commission_pct,0))
FROM employees;

SELECT first_name, last_name,


LEAST(salary,NVL(salary*commission_pct,0))
FROM employees;
15
Ugniježđene funkcije:
- Jednostavne SQL funkcije se mogu ugnježđivati na svim razinama

Function1(Function2(Function3(column,arg3),arg2),arg1)

Primjer:

SELECT first_name, last_name,


FLOOR(MONTHS_BETWEEN(SYSDATE,hire_date)/12)

FROM EMPLOYEES;

16

You might also like