0% found this document useful (0 votes)
150 views8 pages

6 Kreiranje Baze Podataka PDF 11494

The document discusses creating and working with databases and tables in MySQL. It covers how to create databases and tables, insert data, read data using SELECT statements, and join tables. Some key points covered include using the CREATE DATABASE and CREATE TABLE statements to set up the database structure, the INSERT statement to add data to tables, and selecting data using WHERE clauses and joining tables to retrieve related data.

Uploaded by

Lejla Hott
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
150 views8 pages

6 Kreiranje Baze Podataka PDF 11494

The document discusses creating and working with databases and tables in MySQL. It covers how to create databases and tables, insert data, read data using SELECT statements, and join tables. Some key points covered include using the CREATE DATABASE and CREATE TABLE statements to set up the database structure, the INSERT statement to add data to tables, and selecting data using WHERE clauses and joining tables to retrieve related data.

Uploaded by

Lejla Hott
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Visoka škola strukovnih studija za

informacione i komunikacione tehnologije Kreiranje baze podataka


Beograd
• Nakon prijave na MySQL server, u komandnoj liniji
treba kucati naredbu za kreiranje baze podataka
MySQL & SQL server CREATE DATABASE IMEBAZE;
Ako se kreira baza "knjige"

Kreiranje baze podataka Odgovor:


Query OK, 1 row affected
označava da je proces uspešno
obavljen.

Dr Nenad Kojić

Kreiranje tabele baze podataka Primer kreiranja tabele


• Nakon kreiranja baze treba kreirati njene tabele. mysql> use knjige
Svaka tabela se posebno definiše. Sintaksa je: create table kupci (
CREATE TABLE imetabele (kolone); IDkupca int unsigned not null auto_increment primary key,
ime char(50) not null,
grad char(30) not null,
• Ime tabele definiše svaku od tabela, dok kolone koje
naslov char(100),
ta tabela sadrži treba nabrajati jednu iza druge i
iznos float(5,2),
imena odvajati zarezima.
kolicina tinyint unsigned,
• Svaka kolona treba da sadrži ime i tip podataka u opis text,
njoj. datum date not null
);
Greska u kucanju
Prikaz informacija o bazi Prikaz informacija o tabeli
• SHOW TABLES - komanda prikazuje sve kreirane • DESCRIBE imetabele - Precizno prikazuje sve
tabele u bazi podataka na koju je izvršena prijava informacije za traženu tabelu u bazi

• SHOW DATABASES - prikazuje spisak svih baza na


serveru

Izrada indeksa Unošenje podataka u bazu 1


• Ako se u toku rada zahteva veliki broj pretraga po • Unošenje podataka vrši se naredbom INSERT
koloni koja nije indeksirana, onda će se poboljšanje – Sintaksa naredbe:
performansi poboljšati dodavanjem indeksa za tu INSERT [INTO] tabela [(kolona1, kolona2, kolona3, ...)]
VALUES(vrednost1, vrednost2, vrednost3, ...);
kolonu.
• Vrednosti kolona pisati pod znacima ' ili ", sem ako su brojevi ili
CREATE [UNIQUE|FULLTEXT] INDEX imeindeksa datumi.
ON imetabele (imekolone [(broj)] [ASC|DESC], ... ); – Ako se upisuje ceo red (sve kolone) sintaksa je:
INSERT [INTO] tabela
– Broj je opcioni parametar i služi za indeksiranje samo prvih n znakova u VALUES(vrednost1, vrednost2, vrednost3, ...);
polju.
– [ASC|DESC] definišu da li je indeksiranje izvršeno rastućim ili Primer:
opadajućim redosledom. Inicijalno je rastući.
insert into kupci values (NULL, 'Pera Peric', 'Beograd', 'Svet oko nas', 2000, 1,
'knjiga za decu', 2007-03-01);
Unošenje podataka u bazu 2 Unošenje podataka u bazu 3
• Upis se može vršiti i za pojedine kolone proizvoljnim • U tabelu se može uneti i više redova odjednom
Primer:
redosledom
Primer: insert into kupci values
(2, 'Pera Peric', 'Beograd', 'Svet oko nas', 2000, 1, 'knjiga za decu', '2007-03-01') ,
insert into kupci (naslov, kolicina, grad) values ('Mali princ', 2, 'Vranje',); (3, 'Mile Vasic', 'Sabac', 'Geografija', 2500, 2, 'knjiga za omladinu', '2007-03-05') ,
(4, 'Ana Savic', 'Valjevo', 'Bukvar', 1500, 1, 'knjiga za decu', '2007-03-15') ;
• Isti efekat dobija se primenom set-a kao • Insert low_priority - privremeno zaustavljanje sa
Primer:
umetanjem novog reda dok se ne završe tekuća čitanja
insert into kupci
set naslov= 'Mali princ', kolicina= 2, grad= 'Vranje' ; • Insert delayed. low_priority - smeštanje podataka za
• Ako je kolona definisana kao auto_increment, tada je kod umetanje u keš, i zadrška dok se server ne rastereti.
upisa,dovoljno samo prvi put, definisati njenu vrednost

