You are on page 1of 15

Tehniko veleuilite u Zagrebu Informatiko-raunarski odjel

Baze podataka
3. pred SQL II dio

Tipovi podataka - Datum i vrijeme


MySQL standard zapisuje datum u obliku 'YYYY'YYYY-MMMM-DD' vrijeme u obliku 'HH:MM:SS' DATE DATETIME '1000'1000 -01 01-01 00: 00:00 00:00' :00' do '9999'9999-12 12-31 23:59:59 23:59:59'' TIMESTAMP Broj dana proteklih od '1970'1970-01 01-01 00: 00:00 00:01' :01' TIME '-838:59:59 838:59:59'' to '838:59:59 '838:59:59'' YEAR[(2|4)]

Datumske funkcije - izvadak


ADDDATE(date,INTERVAL expr unit), Dodaje datumu date odreeno datumsko vrijeme ADDDATE('1998ADDDATE('1998 -01 01-02', INTERVAL 31 DAY); CURDATE() , CURRENT_DATE, CURRENT_DATE() dananji datum na posluitelju CURTIME(), CURRENT_TIME, CURRENT_TIME() trenutno vrijeme na posluitelju DATEDIFF(expr1,expr2) vraa razliku dva datuma u danima Vaenje specifinih dijelova datuma: DAY(date), MONTH(date) i YAR(date) HOUR(time), MINUTE(time) EXTRACT(unit FROM date)

Datumske funkcije - izvadak


DATE_FORMAT(date,format) stavlja datum u neki format Stvaranje datuma zadavanje kao YYYYYYYY-DD DD-MM MAKEDATE(year,dayofyear) STR_TO_DATE(str,format)

Datumske funkcije - primjeri


Dio zapisa iz tablice klijent

Ispisati datum unosa klijenta u formatu oblika DD.MM.GGGG. za klijenta sa ifrom 1137. SELECT DATE_FORMAT(datUnosKlijent,'%d.%m.%Y DATE_FORMAT(datUnosKlijent,'%d.%m.%Y.') .') FROM klijent WHERE sifKlijent=1137; sifKlijent =1137;

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent kojima je datum unosa 29.10.1986. SELECT * FROM klijent WHERE datUnosKlijent datUnosKlijent='1986 ='1986-10 10-29';

Ispisati sve zapise iz tablice klijent koji su uneseni u 10 mjesecu. SELECT * FROM klijent WHERE datUnosKlijent LIKE '%'%-10 10-%'; SELECT * FROM klijent WHERE MONTH(datUnosKlijent MONTH(datUnosKlijent)=10; )=10;

21 zapis

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent koji su uneseni tijekom 1987. SELECT * FROM klijent WHERE datUnosKlijen datUnosKlijent t LIKE '1987 '1987-%';

145 zapisa

Ispisati sve zapise iz tablice klijent koji su uneseni 10. u mjesecu. SELECT * FROM klijent WHERE datUnosKlijent LIKE '%'%-10';

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent koji su uneseni tijekom 1987. SELECT * FROM klijent WHERE YEAR( YEAR(datUnosKlijen datUnosKlijent)=1987; t)=1987; Ispisati sve zapise iz tablice klijent koji su uneseni 10. u mjesecu. SELECT * FROM klijent WHERE DAY( DAY(datUnosKlijent datUnosKlijent)= )=10; 10;

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent koji su uneseni izmeu 1986 i 1988 ukljuujui i te godine. SELECT * FROM klijent WHERE YEAR(datUnosKlijent YEAR(datUnosKlijent) ) BETWEEN 1986 AND 1988;

297 zapisa

Ispisati sve zapise iz tablice klijent koji su uneseni 10, 11, i 12 u mjesecu. SELECT * FROM klijent WHERE DAY(datUnosKlijent DAY(datUnosKlijent) ) IN (10,11,12);

28 zapisa
9

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent koji su uneseni izmeu 1986 i 1988 ukljuujui i te godine. SELECT * FROM klijent WHERE YEAR( YEAR(datUnosKlijen datUnosKlijent) t) >=1986 AND YEAR(datUnosKlijen YEAR( datUnosKlijent) t) <= <=1988; 1988; Ispisati sve zapise iz tablice klijent koji su uneseni 10, 11, i 12 u mjesecu. SELECT * FROM klijent WHERE DAY( DAY(datUnosKlijent datUnosKlijent)=10 )=10 OR DAY(datUnosKlijent DAY( datUnosKlijent)=11 )=11 OR DAY(datUnosKlijent DAY(datUnosKlijent)=12 )=12; ;

10

Datumske funkcije - primjeri


Ispisati sve zapise iz tablice klijent koji su uneseni izmeu 1986 i 1988 ukljuujui i te godine, ali u 6 i 7 mjesecu. SELECT * FROM klijent WHERE YEAR(datUnosKlijent YEAR(datUnosKlijent) ) BETWEEN 1986 AND 1988 AND MONTH(datUnosKlijent MONTH(datUnosKlijent) ) BETWEEN 6 AND 7;

58 zapisa

11

Datumske funkcije - primjeri


Ispisati ime, prezime i datum unosa klijenta iz tablice klijent za zapise koji su uneseni izmeu 1986 i 1988 ukljuujui i te godine, ali u 6 i 7 mjesecu. Uz ime, prezime i datum unosa ispisati i trenutni datum na posluitelju. SELECT imeKlijent imeKlijent, , prezimeKlijent, prezimeKlijent, datUnosKlijent, datUnosKlijent, CURDATE() FROM klijent WHERE YEAR(datUnosKlijent YEAR( datUnosKlijent) ) BETWEEN 1986 AND 1988 AND MONTH(datUnosKlijent MONTH(datUnosKlijent) ) BETWEEN 6 AND 7;

58 zapisa

12

Datumske funkcije - primjeri


Ispisati ime i prezime zapise iz tablice klijent koji su uneseni izmeu u horoskopskom znaku raka. (Horoskopski znak raka je od 22.06 do 23.07) SELECT * FROM klijent WHERE (MONTH( MONTH(datUnosKlijent datUnosKlijent) )=6 AND DAY(datUnosKlijent DAY( datUnosKlijent)>=22) )>=22) OR (MONTH( (MONTH(datUnosKlijent datUnosKlijent) )=7 AND DAY(datUnosKlijent DAY( datUnosKlijent)<=23) )<=23) ;

