32
MySQL MySQL & SQL server & SQL server Dr r Nenad Kojić Nenad Kojić Visoka soka škola škola strukovnih studija strukovnih studija za za informacione i komunikacione tehnologije informacione i komunikacione tehnologije Beograd Beograd Kreiranje Kreiranje baze podataka baze podataka

MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

MySQL MySQL & SQL server& SQL server

DDr r Nenad KojićNenad Kojić

VViisokasoka škola škola strukovnih studija strukovnih studija za za informacione i komunikacione tehnologijeinformacione i komunikacione tehnologije

BeogradBeograd

KreiranjeKreiranje baze podataka baze podataka

Page 2: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Kreiranje baze podatakaKreiranje baze podataka

Nakon prijave na MySQL server, u komandnoj Nakon prijave na MySQL server, u komandnoj

liniji treba kucati naredbu za kreiranje baze liniji treba kucati naredbu za kreiranje baze

podatakapodataka

CREATE DATABASE CREATE DATABASE IMEBAZE;IMEBAZE;

Ako se kreira baza "knjige"Ako se kreira baza "knjige"

Odgovor:

Query OK, 1 row affected

označava da je proces uspešno

obavljen.

Page 3: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Kreiranje tabele baze podatakaKreiranje tabele baze podataka

Nakon kreiranja baze treba kreirati njene Nakon kreiranja baze treba kreirati njene

tabele. Svaka tabela se posebno definiše. tabele. Svaka tabela se posebno definiše.

Sintaksa je:Sintaksa je:

CREATE TABLE CREATE TABLE imetabeleimetabele ((kolonekolone););

Ime tabele definiše svakIme tabele definiše svakuu od tabela, dok od tabela, dok

kolone koje ta tabela sadrži treba nabrajati kolone koje ta tabela sadrži treba nabrajati

jednu izjednu izaa druge i imena odvajati zarezima.druge i imena odvajati zarezima.

Svaka kolona treba da sadrži ime i tip Svaka kolona treba da sadrži ime i tip

podataka u njoj.podataka u njoj.

Page 4: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Primer kreiranja tabelePrimer kreiranja tabele

mysql> use knjigemysql> use knjige

create table kupci (create table kupci (

IDkupca int unIDkupca int unssigned not null autoigned not null auto_increment primary key,_increment primary key,

ime char(50) not null,ime char(50) not null,

grad char(30) not null,grad char(30) not null,

naslov char(100),naslov char(100),

iznos float(5,2), iznos float(5,2),

kolicina tinyint unsigned,kolicina tinyint unsigned,

opis text,opis text,

datum date not nulldatum date not null

));;Greska u kucanju

Page 5: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

PrikazPrikaz informacija o baziinformacija o bazi

SHOW TABLES SHOW TABLES -- komanda prikazuje sve komanda prikazuje sve kreirane tabele u bazi podataka na koju je kreirane tabele u bazi podataka na koju je izvršena prijavaizvršena prijava

SHOW DATABASES SHOW DATABASES -- prikazuje spisak svih prikazuje spisak svih baza na serverubaza na serveru

Page 6: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

PrikazPrikaz informacija o tabeliinformacija o tabeli

DESCRIBE imetabele DESCRIBE imetabele -- Precizno prikazuje sve Precizno prikazuje sve informacije za traženu tabelu u baziinformacije za traženu tabelu u bazi

Page 7: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Izrada indeksaIzrada indeksa

Ako se u toku rada zahteva veliki broj pretraga Ako se u toku rada zahteva veliki broj pretraga po koloni koja nije indeksirana, onda će se po koloni koja nije indeksirana, onda će se poboljšanje performansi poboljšati dodavanjem poboljšanje performansi poboljšati dodavanjem indeksa za tu kolonu.indeksa za tu kolonu.

CREATE CREATE [UNIQUE|FULLTEXT] INDEX [UNIQUE|FULLTEXT] INDEX imeindeksaimeindeksa

ONON imetabele imetabele ((imekolone imekolone [([(brojbroj)] [ASC|DESC], ... );)] [ASC|DESC], ... );

�� Broj je opcioni parametar i sluBroj je opcioni parametar i služi za indeksiranje samo prvih n ži za indeksiranje samo prvih n

znakova u polju.znakova u polju.

