Vježba 4: MySQL vježbe

Preview:

Citation preview

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.

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.

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:

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

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

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'

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','lkenton@starbuzzcoffee.com','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',' captainlove@headfirsttheater.com','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','joe_franklin@leapinlimos.com','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','dontbother@starbuzzcoffee.com','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

8

('Chevrolet','Maurice','bookman4u@objectville.net','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','poorrenee@mightygumball.net','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','angelina@starbuzzcoffee.com','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','padraic@tikibeanlounge.com','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','jpoet@objectville.net','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','Anne_Toth@leapinlimos.com','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','am86@objectville.net','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','anneh@b0tt0msup.com','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','annep@starbuzzcoffee.com','F','1983-01-10', 'Student','San Fran, CA'); INSERT INTO my_contacts (last_name,first_name,email,gender,birthday,profession,location) VALUES ('Blunt','Anne','anneblunt@breakneckpizza.com','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','anne99@objectville.net','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 .

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.

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.

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.

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č.

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.

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'.

15

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

16

14. Za kraj je ostalo samo obrisati duple vrijednosti.

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.

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:

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 ','.

20

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

21

NAPOMENA: Obavezno COMMIT narpaviti.

22. Kliknite na grom kako bi kreirali proceduru.

23. Na kraju samo treba pozvati proceduru spFillInterests.

24. Rezultat pozivanja:

22

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

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.

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.

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.

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.

28

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.

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.

Recommended