33 zapisa

13

Datumske funkcije - primjeri


Ispisati ime i prezime te datum u obliku dd.mm.gg dd.mm.gg. . iz tablice klijent za zapise koji su uneseni u horoskopskom znaku raka. (Horoskopski znak raka je od 22.06 do 23.07) SELECT imeKlijent imeKlijent, ,prezimeKLijent,DATE_FORMAT( prezimeKLijent,DATE_FORMAT(datUnosKlijent datUnosKlijent,'%d.%m.%y.') ,'%d.%m.%y.') FROM klijent WHERE (MONTH(datUnosKlijent MONTH(datUnosKlijent) )=6 AND DAY(datUnosKlijent DAY(datUnosKlijent)>=22) )>=22) OR (MONTH( (MONTH(datUnosKlijent datUnosKlijent) )=7 AND DAY( DAY(datUnosKlijent datUnosKlijent)<=23) )<=23) ;

33 zapisa

14

Kvazi datumska funkcija primjeri String - funkcija


Ispisati ime i prezime zapise iz tablice klijent koji su roeni u horoskopskom znaku raka. (Horoskopski znak raka je od 22.06 do 23.07) SELECT * FROM klijent WHERE (SUBSTRING(jmbgKlijent (SUBSTRING(jmbgKlijent,3,2)='06' ,3,2)='06' AND SUBSTRING(jmbgKlijent SUBSTRING( jmbgKlijent,1,2)>='22') ,1,2)>='22') OR (SUBSTRING(jmbgKlijent (SUBSTRING(jmbgKlijent,3,2)='07' ,3,2)='07' AND SUBSTRING(jmbgKlijent SUBSTRING( jmbgKlijent,1,2)<='23'); ,1,2)<='23');

33 zapisa

15

Kvazi datumska funkcija primjeri String - funkcija


Ispisati ime i prezime te datum u obliku dd.mm.gg. dd.mm.gg. iz tablice klijent za zapise koji su roeni u horoskopskom znaku raka. (Horoskopski znak raka je od 22.06 do 23.07) SELECT imeKlijent imeKlijent, ,prezimeKLijent, prezimeKLijent, CONCAT(SUBSTRING(jmbgKlijent CONCAT(SUBSTRING(jmbgKlijent,1,2),'.', ,1,2),'.', SUBSTRING(jmbgKlijent SUBSTRING( jmbgKlijent,3,2),'.',SUBSTRING( ,3,2),'.',SUBSTRING(jmbgKlijent jmbgKlijent,5,2)) ,5,2)) FROM klijent WHERE (SUBSTRING(jmbgKlijent (SUBSTRING( jmbgKlijent,3,2)='06' ,3,2)='06' AND SUBSTRING(jmbgKlijent SUBSTRING(jmbgKlijent,1,2)>='22') ,1,2)>='22') OR (SUBSTRING(jmbgKlijent (SUBSTRING( jmbgKlijent,3,2)='07' ,3,2)='07' AND SUBSTRING(jmbgKlijent SUBSTRING(jmbgKlijent,1,2)<='23'); ,1,2)<='23');

33 zapisa

16

NULL vrijednosti
NULL vrijednost predstavlja nepoznatu ili nepostojeu vrijednost podatka Originalno zapis u tablici moe sadravati NULL vrijednost Ako elimo unijeti neki novi zapis ili promijeniti zapis u tablici za neki atribut koji ne mora nuno sadravati vrijednost za taj atribut ako ne unesemo vrijednost on moe poprimiti NULL vrijednost. NULL vrijednosti se tretiraju drugaije od ostalih vrijednosti Nije mogue usporeivati NULL sa 0. To nisu iste vrijednosti.

17

