Download pdf - SQL-vjezbe2

Transcript
  • 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/