30
1 Vježba 4: MySQL vježbe 1. Na C disku vašeg računala pronađite dolje navedene mape: a. xampp b. MySQL Workbench 2. Prvo otvorite xampp folder i pronađite xampp-control.exe, pokrenite control panel, te startajte Modul MySQL.

Vježba 4: MySQL vježbe

Embed Size (px)

Citation preview

Page 1: Vježba 4: MySQL vježbe

1

Vježba 4: MySQL vježbe

1. Na C disku vašeg računala pronađite dolje navedene mape:

a. xampp

b. MySQL Workbench

2. Prvo otvorite xampp folder i pronađite xampp-control.exe, pokrenite control panel, te startajte

Modul MySQL.

Page 2: Vježba 4: MySQL vježbe

2

3. Nakon toga otvorite MySQL Workbench, pronađite MySQLWorkbench.exe, te ga pokrenite.

4. Nakon što ste pokrenuli MYSQL Workbench, kreirajte novu MySQL konekciju.

5. Pod Connection Name upišite MySQLEFOS, te zatim kliknite na Store in Vault …, te pod password

upišite lozinku koju vam asistent da.

Page 3: Vježba 4: MySQL vježbe

3

6. Zatim kliknte na OK, Test Connection kako bi potvrdili da je konekcija ispravna, te na kraju kliknete

na završni OK.

7. Dva puta kliknite na novokreiranu konekciju.

8. Nakon toga bi vam se trebao prikazati SQL editor u kojemu će se kreirati baza i tablice.

9. Prvo ćemo provjeriti postoji li baza podataka s imenom efosexample1, te ako postoji neka se

obriše:

Page 4: Vježba 4: MySQL vježbe

4

10. Nakon toga će se kreirati baza podataka s nazivom efosexample1:

11. Zatim će se početi koristiti kako bi se u njoj mogle kreirati tablice:

12. Za početak će se kreirati dvije tablice:

a. my_contacts

b. interests

13. Isto će se prvo postaviti provjera ako postoji tablica neka se obriše.

14. Tablica my_contacts sadržavati će sljedeća polja:

a. Naziv polja: contact_id

i. Tip polja: cijeli broj

ii. Ne smije biti prazan

iii. Autogenerirani broj

iv. Primarni ključ

b. Naziv polja: last_name

i. Tip polja: razni znakovi

ii. Veličina polja: 30

iii. Smije biti prazan

c. Naziv polja: first_name

i. Tip polja: razni znakovi

ii. Veličina polja: 20

iii. Smije biti prazan

d. Naziv polja: email

i. Tip polja: razni znakovi

ii. Veličina polja: 50

iii. Smije biti prazan

e. Naziv polja: gender

Page 5: Vježba 4: MySQL vježbe

5

i. Tip polja: Znak

ii. Veličina polja: 1

iii. Smije biti prazan

f. Naziv polja: birthday

i. Tip polja: datum

ii. Smije biti prazan

g. Naziv polja: profession

i. Tip polja: razni znakovi

ii. Veličina polja: 50

iii. Smije biti prazan

h. Naziv polja: location

i. Tip polja: razni znakovi

ii. Veličina polja: 50

iii. Smije biti prazan

i. Naziv polja: contact_status

i. Tip polja: razni znakovi

ii. Veličina polja: 20

iii. Smije biti prazan

j. Naziv polja: interests

i. Tip polja: razni znakovi

ii. Veličina polja: 100

iii. Smije biti prazan

k. Naziv polja: seeking

i. Tip polja: razni znakovi

ii. Veličina polja: 50

iii. Smije biti prazan

Page 6: Vježba 4: MySQL vježbe

6

15. Kreirajte nakon toga tablicu interests (slično kao i prethodnu tablicu).

16. Tablica interests sadržavati će sljedeća polja:

a. Naziv polja: interest_id

i. Tip polja: cijeli broj

ii. Ne smije biti prazan

iii. Autogenerirani broj

iv. Primarni ključ

b. Naziv polja: interest

i. Tip polja: razni znakovi

ii. Veličina polja: 50

iii. Smije biti prazan

17. Nakon kreiranja druge tablice, u tablicu my_contacts će se spremiti sljedeće vrijednosti:

a. last_name - 'Anderson'

b. first_name - 'Jillian'

c. email - 'jill_anderson@ \nbreakneckpizza.com'

d. gender - 'F'

Page 7: Vježba 4: MySQL vježbe

7

e. birthday - '1980-09-05'

f. profession - 'Technical Writer'

g. location - 'Palo Alto, CA'

h. contact_status - 'single'

i. interests - 'kayaking, reptiles'

j. seeking - 'relationship, friends'

18. Nakon toga dodajte još ovih 15 redova u tablicu my_contacts (možete c/p):

INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Kenton','Leo','[email protected]','M','1974-01-10','Manager','San Francisco, CA','divorced','women','women to date'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('McGavin','Darrin',' [email protected]','M','1966-01-23','Cruise Ship Captain','San Diego, CA','single','sailing, fishing, yachting','women for casual relationships'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Franklin','Joe','[email protected]','M','1977-04-28','Software Sales','Dallas, TX','married','fishing, drinking','new job'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Hamilton','Jamie','[email protected]','F','1964-09-10','System Administrator','Princeton, NJ','married','RPG','nothing'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES

Page 8: Vježba 4: MySQL vježbe

8

('Chevrolet','Maurice','[email protected]','M','1962-07-01','Bookshop Owner','Mountain View, CA','married','collecting books, scuba diving','friends'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Kroger','Renee','[email protected]','F','1976-12-03','Unemployed','San Francisco, CA','divorced','cooking','employment'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Mendoza','Angelina','[email protected]','F','1979-08-19','UNIX Sysadmin','San Francisco, CA','married','acting, dancing','new job'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Murphy','Donald','[email protected]','M','1967-01-23','Computer Programmer','New York City, NY','committed relationsh','RPG, anime','friends'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Spatner','John','[email protected]','M','1963-04-18','Salesman','Woodstock, NY','married','poetry, screenwriting','nothing'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Toth','Anne','[email protected]','F','1969-11-18', 'Artist','San Fran, CA', 'married','poetry, screenwriting','nothing'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Manson','Anne','[email protected]','F','1977-08-09', 'Baker','Seattle, WA', 'divorced','cooking','employment'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location, contact_status,interests,seeking) VALUES ('Hardy','Anne','[email protected]','F','1963-04-18', 'Teacher','San Fran, CA', 'married','fishing, drinking','new job'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location) VALUES ('Parker','Anne','[email protected]','F','1983-01-10', 'Student','San Fran, CA'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location) VALUES ('Blunt','Anne','[email protected]','F','1959-10-09', 'Web Designer','San Fran, CA'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location) VALUES ('Jacobs','Anne','[email protected]','F','1968-02-05', 'Computer Programmer','San Jose, CA');

19. Na kraju treba provjeriti jesu li ti podaci zbilja unijeti, pisanjem SQL naredbe za prikaz podataka

iz tablice my_contacts.

20. Nakon što ste sve napravili, pritisnite ikonicu groma .

Page 9: Vježba 4: MySQL vježbe

9

Kreiranje procedura

1. Tablica my_contacts je ispunjena podacima. Nakon nje treba ispuniti podacima i tablicu interests

s interesima koji se nalaze u tablici my_contacts, ali s iznimkom da svaki interest bude u zasebnom

redu.

2. Otvorite novi tab s SQL editorom klikom na:

3. Nakon toga upišite naredbu tako da prikažete first_name, last_name i interests iz tablice

my_contacts.

Page 10: Vježba 4: MySQL vježbe

10

4. Problem predstavlja što u jednom redu postoji 2 ili 3 interesa, ti interesi se moraju odvojiti, te jedan

po jedan spremiti u tablicu interests. To će se postići kreiranjem procedure koja će sve te radnje

obaviti njenim izvršavanjem. Procedura koja se kreira će se zvati spUtilSplitInterests.

5. Otvorite novi tab, te isto kao i kod tablica prvo će se vršiti provjera postoji li ta procedura, te ako

postoji treba je obrisati.

6. Nakon toga kreira se procedura s dva ulazna parametra.

Page 11: Vježba 4: MySQL vježbe

11

7. Na početku MySQL procedure se uvijek deklariraju varijable, te će se tako učiniti i sada. Deklarirati

će se cjelobrojna varijabla FC i postaviti na -1.

8. Zatim će se kreirati petlja koja će se izvršavati kod god ima i jednog znaka u varijabli SplitString.

Page 12: Vježba 4: MySQL vježbe

12

9. Sada treba pronaći prvi zarez u varijabli SplitString i staviti tu poziciju u varijablu FC.

10. Nakon pronalaska zareza, treba izvršiti provjeru ovisno na kojoj je poziciji zarez s if…else uvjetom.

NAPOMENA: Ako je zarez na nultoj (0) poziciji, to znači da je ostala samo još jedna riječ.

Page 13: Vježba 4: MySQL vježbe

13

11. Ako je zarez na nultoj poziciji (FC = 0) i LENGTH SplitString varijable veći od 0, treba insertati

SplitString varijablu u tablicu interests, te izaći iz petlje.

Page 14: Vježba 4: MySQL vježbe

14

12. Ako je FC veće od 1 vrati FC - 1 broj znakova s lijeve strane. Npr. FC je 8, FC-1 je 7, string je 'sailing,

fishing, yachting' i vraca 7 znakova s lijeve strane tj. sailing; zatim vrati LENGTH SplitStringa (26),

odzmi FC (8) te s (26-8 = 18) 18 znakova s desne strane napuni varijablu SplitString, tim nova

vrijednost je ' fishing, yachting'.

Page 15: Vježba 4: MySQL vježbe

15

13. Na kraju ostao je ELSE koji pokriva zapravo ako FC nije jednako 0 i nije veće od 1.

Page 16: Vježba 4: MySQL vježbe

16

