Professional Documents
Culture Documents
BP SQL 1 2009 2010v2
BP SQL 1 2009 2010v2
Baze podataka
2. pred SQL I dio
Objanjenja sintakse
Kad god je bilo mogue, sintaksa SQL naredbe je opisana na najjednostavniji mogui nain kljune su rijei napisane velikim slovima "varijabilni" dio naredbe otisnut je kosim slovima Primjer: DROP DATABASE databaseName
Objanjenja sintakse
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification ...] Kada iza varijable stoji oznaka "..." tada je kasnije opisano to moe stajati na tom mjestu Parametri unutar {} su obvezni Parametri unutar [ ] su opcionalni Znak "|" zamjenjuje rije "ili" create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
Vrijednosti -stringovi
String je niz znakova omeen jednostrukim navodnicima ' ' ili dvostrukim navodnicima " " Uz string je uvijek mogue opisati kojeg je znakovnog tipa i kolotacije [_charset_name]'string' [COLLATE collation_name] Postoji mogunost koritenja slijedeih kontrolnih znakova (escape (escape character) character) \n \' \"" \% \b \t \\ \_ SELECT "hello "hello", ", hello hello, , hello hello, , "\"hello hello"; "; hello 'hello hello'' '' ''hello hello'' '' " "hello hello
Vrijednosti -brojevi
Standardni brojevi se piu normalno sa predznakom - ili bez predznaka za + Decimalni brojevi se mogu pisati sa tokom sa ili bez potencije: 1.96e+10 Heksadecimalne vrijednosti zapoinju sa 0x SELECT 0x41 ispisuje 'A' Boolean vrijednosti su TRUE ili true koji iznosi 1 i FALSE ili false koji iznosi 0 Binarne vrijednosti piu se kao b'vrijednost' ili 0bvrijednost SELECT b'1000001' ispisuje 'A' Nepostojea vrijednost se pie kao NULL (uvijek veliko!)
Svaki objekat moe biti dohvaen direktno ili preko drugog objekta
puna staza navodi se kada postoje vie objekata istog imena (npr klijent i radnik imaju vjerojatno isti atribut ime) col_name table_name.col_name database_name.table_name.col_name
Prema SQL standardu svi nazivi objekata bi se trebali pisati malim slovima UNIX ima datoteni sustav koji razlikuje mala i velika slova pa tamo treba pripaziti da se uvijek koristi jednako ime u odnosu na mala/velika slova
9
10
11
Vrijednosti -varijable
Korisnike varijable uvijek poinju sa @ i mogu sadravati sve prirodne zankove iz latin1 seta te znakove . _ i $ Za definiranje korisnike varijable koristimo naredbu SET SET @var_name := expr [, @var_name := expr] ... expr moe biti broj, decimalni broj, string ili NULL Nije poeljno koristiti = umjesto := jer kod pojedinih sintaksi = znai usporedbu, a ne pridruivanje Komentari # i -- komentira do kraja linije /* */ komentar kroz vie linija
12
Podrka znakovima
Character set (kodiranje znakova) - oznaava koji ASCII kod zamjenjuje koje slovo latin2 (iso8859(iso8859-2) - ISO standard za nae znakove cp1250 - Microsoft standard za nae znakove latin1 - obino osnovni standard Collation (kolotacija) - nain usporedbe znakova , odnosno sortiranja zakova po redu, ne po ASCII vrijednostima latin1_swedish_ci - obino osnovni standard cp1250_croatian_ci - po MS standardu latin2_general_ci - po ISO standardu Tablica za laboratorijske vjebe ide po cp1250 i cp1250_croatian_ci standardu Obje stvari su vane da budu definirane u mogunostima posluitelja Raspoloive naine kodiranja znakova SHOW CHARACTER SET Raspoloite kolotacije SHOW COLLATION Kolotacije i kodiranje znakova se obino definiraju kod stvaranja tablice Naknadno postavljanje kodiranja znakova SET CHARACTER SET charset_name Obino se kod spajanja na bazu definira character set (vidi SQLyog za labose)
13
16
17
18
Operatori
BETWEEN ... AND ... <=> =,>=,>,<,<=, != ili <> GREATEST() IN INTERVAL() IS NULL IS ISNULL() LEAST() LIKE NOT BETWEEN ... AND ... NOT IN NOT LIKE SOUNDS LIKE(v4.1.0) AND ili &&, OR ili || NOT ili ! RLIKE ili REGEXP CASE i IF Da li unutar zadanih okvira Usporedba sigurna u odnosu na NULL Vraa vei argument Da li je unutar okbira Vraa indeks elementa koji je manji od prvog argumenta Da li je NULL vrijednost Da li je true ili false za bool tip Da li je argument NULL vrijednost Vrati najmanji argument Jednsotavna usporedba stringova Negacija BETWEEN ... AND.... Negacija IN Ne zadovoljava jednostavnu usporedbu stringova Usporeivanje zvukova Logiko povezivanje Negacija Sloenija provjera da li je niz sadran u nizu Ostavimo za kasnije
19
10
21
22
11
12
25
13
Ostale funkcije
Specifike funkcije za enkripciju (SHA1, AES, DES) Funkcije za komunikaciju sa posluiteljem (CURRENT_USER; CONNECT_ID) Funkcije za rad sa bitovima Funkcije za zakljuavanje .... baze podataka II uglavnom specifine funkcije vezane za samu implementaciju posluitelja i baze
27
14
29
15
Primjer upita
Ispisati prva dva slova svih imena klijenata SELECT LEFT(imeKlijent,2) FROM klijent;
Ispisati zadnja dva slova svih imena klijenata SELECT RIGHT(imeKlijent,2) FROM klijent;
31
Projekcije - uvjeti
Vratimo se na projekcije , uvodimo kljunu rije WHERE
Ispiimo sve zapise iz tablice klijent imena 'Davor' SELECT * FROM klijent WHERE imeKlijent imeKlijent='Davor' ='Davor'
32
16
Projekcije - uvjeti
ispiimo sve zapise iz tablice mjesto iji je potanski broj 10000
SELECT * FROM mjesto WHERE pbrMjesto pbrMjesto=10000 =10000
33
Projekcije - uvjeti
Ispisati sve zapise iz mjesta iji je potanski broj izmeu 10000 i 20000
SELECT * FROM mjesto WHERE pbrMjesto pbrMjesto>10000 >10000 AND pbrMjesto<20000 pbrMjesto<20000 ili SELECT * FROM mjesto WHERE pbrMjesto BETWEEN 10001 AND 19999
34
17
Projekcije - uvjeti
Ispisati sve zapise iz tablice mjesto za koje ne vrijedi da je potanski broj izmeu 10000 i 20000
SELECT * FROM mjesto WHERE NOT(pbrMjesto NOT(pbrMjesto>10000 >10000 AND pbrMjesto<20000) pbrMjesto <20000) ili SELECT * FROM mjesto WHERE pbrMjesto NOT BETWEEN 10001 AND 19999
35
Projekcije - uvjeti
Ispisati sve zapise iz tablice mjesto za koje vrijedi da je potanski broj 10000 ili 10020 ili 20000
SELECT * FROM mjesto WHERE pbrMjesto pbrMjesto=10000 =10000 OR pbrMjesto=10020 pbrMjesto=10020 OR pbrMjesto=20000 pbrMjesto =20000 ili SELECT * FROM mjesto WHERE pbrMjesto IN(10000,10020,20000)
36
18
Projekcije - uvjeti
Ispisati sve zapise iz tablice radnik koji sadre niz 'do' u svom prezimenu SELECT * FROM radnik WHERE prezimeRadnik LIKE '%do%' ili SELECT * FROM radnik WHERE prezimeRadnik REGEXP 'do'
37
Projekcije - uvjeti
Ispisati sve zapise iz tablice radnik ije ime poinje sa Pe SELECT * FROM radnik WHERE prezimeRadnik LIKE ''Pe Pe%' %' ili SELECT * FROM radnik WHERE prezimeRadnik REGEXP '^Pe Pe'' ili SELECT * FROM radnik WHERE SUBSTRING(prezimeRadnik SUBSTRING(prezimeRadnik,1,2)=' ,1,2)='Pe Pe'' ili SELECT * FROM radnik WHERE LEFT(prezimeRadnik LEFT(prezimeRadnik,2)=' ,2)='Pe Pe''
38
19
39
40
20
41
42
21
43
44
22
45
Projekcije
Izvucimo satiKvar i ispiimo satiKvara uvean za 3 za sve kvarove SELECT satiKvar, satiKvar+3 FROM kvar;
46
23
47
48
24
49
50
25
51
52
26