Čitanje podataka iz baze Čitanje pomoću select - from


• Naredba za čitanje je SELECT sa sintaksom: • Čitanje sadržaja kolona ime i grad iz tabele kupci
Primer:
SELECT podaci FROM tabele
select ime, grad from kupci ;
[WHERE uslovi] [GROUP BY grupisanje]
[HAVING uslovgrupe] [ORDER BY redosled]
• Čitanje svih kolona iz tabele
[LIMIT ograničenja]
Primer:
[PROCEDURE imeprocedure(argumenti)]
select * from kupci ;
[načinzaključavanja];
Čitanje pomoću select - where Čitanje podataka iz više tabela istovremeno

• Za izdvajanje dela podataka sa uslovom treba • Ukoliko se želi pročitati više podataka iz različitih tabela,
koristiti where pa uslov pretrage a koji su na bilo koji način povezani, potrebno je izvršiti
Primer:
spajanje tabela.
• Za dve tabele naći sve porudžbine Pere Perića
select * from kupci
where grad = 'Vranje' ;

Kombinacija uslova Tabela Kolone


select * from kupci Kupci ID kupca Ime Adresa Grad
where grad = 'Vranje' Narudzbine ID narudzibe ID kupca Iznos Datum
or|and ime='Pera Peric';
Primer:
• Operatori za poređenje su: =,<,>,>=,<=, !=, is not select narudzbine.iznos, narudzbine.datum from kupci, narudzbine
null, is null, between, in, not in, like, not like ... where kupci.ime = 'Pera Peric' and kupci.IDkupca = narudzbine.IDkupca;
Uslov spajanja je kupci.IDkupca = narudzbine.ID kupca, može biti i van baze npr
baza4.nesto1.IDnesto1 = baza2.nesto3.IDnesto3

Spajanje više od dve kolone Levi spojevi (left join)


• Koji kupci su naručuli knjigu Baze (ISBN = 222333) • Najčešće se koristi za slučajeve kada nema preklapanja između podataka
(Naći klijente koji ništa nisu kupili !)
Tabela Kolone
Kupci ID kupca Ime Adresa Grad • Def: Ako se prilikom spajanja redova dve tabele, u desnoj tabeli ne nađe
ID red, koji bi odgovarao redu u levoj tabeli, skupu rezultata se dodaje red,
Narudzbine narudzibene ID kupca Iznos Datum koji umesto vrednosti kolone na desnoj strani, sadrži vrednost NULL.
ID
Proizvodi narudzibene ISBN broj Količina • Sintaksa sadrži rezervisanu reč left join i on
Knjige ISBN broj Autor Naslov Cena
Primer:

select kupci.ime from kupci, narudzbine, proizvodi, knjige


where kupci. ID kupca = narudzbine. ID kupca and narudzbine. ID narudzibe =
proizvodi.IDnarudzbine and proizvodi.ISBN broj = knjige.ISBN broj and
knjige.naslov like ' %Baze% ' ;