NULL vrijednosti
NULL vrijednosti se ne mogu usporeivati koristei uobiajene znakove za usporedbu kao to su <, >, =, <> NULL vrijednosti se usporeuju koristei opcije IS NULL ako elimo provjeriti da li je vrijednost jednaka NULL ili opciju IS NOT NULL ako nije

18

NULL vrijednosti - unos


Unijeti zapis u tablicu upanija tako da za ifru unesemo vrijednost 22, a da naziv upanije poprimi NULL vrijednost. INSERT INTO zupanija VALUES(22,NULL); INSERT INTO zupanija(sifzupanija) VALUES (22); INSERT INTO zupanija SET sifzupanija=22; sifzupanija=22;

19

NULL vrijednosti - promjena


Postaviti NULL vrijednost za naziv upanije sa ifrom 1. UPDATE zupanija SET nazivZupanija=NULL nazivZupanija=NULL WHERE sifZupanija sifZupanija=1; =1;

20

10

NULL vrijednosti - dohvat


Kako se radi sa NULL vrijednostima UPIT: SELECT * FROM klijent WHERE jmbgKlijent IS NULL; Nikako ne: SELECT * FROM klijent WHERE jmbgKlijent = NULL; Odnosno ako nas zanimaju svi koji nisu NULL SELECT * FROM klijent WHERE jmbgKlijent IS NOT NULL; Nikako ne: SELECT * FROM klijent WHERE jmbgKlijent != NULL;

21

NULL vrijednosti - dohvat


Treba paziti kad atributi sadre NULL vrijednosti. Ukoliko elimo napraviti neku matematiku operaciju +,*,/,- nad dva atributa od kojih jedan sadri NULL vrijednost rezultat te operacije e biti NULL. Npr Ako u tablici radnik za vrijednost atributa IznosOsnovice je postavljena NULL vrijednost ukoliko bi pomnoili koeficijent sa osnovicom dobili bi NULL vrijednost kao rezultat. Postaviti iznos osnovice na NULL za zapise u tablici radnik kod kojih je koeficijent plae manji od 0.6. UPDATE radnik SET IznosOsnovice=NULL WHERE KoefPlaca<0.6;

22

11

NULL vrijednosti - dohvat


Ispisati ime, prezime radnika, umnoak koeficijenta plae i osnovice te koeficijent plae za radnike kojima je koeficijent plae izmeu 0.4 i 0.7. SELECT imeRadnik,prezimeRadnik,KoefPlaca*IznosOsnovice FROM radnik WHERE KoefPlaca BETWEEN 0.4 AND 0.7;

15 zapisa

23

NULL vrijednosti - dohvat


n-torke ije vrijednosti atributa uvrtene u uvjet za dohvat daju rezultat ISTINA ulaze u rezultat SELECT naredbe. n-torke ije vrijednosti atributa uvrtene u uvjet za dohvat daju rezultat LA ili NULL ne ulaze u rezultat SELECT naredbe Isto vrijedi i za UPDATE i DELETE naredbe SELECT COUNT(*) FROM radnik; 98 zapisa SELECT COUNT(*) FROM radnik WHERE IznosOsnovice IS NULL; 20 zapisa SELECT COUNT(*) FROM radnik WHERE IznosOsnovice*KoefPlaca>100; 78 zapisa

24

12

NULL vrijednosti i agregatne funkcije


COUNT (*) - broji n-torke i pojava NULL vrijednosti ne utjee na rezultat CONUT (x) - broji n-torke gdje je atribut x razliit od NULL SUM (x) AVG (x) MAX (x) MIN (x) SELECT COUNT(*) FROM radnik; 98 zapisa SELECT COUNT(IznosOsnovice) FROM radnik; 78 zapisa

25

NULL vrijednosti i agregatne funkcije


SELECT SUM(IznosOsnovice) FROM radnik;

SELECT SUM(IznosOsnovice) FROM radnik WHERE KoefPlaca<0.6;

26

13

NULL vrijednosti primjer


Ispisati prezime radnika te umnoak koeficijenta plae i iznosa osnovice za sve radnike kod koji je koeficijent manji od 0.6. SELECT prezimeRadnik,koefPlaca*IznosOsnovice FROM radnik WHERE KoefPlaca<0.6;

20 zapisa

27

NULL vrijednosti primjer


Ispisati prezime radnika te umnoak koeficijenta plae i iznosa osnovice za sve radnike kod koji je koeficijent manji od 0.6. Ako je iznos osnovice NULL vrijednost neka je umnoak jednak 0. SELECT prezimeRadnik,koefPlaca*(IFNULL(IznosOsnovice,0)) FROM radnik WHERE KoefPlaca<0.6;;

20 zapisa

28

14

NULL vrijednosti primjer


Ispisati prezime radnika te umnoak koeficijenta plae i iznosa osnovice za sve radnike kod koji je koeficijent manji od 0.6. Ako je iznos osnovice NULL pribrojiti joj 2200. SELECT prezimeRadnik,koefPlaca*(2200+IFNULL(IznosOsnovice,0)) FROM radnik WHERE KoefPlaca<0.6;;

20 zapisa

29

15

You might also like