Author
peka76
View
223
Download
1
Embed Size (px)
7/22/2019 SQL-vjezbe2
1/26
Baze podataka (vjebe)
SQL - kreiranje i modificiranje tablica
Sveucilite u ZagrebuPMF Matematicki odsjek
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
2/26
Brisanje tablica
Za ove vjebe umjesto demo baze koristit cete svoju bazu
ciji naziv je jednak Vaem korisnickom imenu za rad s
bazom.
Ako Vaa baza nije prazna (provjerite sa SHOW TABLES;),
obriite sve postojece tablice pomocu naredbe
DROP TABLE naziv_tablice;
http://find/7/22/2019 SQL-vjezbe2
3/26
Kreiranje tablica
Tablice istovjetne onima iz demo baze kreiramo pomocu
sljedecih naredbi:
CREATE TABLE STUDENT
(JMBAG NUMERIC(10) UNSIGNED NOT NULL,
PREZIMES CHAR(20),
IMES CHAR(20),
DATR DATE,
GODINA ENUM(1,2,3,4,5),
PRIMARY KEY(JMBAG));
CREATE TABLE NASTAVNIK
(OIB NUMERIC(11) UNSIGNED NOT NULL,
PREZIMEN CHAR(20),
IMEN CHAR(20),
BRSOBE NUMERIC(3) UNSIGNED,
PLACA NUMERIC(5) UNSIGNED,PRIMARY KEY(OIB));
http://find/http://goback/7/22/2019 SQL-vjezbe2
4/26
Kreiranje tablica
CREATE TABLE PREDMET
(SIFRA NUMERIC(5) UNSIGNED NOT NULL,
NASLOV CHAR(80),
OIB NUMERIC(11) UNSIGNED,
SEMESTAR ENUM(Z,L),
ECTS NUMERIC(2) UNSIGNED,PRIMARY KEY(SIFRA));
CREATE TABLE UPISAO
(JMBAG NUMERIC(10) UNSIGNED NOT NULL,
SIFRA NUMERIC(5) UNSIGNED NOT NULL,DATU DATE,
OCJENA ENUM(1,2,3,4,5),
PRIMARY KEY(JMBAG,SIFRA));
Detaljna dokumentacijao CREATE TABLEnaredbi.
http://dev.mysql.com/doc/refman/5.0/en/create-table.htmlhttp://dev.mysql.com/doc/refman/5.0/en/create-table.htmlhttp://find/7/22/2019 SQL-vjezbe2
5/26
Numericki tipovi podatakaCjelobrojni tipovi (eng. integer types)
Tip Velicina (byte)TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT 4
BIGINT 8
Svi cjelobrojni tipovi mogu biti s predznakom (eng.signed) ili
bez predznaka (eng.unsigned). Cjelobrojni tip velicine nbitova
ima raspon vrijednosti od 2n1
do2
n1
1
u varijanti spredznakom, a od 0do 2n 1 u varijanti bez predznaka.
http://find/http://goback/7/22/2019 SQL-vjezbe2
6/26
Numericki tipovi podatakaFloating point tipovi
Tip Velicina (byte)FLOAT 4
DOUBLE 8
Ovo su standardni IEEE floating point tipovi (predznak,
eksponent, mantisa).
http://find/7/22/2019 SQL-vjezbe2
7/26
Numericki tipovi podatakaFixed point tipovi
DECIMAL(m, n)
Numericki tipcije su doputene vrijednosti brojevi sa ne
vie od mdekadskih znamenaka, odcega je ndecimala.
m
preciznost (eng.precision)n promjena velicine (eng.scale)
Ogranicenje: m 65
http://find/7/22/2019 SQL-vjezbe2
8/26
Numericki tipovi podatakaPolje bitova (eng.bit value type)
BIT(m)
Klasicno polje bitova duljine m.
Jedino ogranicenje je 1 m 64.
http://find/7/22/2019 SQL-vjezbe2
9/26
Datumsko-vremenski tipovi
Tip DATE
Oblik vrijednosti: YYYY-MM-DD
Raspon vrijednosti: od 1000-01-01do 9999-12-31
http://find/7/22/2019 SQL-vjezbe2
10/26
Datumsko-vremenski tipovi
Tip DATE
Oblik vrijednosti: YYYY-MM-DD
Raspon vrijednosti: od 1000-01-01do 9999-12-31
Tip TIME
Oblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59do 838:59:59
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
11/26
Datumsko-vremenski tipovi
Tip DATE
Oblik vrijednosti: YYYY-MM-DD
Raspon vrijednosti: od 1000-01-01do 9999-12-31
Tip TIME
Oblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00do9999-12-31 23:59:59
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
12/26
Datumsko-vremenski tipovi
Tip DATE
Oblik vrijednosti: YYYY-MM-DD
Raspon vrijednosti: od 1000-01-01do 9999-12-31
Tip TIME
Oblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00do9999-12-31 23:59:59
Tip TIMESTAMP
32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01do2038-01-19 03:14:07
http://find/7/22/2019 SQL-vjezbe2
13/26
Datumsko-vremenski tipovi
Tip DATE
Oblik vrijednosti: YYYY-MM-DD
Raspon vrijednosti: od 1000-01-01do 9999-12-31
Tip TIME
Oblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00do9999-12-31 23:59:59
Tip TIMESTAMP
32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01do2038-01-19 03:14:07
Tip YEAR
Tip za zapis godine velicine 1 byte.
Raspon vrijednosti: od 1901do 2155
http://find/7/22/2019 SQL-vjezbe2
14/26
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 255
String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
Z k i i i
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
15/26
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 255
String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
VARCHAR(n), ogranicenje: n 255
String duljine ne vie od n.Zapisuje se pomocu prefiksa u koji je zapisana duljinastringa nakon koje slijede podaci.
Z k i ti i
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
16/26
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 255
String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
VARCHAR(n), ogranicenje: n 255
String duljine ne vie od n.Zapisuje se pomocu prefiksa u koji je zapisana duljinastringa nakon koje slijede podaci.
BINARY(n)i VARBINARY(n)
Kao CHARi VARCHARsamo to se podaci tretiraju kaonizovi byteova, pa se npr. sortiranje se vri iskljucivo ponumerickoj vrijednosti.
Z k i ti i
http://find/7/22/2019 SQL-vjezbe2
17/26
Znakovni tipovitipovi za dulje stringove
Tip (tekstualni) Tip (binarni) Maksimalna duljinaTINYTEXT TINYBLOB 28
TEXT BLOB 216
MEDIUMTEXT MEDIUMBLOB 224
LONGTEXT LONGBLOB 232
Z k i ti i
http://find/7/22/2019 SQL-vjezbe2
18/26
Znakovni tipovienumeracije i skupovi
ENUM(v1,...,vn), ogranicenje: n 65535 = 216 1
Enumeracija (gotovo) analogna enumeraciji u C-u.
Znakovni tipovi
http://find/7/22/2019 SQL-vjezbe2
19/26
Znakovni tipovienumeracije i skupovi
ENUM(v1,...,vn), ogranicenje: n 65535 = 216 1
Enumeracija (gotovo) analogna enumeraciji u C-u.
SET(v1,...,vn), ogranicenje: n 64
Atributi ovog tipa za vrijednost mogu poprimiti bilo kojipodskup skupa {v1, . . . , vn}.
Ucitavanje vecih kolicina podataka u tablicu
http://find/7/22/2019 SQL-vjezbe2
20/26
Ucitavanje vecih kolicina podataka u tablicu
Iz datoteke:
LOAD DATA INFILE datoteka INTO TABLE tablica[CHARACTER SET encoding]
[FIELDS [TERMINATED BY znakovi]
[ENCLOSED BY znak]]
[LINES [STARTING BY znakovi]
[TERMINATED BY znakovi]]
Ucitavanje vecih kolicina podataka u tablicu
http://find/7/22/2019 SQL-vjezbe2
21/26
Ucitavanje vecih kolicina podataka u tablicu
Iz datoteke:
LOAD DATA INFILE datoteka INTO TABLE tablica[CHARACTER SET encoding]
[FIELDS [TERMINATED BY znakovi]
[ENCLOSED BY znak]]
[LINES [STARTING BY znakovi]
[TERMINATED BY znakovi]]
Iz drugih tablica:
INSERT INTO tablica SELECT ...
Dodavanje manjeg broja redaka u tablicu
http://find/7/22/2019 SQL-vjezbe2
22/26
Dodavanje manjeg broja redaka u tablicu
Samo jedan redak:
INSERT INTO tablica SET atr1={izraz | DEFAULT}, ...
Dodavanje manjeg broja redaka u tablicu
http://find/7/22/2019 SQL-vjezbe2
23/26
Dodavanje manjeg broja redaka u tablicu
Samo jedan redak:
INSERT INTO tablica SET atr1={izraz | DEFAULT}, ...
Jedan ili vie redaka:
INSERT INTO tablica [(atr,...)]
{VALUE|VALUES} ({izraz | DEFAULT},...), (...), ...
Brisanje redaka iz tablice
http://goforward/http://find/http://goback/7/22/2019 SQL-vjezbe2
24/26
Brisanje redaka iz tablice
DELETE FROM tablica [WHERE ...]
WHEREdio je isti kao kod SELECTnaredbe.
Modificiranje redaka u tablici
http://find/7/22/2019 SQL-vjezbe2
25/26
Modificiranje redaka u tablici
UPDATE tablica
SET atr1={expr1|DEFAULT} [,atr2={expr2|DEFAULT}]...
[WHERE ...]
WHEREdio je isti kao kod SELECTnaredbe.
Indeksi
http://find/7/22/2019 SQL-vjezbe2
26/26
Indeksi
Indeksi slue za ubrzavanje pretraivanja unutar baze
podataka. Buduci da indeksi zauzimaju dosta (prostornih)
resursa treba ih koristiti samo na atributima po kojima sepretrage cesto vre.
CREATE [UNIQUE] INDEX naziv_indexa
ON tablica (atr,...)
http://find/