Def: Broj uslova za spajanje tabela je za jedan manji od broja tabela, jer je za spajanje
dve tabele potreban jedan uslov.
Primer levog spajanja 1 Primer levog spajanja 2
• Za datu bazu napisati kod kojim se pretražuju korisnici u • Ako se traže korisnici koji ništa nisu kupili, tada treba naći
odnosu na broj narudžbenica. Tabela sa desne vrednosti NULL u novodobijenoj koloni, i dati odgovarajuće
Kupci
Primer: strane ime korisnika
ID Kupca Ime Adresa Grad
Narodnih
1 Mile Vasic heroja 1 select kupci.ID kupca, kupci.ime,
ID Kupci Ime ID Narudzbine Primer:
2 Milos Peric Avijaticara 7 Leskovac narudzbine.ID narudzibe 1 Mile Vasic NULL
3 Jovan Jovic Ovcasrska 55 Arilje
from kupci left join narudzbine 2 Milos Peric NULL
4 Ana Senic Havajska 5 Bor select kupci.ID kupca, kupci.ime,
on kupci. ID kupca = narudzbine. ID kupca; 3 Jovan Jovic 2
5 Milena Ilic Nade Puric 4 Zajecar from kupci left join narudzbine
4 Ana Senic 3
Tabela sa leve 5 Milena Ilic 1
strane 5 Milena Ilic 4
using (ID kupca)
where narudzbine. IDnarudzbine is NULL;
Narudzbine ID Kupci Ime ID Narudzbine
ID Narudzbine ID Kupca Iznos Datum 1 Mile Vasic NULL
1 5 6500 2007-01-05 2 Milos Peric NULL
2 3 4800 2007-01-12 3 Jovan Jovic 2 ID Kupci Ime
3 4 7300 2007-02-07 4 Ana Senic 3 Upotrebom USING ne navodi se tabela iz koje dolazi 1 Mile Vasic
4 5 2100 2007-02-19 5 Milena Ilic 1 zajednička kolona. U tom slučaju mora postojati kolona 2 Milos Peric
5 Milena Ilic 4 sa istim imenom u obe tabele.

Upotreba ALIJASA Alijasi za sopstveno spajanje


• Alijasi su druga imena koja se dodeljuju privremeno • Alijasi su obavezni kada treba spojiti tabelu samu sa sobom.
Ovo je potrebno ako se traže redovi sa istim vrednostima u
ili trajno postojećim kolonama. Najčešće se koriste nekoj koloni.
kao skraćena imena. • Naći sve kupce koji žive u istom gradu
Primer:

select k.ime, Primer:


from kupci as k, narudzbine as n, proizvodi as p, knjige as knj
where k.ID kupca = n.ID kupca and n.ID narudzbine= p.ID narudzbine and select k1.ime, k1.grad, k2.ime,
n.ISBN = knj.ISBN and knj.naslov like ' %Baze% "; from kupci as k1, kupci as k2
where k1.grad = k2.grad and k1.ime != k2.ime;
Primer:

select kupci.ime from kupci, narudzbine, proizvodi, knjige Ovim uslovom se definiše da isti kupac, koji je u
where kupci. ID kupca = narudzbine. ID kupca and narudzbine. ID narudzibe = obe tabele, ne bude pronađen više puta.
proizvodi.IDnarudzbine and proizvodi.ISBN broj = knjige.ISBN broj and Može postojati samo jedno ime za taj grad !!!
knjige.naslov like ' %Baze% ' ;
Učitavanje po redosledu Grupne funkcije
• Ako se redovi koje treba prikazati kao rezultat upita žele • Grupne funkcije se primenjuju na grupisane podatke (više
sortirati koristi se naredba ORDER BY. kolona ili redova u kolonama)
• Vrednosti se sortiraju od a ka z, i od 1 na više, dok se za • Neke grupne funkcije su:
promenu koristi rezervisana reč DESC.
Naziv Opis
AVG (kolona) Prosečna vrednost kolone
Primer: Primer: Ako je navedena kolona daje broj elemenata u koloni bez NULL, a ako se
COUNT (stavke) ispred naredbe doda DISTINCT dobije se broj jedinstvenih vrednosti u
select ime, adresa, grad select ime, adresa, grad koloni.
from kupci from kupci MIN (kolona) Minimalne vrednost kolone
order by ime; order by ime desc; MAX (kolona) Maksimalna vrednost kolone
Ime Adresa Grad Ime Adresa Grad SUM (kolona) Zbir vrednosti u koloni
Ana Senic Havajska 5 Bor Milos Peric Avijaticara 7 Leskovac
Jovan Jovic Ovcasrska 55 Arilje Milena Ilic Nade Puric 4 Zajecar
Mile Vasic Narodnih heroja 1 Mile Vasic Narodnih heroja 1
Milena Ilic Nade Puric 4 Zajecar Jovan Jovic Ovcasrska 55 Arilje
Milos Peric Avijaticara 7 Leskovac Ana Senic Havajska 5 Bor