�� [ASC|DESC][ASC|DESC] definišu da li je indeksiranje izvršeno rastućim ili definišu da li je indeksiranje izvršeno rastućim ili

opadajućim redosledom. Inicijalno je rastući.opadajućim redosledom. Inicijalno je rastući.

Page 8: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Unošenje podataka u bazuUnošenje podataka u bazu 11

UnoUnošenje podataka vrši se naredbom INSERTšenje podataka vrši se naredbom INSERT

�� Sintaksa naredbe:Sintaksa naredbe:

INSERT INSERT [INTO] [INTO] tabelatabela [([(kolona1kolona1, , kolona2kolona2, , kolona3kolona3, ...)] , ...)] VALUES(VALUES(vrednost1vrednost1, , vrednost2vrednost2, , vrednost3vrednost3, ...);, ...);

Vrednosti kolona pisati pod znacima Vrednosti kolona pisati pod znacima '' ili ili "",, sem ako sem ako su brojevi ili datumi.su brojevi ili datumi.

�� Ako se upisuje ceo red (sve kolone) sinAko se upisuje ceo red (sve kolone) sinttaksa je:aksa je:

INSERT INSERT [INTO] [INTO] tabelatabela

VALUES(VALUES(vrednost1vrednost1, , vrednost2vrednost2, , vrednost3vrednost3, ...);, ...);Primer:

insert into kupci values (NULL, 'Pera Peric', 'Beograd', 'Svet oko nas', 2000, 1,

'knjiga za decu', 2007-03-01);

Page 9: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Unošenje podataka u bazuUnošenje podataka u bazu 22

Upis se moUpis se može vršiti i za pojedine kolone že vršiti i za pojedine kolone

proizvoljnim redosledomproizvoljnim redosledom

Isti efekat dobija se primenom setIsti efekat dobija se primenom set--a kaoa kao

Ako je kolona definisana kao auto_increment, tada Ako je kolona definisana kao auto_increment, tada je kod upisa,dovoljno samo prvi put, definisati njenu je kod upisa,dovoljno samo prvi put, definisati njenu vrednostvrednost

Primer:

insert into kupci (naslov, kolicina, grad) values ('Mali princ', 2, 'Vranje',);

Primer:

insert into kupciset naslov= 'Mali princ', kolicina= 2, grad= 'Vranje' ;

Page 10: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Unošenje podataka u bazuUnošenje podataka u bazu 33

U tabelu se moU tabelu se može uneti i više redova odjednomže uneti i više redova odjednom

Insert lowInsert low_priority _priority -- privremeno zaustavljanje privremeno zaustavljanje

sa umetanjem novog reda dok se nsa umetanjem novog reda dok se nee završe završe

tekuća čitanjatekuća čitanja

Insert delayed. lowInsert delayed. low_priority _priority -- smeštanje smeštanje

podataka za umetanje u keš, i zadrška dok se podataka za umetanje u keš, i zadrška dok se

server ne rastereti.server ne rastereti.

Primer:

insert into kupci values

