Upload
lyquynh
View
235
Download
6
Embed Size (px)
Citation preview
Baze podataka (vježbe)SQL - kreiranje i modificiranje tablica
Sveucilište u ZagrebuPMF – Matematicki odsjek
Brisanje tablica
Za ove vježbe umjesto demo baze koristit cete svoju bazuciji naziv je jednak Vašem korisnickom imenu za rad sbazom.Ako Vaša baza nije prazna (provjerite sa SHOW TABLES;),obrišite sve postojece tablice pomocu naredbe
DROP TABLE naziv_tablice;
Kreiranje tablica
Tablice istovjetne onima iz demo baze kreiramo pomocusljedecih 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));
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 dokumentacija o CREATE TABLE naredbi.
Numericki tipovi podatakaCjelobrojni tipovi (eng. integer types)
Tip Velicina (byte)TINYINT 1SMALLINT 2MEDIUMINT 3
INT 4BIGINT 8
Svi cjelobrojni tipovi mogu biti s predznakom (eng. signed) ilibez predznaka (eng. unsigned). Cjelobrojni tip velicine n bitovaima raspon vrijednosti od −2n−1 do 2n−1 − 1 u varijanti spredznakom, a od 0 do 2n − 1 u varijanti bez predznaka.
Numericki tipovi podatakaFloating point tipovi
Tip Velicina (byte)FLOAT 4DOUBLE 8
Ovo su standardni IEEE floating point tipovi (predznak,eksponent, mantisa).
Numericki tipovi podatakaFixed point tipovi
DECIMAL(m, n)
Numericki tip cije su dopuštene vrijednosti brojevi sa neviše od m dekadskih znamenaka, od cega je n decimala.m – preciznost (eng. precision)n – promjena velicine (eng. scale)Ogranicenje: m 6 65
Numericki tipovi podatakaPolje bitova (eng. bit value type)
BIT(m)
Klasicno polje bitova duljine m.Jedino ogranicenje je 1 6 m 6 64.
Datumsko-vremenski tipovi
Tip DATEOblik vrijednosti: YYYY-MM-DDRaspon vrijednosti: od 1000-01-01 do 9999-12-31
Tip TIMEOblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59 do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00 do9999-12-31 23:59:59
Tip TIMESTAMP32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01 do2038-01-19 03:14:07
Tip YEARTip za zapis godine velicine 1 byte.Raspon vrijednosti: od 1901 do 2155
Datumsko-vremenski tipovi
Tip DATEOblik vrijednosti: YYYY-MM-DDRaspon vrijednosti: od 1000-01-01 do 9999-12-31
Tip TIMEOblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59 do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00 do9999-12-31 23:59:59
Tip TIMESTAMP32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01 do2038-01-19 03:14:07
Tip YEARTip za zapis godine velicine 1 byte.Raspon vrijednosti: od 1901 do 2155
Datumsko-vremenski tipovi
Tip DATEOblik vrijednosti: YYYY-MM-DDRaspon vrijednosti: od 1000-01-01 do 9999-12-31
Tip TIMEOblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59 do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00 do9999-12-31 23:59:59
Tip TIMESTAMP32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01 do2038-01-19 03:14:07
Tip YEARTip za zapis godine velicine 1 byte.Raspon vrijednosti: od 1901 do 2155
Datumsko-vremenski tipovi
Tip DATEOblik vrijednosti: YYYY-MM-DDRaspon vrijednosti: od 1000-01-01 do 9999-12-31
Tip TIMEOblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59 do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00 do9999-12-31 23:59:59
Tip TIMESTAMP32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01 do2038-01-19 03:14:07
Tip YEARTip za zapis godine velicine 1 byte.Raspon vrijednosti: od 1901 do 2155
Datumsko-vremenski tipovi
Tip DATEOblik vrijednosti: YYYY-MM-DDRaspon vrijednosti: od 1000-01-01 do 9999-12-31
Tip TIMEOblik vrijednosti: HHH:MM:SSRaspon vrijednosti: od -838:59:59 do 838:59:59
Tip DATETIMEOblik vrijednosti: YYYY-MM-DD HH:MM:SSRaspon vrijednosti: od 1000-01-01 00:00:00 do9999-12-31 23:59:59
Tip TIMESTAMP32-bitni zapis broja sekundi od epohe.Raspon vrijednosti: od 1970-01-01 00:00:01 do2038-01-19 03:14:07
Tip YEARTip za zapis godine velicine 1 byte.Raspon vrijednosti: od 1901 do 2155
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 6 255String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
VARCHAR(n), ogranicenje: n 6 255String duljine ne više od n.Zapisuje se pomocu prefiksa u koji je zapisana duljinastringa nakon koje slijede podaci.
BINARY(n) i VARBINARY(n)Kao CHAR i VARCHAR samo što se podaci tretiraju kaonizovi byteova, pa se npr. sortiranje se vrši iskljucivo ponumerickoj vrijednosti.
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 6 255String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
VARCHAR(n), ogranicenje: n 6 255String duljine ne više od n.Zapisuje se pomocu prefiksa u koji je zapisana duljinastringa nakon koje slijede podaci.
BINARY(n) i VARBINARY(n)Kao CHAR i VARCHAR samo što se podaci tretiraju kaonizovi byteova, pa se npr. sortiranje se vrši iskljucivo ponumerickoj vrijednosti.
Znakovni tipovitipovi za krace stringove
CHAR(n), ogranicenje: n 6 255String duljine n, po potrebi nadopunjen razmacima donavedene duljine.Pri dohvacanju vrijednosti razmaci na kraju stringa seignoriraju.
VARCHAR(n), ogranicenje: n 6 255String duljine ne više od n.Zapisuje se pomocu prefiksa u koji je zapisana duljinastringa nakon koje slijede podaci.
BINARY(n) i VARBINARY(n)Kao CHAR i VARCHAR samo što se podaci tretiraju kaonizovi byteova, pa se npr. sortiranje se vrši iskljucivo ponumerickoj vrijednosti.
Znakovni tipovitipovi za dulje stringove
Tip (tekstualni) Tip (binarni) Maksimalna duljinaTINYTEXT TINYBLOB 28
TEXT BLOB 216
MEDIUMTEXT MEDIUMBLOB 224
LONGTEXT LONGBLOB 232
Znakovni tipovienumeracije i skupovi
ENUM(v1,...,vn), ogranicenje: n 6 65535 = 216 − 1Enumeracija (gotovo) analogna enumeraciji u C-u.
SET(v1,...,vn), ogranicenje: n 6 64Atributi ovog tipa za vrijednost mogu poprimiti bilo kojipodskup skupa {v1, . . . , vn}.
Znakovni tipovienumeracije i skupovi
ENUM(v1,...,vn), ogranicenje: n 6 65535 = 216 − 1Enumeracija (gotovo) analogna enumeraciji u C-u.
SET(v1,...,vn), ogranicenje: n 6 64Atributi ovog tipa za vrijednost mogu poprimiti bilo kojipodskup skupa {v1, . . . , vn}.
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 ...
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
Samo jedan redak:
INSERT INTO tablica SET atr1={izraz | DEFAULT}, ...
Jedan ili više redaka:INSERT INTO tablica [(atr,...)]{VALUE|VALUES} ({izraz | DEFAULT},...), (...), ...
Dodavanje manjeg broja redaka u tablicu
Samo jedan redak:
INSERT INTO tablica SET atr1={izraz | DEFAULT}, ...
Jedan ili više redaka:INSERT INTO tablica [(atr,...)]{VALUE|VALUES} ({izraz | DEFAULT},...), (...), ...
Brisanje redaka iz tablice
DELETE FROM tablica [WHERE ...]
WHERE dio je isti kao kod SELECT naredbe.
Modificiranje redaka u tablici
UPDATE tablicaSET atr1={expr1|DEFAULT} [,atr2={expr2|DEFAULT}]...[WHERE ...]
WHERE dio je isti kao kod SELECT naredbe.
Indeksi
Indeksi služe za ubrzavanje pretraživanja unutar bazepodataka. Buduci da indeksi zauzimaju dosta (prostornih)resursa treba ih koristiti samo na atributima po kojima sepretrage cesto vrše.
CREATE [UNIQUE] INDEX naziv_indexaON tablica (atr,...)