Primeri grupnih funkcija Izbor redova koje upit treba da vrati


• Izračunavanje srednje vrednosti porudžbina
Primer:
avg (iznos) • Naredbom LIMIT definiše se koji redovi ( počev od
select avg(iznos)
from narudžbine; 5175 kog i koliko njih) treba da budu vraćeni na zahtevani
Izračunavanje srednje vrednosti porudžbina po upit.
određenim grupama dobija se grupisanjem po određenoj • Prvi red ima redni broj 0
kategoriji
ID kupca avg (iznos)
• Ako se želi prikaz prvih 10 imena, tada je kod
Primer:
1 4800 Primer:
select IDkupca, avg(iznos)
from narudžbine; 2 7300 select name
group by IDkupca 3 4300 from kupci;
limit 0, 10;
Traženje porudžbina koje premašuju vrednost 4500
Primer: Prikaz 5,6,7,8 i 9-og reda bi bio
ID kupca avg (iznos) Primer:
select IDkupca, avg(iznos)
from narudžbine; 1 4800 select name
group by IDkupca 2 7300 from kupci;
having avg(iznos) > 4500; limit 4, 5;
Podupiti (subquery) Podupiti koji vraćaju redove
• Podupit je upit unutar upita • Podupiti najčešće vraćaju neku logičku promenljivu True ili
• Koristi se kada se rezultat jednog upita poredi u uslovu drugog False, jer su rezultat nekog poređenja.
upita. • Podupit može da vrati i ceo red
Vraća se ID ID kupca iznos
Primer: • Ovo je najčešći slučaj kada treba naći sve redove jedne tabele
select IDkupca, iznos kupca koji ima 2 7300
najveći iznos koji postoje i u drugoj
from narudzbine;
where iznos= (select max(iznos) from narudzbine);
Podupit koji traži Primer:
maksimalnu vrednost u
• Operatori za podupite koloni iznos select k1, k2, k3
from tabela1;
where (k1, k2, k3) in (select k1, k2, k3 from tabela2);

Ažuriranje zapisa u bazi Naknadne izmene strukture tabela


• Često postoji potreba za promenom podataka u bazi
(cena artikla, pdv, adresa...)
• Iskaz UPDATE i njegova sintaksa su:
Primer:
UPDATE imetabele
Set kolona1=izraz1, kolona2=izraz2, ...
[Where uslovi]
[ORDER by redosled]
[Limit broj]
Primer povećanja cene knjiga za 10%:
update knjige
set cena=cena*1.1;
Primer promene adrese kupca:
update kupci
set adresa = ' Bulevar mira 12'
where IDkupca = 3;
Primer izmene strukture tabela Brisanje Odlaganje do rasterećenja

• Brisanje zapisa (redova) - Delete Ubrzavanje postupka


Sintaksa:
Primer:
DELETE [low_priority] [quit] [ignore] from imetabele
•Promena tipa podatka u koloni tako da prihvata imena max dužine 90 karaktera Izvršenja promene bez
[WHERE uslov]
obaveštenja
[ORDER BY kolone]
alter table kupci Uslov pod kojim se briše
[LIMIT broj]
modify ime char(90) not null;
Grupisanje kolona
Primer:
•Dodavanje nove kolone (pdv) iza kolone iznos u tabeli porudžbine Broj redova koji se brišu
DELETE from kupci
WHERE ime='Pera';
alter table porudzbine • Brisanje tabela - Drop
add pdv float (5,2) after iznos

•Brisanje kolone pdv Primer:


DROP TABELE (naziv tabele koja se briše);
alter table porudzbine • Brisanje cele baze podataka - Drop
drop pdv;
Primer:
DROP DATABASE (naziv baze podataka koja se briše);

Visoka škola strukovnih studija za


DDL i DML informacione i komunikacione tehnologije
Beograd
• DDL - Data Definition Language je jezik za
definisanje podataka i odnosi se na naredbu
Create Table.
• DML - Data Manipulation Language je jezik za
MySQL & SQL server
manipulisanje podacima, i odnosi se na
naredbe Select, Update, Insert i Delete.
• QML - Query Manipulation Language je jezik Kreiranje baze podataka
za manipulisanje upitima i odnosi se na
naredbu Select
Dr Nenad Kojić

You might also like