(2, 'Pera Peric', 'Beograd', 'Svet oko nas', 2000, 1, 'knjiga za decu', '2007-03-01') ,(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') ;

Page 11: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Čitanje podataka iz bazeČitanje podataka iz baze

Naredba za čitanje je SELECT sa sintaksom:Naredba za čitanje je SELECT sa sintaksom:

SELECT SELECT podacipodaci FROM FROM tabeletabele

[WHERE [WHERE usloviuslovi] [GROUP BY ] [GROUP BY grupisanjegrupisanje]]

[HAVING [HAVING uslovgrupeuslovgrupe] [ORDER BY ] [ORDER BY redosledredosled] ]

[LIMIT [LIMIT ograniograničenjačenja] ]

[[PROCEDUREPROCEDURE imeprocedureimeprocedure((argumentiargumenti))] ]

[[načinzaključavanjanačinzaključavanja]];;

Page 12: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Čitanje pomoću select Čitanje pomoću select -- fromfrom

Čitanje sadržaja kolona ime i grad iz tabele Čitanje sadržaja kolona ime i grad iz tabele

kupcikupci

Čitanje svih kolona iz tabeleČitanje svih kolona iz tabele

Primer:

select ime, grad from kupci ;

Primer:

select * from kupci ;

Page 13: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Čitanje pomoću select Čitanje pomoću select -- wherewhere

Za izdvajanje dela podataka sa uslovom Za izdvajanje dela podataka sa uslovom

treba koristiti where pa uslov pretragetreba koristiti where pa uslov pretrage

Operatori za poreOperatori za poređenje su: đenje su: =,<,>,>=,<=, =,<,>,>=,<=,

!=, is not null, is null, between, in, not in, !=, is not null, is null, between, in, not in,

like, not like ...like, not like ...

Primer:

select * from kupciwhere grad = 'Vranje' ;

Kombinacija uslovaselect * from kupciwhere grad = 'Vranje'

or|and ime='Pera Peric';

Page 14: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Čitanje podataka iz više tabela istovremenoČitanje podataka iz više tabela istovremeno

Ukoliko se želi pročitati više podataka iz Ukoliko se želi pročitati više podataka iz

različitih tabela, a koji su na bilo koji način različitih tabela, a koji su na bilo koji način

povezani, potrebno je izvršiti spajanje tabela.povezani, potrebno je izvršiti spajanje tabela.

Za dve tabele naći sve porudžbine Pere PerićaZa dve tabele naći sve porudžbine Pere Perića

TabelaTabela KoloneKolone

KupciKupci ID kupcaID kupca ImeIme AdresaAdresa GradGrad

NarudNarudzzbinebine ID narudID narudzzibeibe ID kupcaID kupca IznosIznos DatumDatum

Primer:

select narudzbine.iznos, narudzbine.datum from kupci, narudzbinewhere 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

Page 15: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Spajanje viSpajanje više od dve koloneše od dve kolone

Koji kupci su naručuli knjigu Baze (ISBN = 222333) Koji kupci su naručuli knjigu Baze (ISBN = 222333) TabelaTabela KoloneKolone

KupciKupci ID kupcaID kupca ImeIme AdresaAdresa GradGrad

NarudNarudzzbinebineID ID narudnarudzzibeneibene ID kupcaID kupca IznosIznos DatumDatum

ProizvodiProizvodiID ID narudnarudzzibeneibene ISBN brojISBN broj KoličinaKoličina

KnjigeKnjige ISBN brojISBN broj AutorAutor NaslovNaslov CenaCenaPrimer:

select kupci.ime from kupci, narudzbine, proizvodi, knjigewhere 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.

Page 16: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Levi spojevi (Levi spojevi (left joinleft join))

NajNajčešće se koristi za slučajeve kada nema preklapanja češće se koristi za slučajeve kada nema preklapanja

između podataka (Naći klijente koji ništa nisu kupili !)između podataka (Naći klijente koji ništa nisu kupili !)

Def: Ako se prilikom spajanja redova dve tabele, u Def: Ako se prilikom spajanja redova dve tabele, u

desnoj tabeli ne nađe red, koji bi odgovarao redu u levoj desnoj tabeli ne nađe red, koji bi odgovarao redu u levoj

tabeli, skupu rezultata se dodaje red, koji umesto tabeli, skupu rezultata se dodaje red, koji umesto

vrednosti kolone na desnoj strani, sadrži vrednost NULL.vrednosti kolone na desnoj strani, sadrži vrednost NULL.

Sintaksa sadrSintaksa sadrži rezervisanu reč ži rezervisanu reč left joinleft join i i onon

Page 17: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Tabela sa desne

strane

Tabela sa leve

strane

Primer levog spajanja 1Primer levog spajanja 1

Za datu bazu napisati kod kojim se pretražuju korisnici u Za datu bazu napisati kod kojim se pretražuju korisnici u

odnosu na broj narudžbenica.odnosu na broj narudžbenica.KupciKupci

ID KupcID Kupcaa ImeIme AdresaAdresa GradGrad

11 Mile VasicMile Vasic Narodnih heroja 1Narodnih heroja 1

22 Milos PericMilos Peric Avijaticara 7Avijaticara 7 LeskovacLeskovac

33 Jovan JovicJovan Jovic Ovcasrska 55Ovcasrska 55 AriljeArilje

44 Ana SenicAna Senic Havajska 5Havajska 5 BorBor

55 Milena IlicMilena Ilic Nade Puric 4Nade Puric 4 ZajecarZajecar

NarudzbineNarudzbine

ID NarudzbineID Narudzbine ID KupcID Kupcaa IznosIznos DatumDatum

11 55 6500650020072007--0101--0505

22 33 4800480020072007--0101--1212

33 44 7300730020072007--0202--0707

44 55 2100210020072007--0202--1919

Primer:

select kupci.ID kupca, kupci.ime, narudzbine.ID narudzibefrom kupci left join narudzbine on kupci. ID kupca = narudzbine. ID kupca;

ID KupciID Kupci ImeIme ID NarudzbineID Narudzbine

11 Mile VasicMile Vasic NULLNULL

22 Milos PericMilos Peric NULLNULL

33 Jovan JovicJovan Jovic 22

44 Ana SenicAna Senic 33

55 Milena IlicMilena Ilic 11

55 Milena IlicMilena Ilic 44

Page 18: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Primer levog spajanja 2 Primer levog spajanja 2

Ako se traže korisnici koji ništa nisu kupili, tada treba Ako se traže korisnici koji ništa nisu kupili, tada treba

naći vrednosti NULL u novodobijenoj koloni, i dati naći vrednosti NULL u novodobijenoj koloni, i dati

odgovarajuće ime korisnikaodgovarajuće ime korisnika

ID KupciID Kupci ImeIme ID NarudzbineID Narudzbine

11 Mile VasicMile Vasic NULLNULL

22 Milos PericMilos Peric NULLNULL

33 Jovan JovicJovan Jovic 22

44 Ana SenicAna Senic 33

55 Milena IlicMilena Ilic 11

55 Milena IlicMilena Ilic 44

Primer:

select kupci.ID kupca, kupci.ime, from kupci left join narudzbine

using (ID kupca)

where narudzbine. IDnarudzbine is NULL;

ID KupciID Kupci ImeIme

11 Mile VasicMile Vasic

22 Milos PericMilos Peric

Upotrebom USING ne navodi se tabela iz koje dolazi

zajednička kolona. U tom slučaju mora postojati kolona

sa istim imenom u obe tabele.

Page 19: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Upotreba ALIJASAUpotreba ALIJASA

Alijasi su druga imena koja se dodeljuju Alijasi su druga imena koja se dodeljuju privremeno ili trajno postojećim kolonama. privremeno ili trajno postojećim kolonama. Najčešće se koriste kao skraćena imena.Najčešće se koriste kao skraćena imena.

Primer:

select k.ime, 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

n.ISBN = knj.ISBN and knj.naslov like ' %Baze% ";

Primer:

select kupci.ime from kupci, narudzbine, proizvodi, knjigewhere kupci. ID kupca = narudzbine. ID kupca and narudzbine. ID narudzibe =

proizvodi.IDnarudzbine and proizvodi.ISBN broj = knjige.ISBN broj and

knjige.naslov like ' %Baze% ' ;

Page 20: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Alijasi za sopstveno spajanjeAlijasi za sopstveno spajanje

Alijasi su obaveAlijasi su obavezzni kada treba spojiti tabelu ni kada treba spojiti tabelu samu sa sobom. Ovo je potresamu sa sobom. Ovo je potrebbno ako se trano ako se traže že redovi sa istim vrednostima u nekoj koloni.redovi sa istim vrednostima u nekoj koloni.

Naći sve kupce koji žive u istom graduNaći sve kupce koji žive u istom gradu

Primer:

select k1.ime, k1.grad, k2.ime, from kupci as k1, kupci as k2where k1.grad = k2.grad and k1.ime != k2.ime;

Ovim uslovom se definiše da isti kupac, koji je u

obe tabele, ne bude pronađen više puta.

Može postojati samo jedno ime za taj grad !!!

Page 21: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Učitavanje po redosleduUčitavanje po redosledu

Ako se redovi koje treba prikazati kao rezultat upita žele Ako se redovi koje treba prikazati kao rezultat upita žele

sortirati koristi se naredba ORDER BY.sortirati koristi se naredba ORDER BY.

Vrednosti se sortiraju od a ka z, i od 1 na više, dok se za Vrednosti se sortiraju od a ka z, i od 1 na više, dok se za

promenu koristi rezervisana reč DESC.promenu koristi rezervisana reč DESC.

Primer:

select ime, adresa, gradfrom kupciorder by ime;

ImeIme AdresaAdresa GradGrad

Ana SenicAna Senic Havajska 5Havajska 5 BorBor

Jovan JovicJovan Jovic Ovcasrska 55Ovcasrska 55 AriljeArilje

Mile VasicMile Vasic Narodnih heroja 1Narodnih heroja 1

Milena IlicMilena Ilic Nade Puric 4Nade Puric 4 ZajecarZajecar

Milos PericMilos Peric Avijaticara 7Avijaticara 7 LeskovacLeskovac

Primer:

select ime, adresa, gradfrom kupciorder by ime desc;

ImeIme AdresaAdresa GradGrad

Milos PericMilos Peric Avijaticara 7Avijaticara 7LeskovaLeskovacc

Milena IlicMilena Ilic Nade Puric 4Nade Puric 4 ZajecarZajecar

Mile VasicMile Vasic Narodnih heroja 1Narodnih heroja 1

Jovan JovicJovan Jovic Ovcasrska 55Ovcasrska 55 AriljeArilje

Ana SenicAna Senic Havajska 5Havajska 5 BorBor

Page 22: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Grupne funkcijeGrupne funkcije

Grupne funkcije se primenjuju na grupisane podatke Grupne funkcije se primenjuju na grupisane podatke

(više kolona ili redova u kolonama)(više kolona ili redova u kolonama)

Neke grupne funkcije su:Neke grupne funkcije su:

NazivNaziv OpisOpis

AVG (kolona)AVG (kolona) Prosečna vrednost koloneProsečna vrednost kolone

COUNT (stavke)COUNT (stavke)

Ako je navedena kolona daje broj elemenata u koloni bez NULL, a ako se Ako je navedena kolona daje broj elemenata u koloni bez NULL, a ako se

ispred naredbe doda DISTINCT dobije se broj jedinstvenih vrednosti u ispred naredbe doda DISTINCT dobije se broj jedinstvenih vrednosti u

koloni.koloni.

MIN (kolona)MIN (kolona) Minimalne vrednost koloneMinimalne vrednost kolone

MAX (kolona)MAX (kolona) Maksimalna vrednost koloneMaksimalna vrednost kolone

SUM (kolona)SUM (kolona) Zbir vrednosti u koloniZbir vrednosti u koloni

Page 23: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Primeri grupnih funkcijaPrimeri grupnih funkcijaIIzračunavanje srednje vrednosti porudžbinazračunavanje srednje vrednosti porudžbina

Primer:

select avg(iznos)from narudžbine;

avg (iznos)avg (iznos)

51755175

IIzračunavanje srednje vrednosti porudžbina po zračunavanje srednje vrednosti porudžbina po

određenim grupama dobija se grupisanjem po određenoj određenim grupama dobija se grupisanjem po određenoj

kategorijikategoriji

Primer:

select IDkupca, avg(iznos)from narudžbine;group by IDkupca

ID kupcaID kupca avg (iznos)avg (iznos)

11 48004800

22 73007300

33 43004300

Traženje porudžbina koje premašuju vrednost 4500Traženje porudžbina koje premašuju vrednost 4500

Primer:

select IDkupca, avg(iznos)from narudžbine;group by IDkupcahaving avg(iznos) > 4500;

ID kupcaID kupca avg (iznos)avg (iznos)

11 48004800

22 73007300

Page 24: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Izbor redova koje upit treba da vratiIzbor redova koje upit treba da vrati

Naredbom LIMIT definiNaredbom LIMIT definiše se koji redovi ( počev še se koji redovi ( počev od kog i koliko njih) treba da budu vraćeni na od kog i koliko njih) treba da budu vraćeni na zahtevani upit.zahtevani upit.

Prvi red ima redni broj 0Prvi red ima redni broj 0

Ako se želi prikaz prvih 10 imena, tada je kodAko se želi prikaz prvih 10 imena, tada je kod

Primer:

select namefrom kupci;limit 0, 10;

Prikaz 5,6,7,8 i 9Prikaz 5,6,7,8 i 9--og reda bi bioog reda bi bioPrimer:

select namefrom kupci;limit 4, 5;

Page 25: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Podupiti (subquery)Podupiti (subquery)

Podupit je upit unutar upitaPodupit je upit unutar upita

Koristi se kada se reKoristi se kada se rezultat jednog upita poredi u uslovu zultat jednog upita poredi u uslovu

drugog upita.drugog upita.

Operatori za podupiteOperatori za podupite

Primer:

select IDkupca, iznosfrom narudzbine;where iznos= (select max(iznos) from narudzbine);

Podupit koji traži

maksimalnu vrednost u

koloni iznos

ID kupca iznos

2 7300

Vraća se ID

kupca koji ima

najveći iznos

Page 26: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Podupiti koji vraćaju redovePodupiti koji vraćaju redove

Podupiti najčešće vraćaju neku logičku promenljivu True Podupiti najčešće vraćaju neku logičku promenljivu True

ili False, jer su rezultat nekog poređenja. ili False, jer su rezultat nekog poređenja.

Podupit može da vrati i ceo redPodupit može da vrati i ceo red

Ovo je najčešći slučaj kada treba naći sve redove jedne Ovo je najčešći slučaj kada treba naći sve redove jedne

tabele koji postoje i u drugojtabele koji postoje i u drugoj

Primer:

select k1, k2, k3from tabela1;where (k1, k2, k3) in (select k1, k2, k3 from tabela2);

Page 27: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Ažuriranje zapisa u baziAžuriranje zapisa u bazi

Često postoji potreba za promenom podataka u Često postoji potreba za promenom podataka u bazi (cena artikla, pdv, adresa...)bazi (cena artikla, pdv, adresa...)

Iskaz UPDATE i njegova sintaksa su: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 knjigeset cena=cena*1.1;

Primer promene adrese kupca:

update kupciset adresa = ' Bulevar mira 12'where IDkupca = 3;

Page 28: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Naknadne izmene strukture tabelaNaknadne izmene strukture tabela

Page 29: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Primer izmene strukture tabelaPrimer izmene strukture tabela

Primer:

•Promena tipa podatka u koloni tako da prihvata imena max dužine 90 karaktera

alter table kupci

modify ime char(90) not null;

•Dodavanje nove kolone (pdv) iza kolone iznos u tabeli porudžbine

alter table porudzbine

add pdv float (5,2) after iznos

•Brisanje kolone pdv

alter table porudzbine

drop pdv;

Page 30: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

Izvršenja promene bez

obaveštenja

Ubrzavanje postupka

Odlaganje do rasterećenjaBrisanjeBrisanjeBrisanje zapisa (redova) Brisanje zapisa (redova) -- DeleteDelete

Brisanje tabela Brisanje tabela -- DropDrop

Brisanje cele baze podataka Brisanje cele baze podataka -- DropDropPrimer:

DROP DATABASE (naziv baze podataka koja se briše);

Primer:

DROP TABELE (naziv tabele koja se briše);

Sintaksa:

DELETE [low_priority] [quit] [ignore] from imetabele

[WHERE uslov]

[ORDER BY kolone]

[LIMIT broj]

Primer:

DELETE from kupci

WHERE ime='Pera';

Broj redova koji se brišu

Grupisanje kolona

Uslov pod kojim se briše

Page 31: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

DDL i DMLDDL i DML

DDL DDL -- Data Definition Language je jezik za Data Definition Language je jezik za

definisanje podataka i odnosi se na definisanje podataka i odnosi se na

naredbu Create Table.naredbu Create Table.

DML DML -- Data Manipulation Language je Data Manipulation Language je

jezik za manipulisanje podacima, i odnosi jezik za manipulisanje podacima, i odnosi

se na naredbe Select, Update, Insert i se na naredbe Select, Update, Insert i

Delete.Delete.

QML QML -- Query Manipulation Language je Query Manipulation Language je

jezik za manipulisanje upitima i odnosi se jezik za manipulisanje upitima i odnosi se

na naredbu Selectna naredbu Select

Page 32: MySQL MySQL & SQL server & SQL server · Kreiranje baze podataka Nakon prijave na MySQL server, u komandnoj liniji treba kucati naredbu za kreiranje baze podataka CREATE DATABASE

MySQL MySQL & SQL server& SQL server

DDr r Nenad KojićNenad Kojić

VViisokasoka škola škola strukovnih studija strukovnih studija za za informacione i komunikacione tehnologijeinformacione i komunikacione tehnologije

BeogradBeograd

KreiranjeKreiranje baze podataka baze podataka