14. Za kraj je ostalo samo obrisati duple vrijednosti.

Page 17: Vježba 4: MySQL vježbe

17

15. Nakon kreiranja procedure koja će rastavljati string, narpaviti će se još jedna procedura koja će

selectirati intersets iz tablice my_contacts (SELECT c.interests FROM my_contacts c;) i jednu po

jednu vrijednost/red predavati proceduri spUtilSplitInterests.

Page 18: Vježba 4: MySQL vježbe

18

16. Nova procedura koja će se kreirati, zvati će se spFillInterests i sadržavati će CURSOR u sebi.

17. Opet će se prvo provjeriti postoji li procedura, te ako postoji neka se obriše, a zatim neka se kreira.

18. Kao što je vidljivo, procedura nema ni jedan ulazni parametar.

19. Nakon toga treba deklarirati cursor u proceduri:

Page 19: Vježba 4: MySQL vježbe

19

20. Ispod komentara exec proc treba pozvati proceduru

spUtilSplitInterests(SplitString, DelimiterChar), te joj predati varijablu l_interests za prvi

parametar, a za drugi zarez ','.

Page 20: Vježba 4: MySQL vježbe

20

21. Još samo nakon zatvorenog cursora selectirati će se interest-i iz tablice interests.

Page 21: Vježba 4: MySQL vježbe

21

NAPOMENA: Obavezno COMMIT narpaviti.

22. Kliknite na grom kako bi kreirali proceduru.

23. Na kraju samo treba pozvati proceduru spFillInterests.

24. Rezultat pozivanja:

Page 22: Vježba 4: MySQL vježbe

22

Page 23: Vježba 4: MySQL vježbe

23

Kreiranje relacija

1. Nakon što ste kreirali tablice, umetnuli podatke, te ih zatim i prikazali; kreirati će se još jedna tablica

(contact_interest)koja će povezati tablice my_contacts i interests insertajući selectirane primarne

ključeve tih dviju tablica u novo kreiranu tablicu kao strane ključeve.

2. Otvorite novi tab s SQL editorom. Pošto će se raditi strani ključevi prvo će se isključiti njihova

provjera.

3. Opet, napravite provjeru postoji li tablica contact_interest, te ako postoji neka se obriše. Nakon

toga treba CREATE.

4. Tablica contact_interest sadržavati će sljedeća polja:

a. Naziv polja: contact_interest_id

i. Tip polja: cijeli broj

ii. Ne smije biti prazan

iii. Autogenerirani broj

iv. Primarni ključ (PK)

b. Naziv polja: contact_id

i. Tip polja: cijeli broj

ii. Ne smije biti prazan

iii. Strani ključ (FK) – referenca tablica my_contacts

c. Naziv polja: interest_id

i. Tip polja: cijeli broj

ii. Ne smije biti prazan

iii. Strani ključ (FK) – referenca tablica interests

Page 24: Vježba 4: MySQL vježbe

24

5. Sada treba odmah prilikom kreiranja tablice insertirati c.contact_id, i.interest_id iz interests i,

my_contacts c tablica. To će se učiniti pomoću SELECT-a.

6. Nakon toga treba još uključiti provjeru stranih ključeva.

Page 25: Vježba 4: MySQL vježbe

25

7. Pritisnite grom kako biste napravili tablicu i u nju unijeli vrijednosti.

8. Provjerite postoje li u tablici vrijednosti, selectirajući sve iz tablice contact_interest.

Page 26: Vježba 4: MySQL vježbe

26

9. Zatim odite ponovno na glavni prozor MySQL WorkBencha .

10. Na dnu prozora kod modelsa kliknite na veće od(>).

11. Zatim odaberite vašu konekciju i Next, Next.

Page 27: Vježba 4: MySQL vježbe

27

12. Odaberite vašu bazu efosexample1, te Next, Next, Execute. Nakon toga još treba Next i Finish.

13. Trebali biste dobiti relacijski model vaše baze podataka.

Page 28: Vježba 4: MySQL vježbe

28

Page 29: Vježba 4: MySQL vježbe

29

Samostalni zadaci

SQL JOINs

U danom primjeru dohvaćaju se sve vrijednosti iz tablica my_contacts i contact_interest gdje je

jednaka vrijednost u polju contact_id.

1. Kako biste dohvatili sve vrijednosti iz tablica interests i contact_interest gdje je jednaka vrijednost

u polju interest_id. Napišite upit.

2. Kako biste dohvatili sve vrijednosti iz tablice interests, a samo vrijednosti iz tablice

contact_interest gdje je jednaka vrijednost u polju interest_id. Napišite upit.

Page 30: Vježba 4: MySQL vježbe

30

SQL WHERE

3. Dohvatite first_name, last_name iz tablice my_contacts čiji je gender 'M'. Napišite upit.

4. Dohvatite first_name, last_name iz tablice my_contacts čiji je gender 'M' i contact_status

'married'. Napišite upit.

SQL WHERE i JOIN

5. Dohvatite first_name, last_name, interests iz tablice my_contacts čiji je interest_id jednak broju

10.