<?xml version="1.0" encoding="windows-1250" ?>
<rss version="2.0">
<channel>
<docs>https://www.mycity.rs/Obavestenja/MyCity-RSS-feeds.html</docs>
<title>MyCity :: Baze podataka</title>
<link>https://www.mycity.rs/Baze-podataka/</link>
<description>RSS feed 'Baze podataka' foruma</description>
<language>sr</language>
<ttl>15</ttl>
<lastBuildDate>Mon, 17 Aug 2026 17:54:50 +0100</lastBuildDate>
<item>
	<title>Preporuke korisnih aplikacija za baze podataka</title>
	<link>https://www.mycity.rs/Baze-podataka/Preporuke-korisnih-aplikacija-za-baze-podataka.html</link>
	<guid>https://www.mycity.rs/?p=1535152</guid>
	<author>nobody@mycity.rs (Fil)</author>
	<description>&lt;span style=&quot;font-weight: bold&quot;&gt;HeidiSQL&lt;/span&gt; is a &lt;span style=&quot;font-weight: bold&quot;&gt;MySQL&lt;/span&gt; front-end that enables you to manage your database and browse table contents from an easy-to-use Windows interface. In addition to common tasks such as running &lt;span style=&quot;font-weight: bold&quot;&gt;SQL&lt;/span&gt; queries, creating, dropping and editing tables, you can also perform various maintenance operations including integrity check, database optimization, repair and more. Furthermore, you can import data from text files, synchronize tables between two databases and export selected tables to other databases or &lt;span style=&quot;font-weight: bold&quot;&gt;SQL&lt;/span&gt; scripts. Other features include editing of &lt;span style=&quot;font-weight: bold&quot;&gt;BLOBs&lt;/span&gt; and &lt;span style=&quot;font-weight: bold&quot;&gt;MEMOs&lt;/span&gt;, support for large &lt;span style=&quot;font-weight: bold&quot;&gt;SQL&lt;/span&gt; scripts, user process management and more. Open Source.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Download and read more from:&lt;/span&gt;
&lt;br /&gt;
Tekst za link</description>
	<pubDate>Tue, 07 May 2013 20:06:33 +0100</pubDate>
</item>
<item>
	<title>Optimizacija u MySQL 5.1</title>
	<link>https://www.mycity.rs/Baze-podataka/Optimizacija-u-MySQL-5-1.html</link>
	<guid>https://www.mycity.rs/?p=568478</guid>
	<author>nobody@mycity.rs (umpirsky)</author>
	<description>Uvod
&lt;br /&gt;

&lt;br /&gt;
Sistem za upravljanje bazama podataka (database management system, DBMS) je softverska komponenta namenjena rukovođenju  bazama podataka, velikim skupom struktuiranih podataka, i izvršavanju operacija nad podacima koje zahteva veliki broj korisnika. Tipične upotrebe ovih sistema uključuju bankarske sisteme, računovodstvo, sve vrste web i desktop aplikacija i mnoge druge.
&lt;br /&gt;

&lt;br /&gt;
Osnove MySQL-a
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
MySQL &amp;#1112;&amp;#1077; višenitni, višekorisnički SQL sistem za upravljanje bazama podataka (DBMS), sa oko deset miliona instalacija. MySQL AB obezbeđuje MySQL kao slobodan softver pod GNU licencom.
&lt;br /&gt;

&lt;br /&gt;
phpMyAdmin je klijent pisan u programskom jeziku PHP za potrebe administriranja MySQL sistema baza podataka . On pruža usluge kreiranja I uništavanja baza podataka, tabela, vrsta,  izvođenje raznih operacija sa tabelama, dumpovanje baza I tabela, podešavanje engine-a, kreiranje, brisanje korisnika, izvršavanje SQL upita I mnoge druge.
&lt;br /&gt;

&lt;br /&gt;
U unix okruženju moguća je administracija MySQL servera direktno iz komandne linije korišćenjem mysql klijenta.
&lt;br /&gt;

&lt;br /&gt;
Popularnost ovog DBMS-a je sve veća, s’obzirom da je besplatan i da je konkurentan sa ostalim DBMS-ovima po kriterijumu funkcionalnosti i performansi. Veoma se dobro pokazao u kombinaciji sa PHP-om. Popularnost ove kombinacije se može pripisati open source prirodi oba proizvoda te postojanjem besplatnih verzija za sve glavne funkcionalnosti, što olakšava njihovo učenje i korišćenje kako početnicima tako i profesionalcima.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Optimizacija sistema
&lt;br /&gt;

&lt;br /&gt;
Najbitniji faktor optimizacije jednog sistema leži u osnovi njegovog projektovanja. Moramo unapred znati kakvu vrstu procesiranja podataka naš sistem obavlja i koje su njegove osnovne komponente, kao I šta u tom sistemu predstavlja “usko grlo”, kako bi znali gde traba izvršiti optimizaciju. Koreni neoptimalnosti, na koje najčešće ne možemo da utičemo leže u:
&lt;br /&gt;
•	Pretraživanje podataka na hard disku. Kod savremenih diskova ova vremena su ispod 10ms. Ovo vreme se postepeno smanjuje napretkom tehnologije. Optimizacija bi se ovde svela na distribuiranje podataka na više hard diskova.
&lt;br /&gt;
•	Čitanje i upis podataka. Kada se glava diska nalazi na željenoj poziciji, treba pročitati podatke. Kod novih diskova brzina čitanja je oko 20MB/s. Naravno da je lakše optimizovati pretraživanje podataka, jer možemo čitati podatke paralelno sa više diskova.
&lt;br /&gt;
•	Procesorsko vreme. Kada podatke imamo u memoriji, moramo da ih obradimo da bismo dobili željeni rezultat. 
&lt;br /&gt;
•	Propusni opseg memorije. Kada je procesoru potrebno više podataka nego što može da stane u njegov interni keš, propusni opseg glavne memorije postaje usko glo. Ovo nije uobičajen problem za većinu sistema, ali I o tome se treba voditi računa kada se žele vrhunske performanse.
&lt;br /&gt;
Ograničenja MySQL-a
&lt;br /&gt;
Kada koristimo MyISAM engine za smeštanje podataka, MySQL koristi ekstremno brz sistem zaključavanja tabela koji dozvoljava više čitaoca ili jednog pisca. Najveći problem sa ovim engine-om za smeštanje podataka se javlja kada imamo konstantne update-ove I spore select upite na jednoj tabeli. Ako je ovo problem sa određenim tabelama, poželjno je koristiti neki drugi engine za smeštanje podataka radi postizanja boljih performansi. To mou biti InnoDB, HEAP, NDB…
&lt;br /&gt;
MySQL može da radi sa transakcionim i netransakcionim tabelama. Ukoliko radimo sa netransakcionim tabelama dobičemo na brzini, ali neamo mogućnost da povratimo podatke u slučaju da nešto krene naopako sa operacijom koja se izvršava (npr ako se ona iznenadno prekina iz nekog razloga). U tu svrhu se može koristiti ključna reč IGNORE u kombinaciji sa INSERT ili UPDATE.
&lt;br /&gt;

&lt;br /&gt;
Projektovanje prenosivih aplikacija
&lt;br /&gt;
Zbog toga što svaki od DBMS implementira različite delove SQL standarda,  dosta je teško napraviti prenosivu(kompatibilnu) aplikaciju. Jednostavno je postići kompatibilnost sa prostim selelectima i insertima, ali što oni postaju komplikovaniji, to je teže zadržati kompatibilnost uz očuvanje performansi. Tako da ovde projektant mora da napravi kompromis između prenosivosti i performansi.
&lt;br /&gt;
Da bi kompleksna aplikacija bila prenosiva, pre početka samog projektovanja moramo da odlučimo sa kojim DBMS-ovima mora da bude kompatibilna, i da onda vidimo koje mogućnosti svaki od njih pruža. Možemo koristiti MySQL crash-me program da bi pronašli funkcije, tipove, i ograničenja DBMS-a.  Na primer korišćenjem crash-me programa, možemo dobiti informaciju da ne možemo da koristimo imena kolona duža od 18 karaktera ako želimo da radimo sa DB2 ili Informix-om.
&lt;br /&gt;
Crash-me i MySQL benchmark su nezavisni od konkretnoh DBMS-ova. Napisani su u Perl-u I koriste DBI interfejs. Korišćenje DBI interfejsa rešava mnoge probleme kompatibilnosti jer nudi metode pristupa koje su nezavisne od konkretnog DBMS-a.
&lt;br /&gt;
MySQL benchmark
&lt;br /&gt;
MySQL benchmark nam omogućava da predvidimo ponašanje i performanse operacija koje nam nudi ovaj DBMS. Izvorni kod benchmark-a je dostupan i nalazi se u sql-bench direktorijumu u bilo kojoj MySQL izvornoj distribuciji.
&lt;br /&gt;
Ovaj benchmark je jednonitni, tako da će uzeti minimalno vreme za izvršenje tražene operacije. U planu je implementacija višenitnog benchmarka koji će dati realniju sliku ponašanja sistema.
&lt;br /&gt;
Optimizacija SELECT upita
&lt;br /&gt;
Prvi faktor koji utiče na sve upite koji se izvršavaju jeste složenost korisnikovih privilrgija. Korišćenje jednostavnijih privilegija u GRANT upitu omogućava MySQL-u da optimizuje (redukuje) proveru privilegija kada kada korisnik izvršava upite. Na primer ako ne ograničavamo pristup na nivou tabela ili kolona, server ne mora da proverava tabelu privilegija tabela i tabelu privilegija kolona. Slično tome, ako ne postavimo ograničenja vezana za resurse, server ne mora da provrava korišćenje resursa.
&lt;br /&gt;
Tako ako imamo veliko opterećenje sistema sa dosta upita koji se vrlo frekventno izvršavaju, pojednostavljenje šeme privilegija može umnogome da optimizuje rad.
&lt;br /&gt;
Ako je problem vezan za specifične MySQL izraze ili funkcije, možemo primeniti tajming test korišćenjem BENCHMARK() funkcije iz mysql klijenta. Njena sintaksa je BENCHMARK(loop_count,expression). Povratna vrednost uvek nula, ali mysql štampa aproksimativnu procenu vremena izvršenja upita. Na primer;
&lt;br /&gt;
mysql&amp;gt; SELECT BENCHMARK(1000000,1+1);
&lt;br /&gt;
+------------------------+
&lt;br /&gt;
| BENCHMARK(1000000,1+1) |
&lt;br /&gt;
+------------------------+
&lt;br /&gt;
|                      0 |
&lt;br /&gt;
+------------------------+
&lt;br /&gt;
1 row in set (0.32 sec)
&lt;br /&gt;
Ovaj rezultat je dobijen na Pentium II 400MHz mašini, što pokazuje da MySQL može da izvrši 1.000.000 sabiranja za 0.32 sekunde na takvom sistemu.
&lt;br /&gt;
Sve MySQL funkcije su optimizovane do visokog nivoa, mada ima i nekih izuzetaka. BENCHMARK() je odlična alatka za lociranje funkcije koja pravi probleme u našim upitima.
&lt;br /&gt;
Optimizacija upita korišćenjem ključne reči  EXPLAIN
&lt;br /&gt;
EXPLAIN tbl_name
&lt;br /&gt;
Ili:
&lt;br /&gt;
EXPLAIN [EXTENDED | PARTITIONS] SELECT select_options
&lt;br /&gt;
Može se koristiti kao sinonim za DESCRIBE ili kao način da se dobiju informacije o tome kako MySQL izvršava SELECT upit:
&lt;br /&gt;
•	EXPLAIN tbl_name je sinonim za DESCRIBE tbl_name ili SHOW COLUMNS FROM tbl_name. 
&lt;br /&gt;
•	Kada izvršimo SELECT upit sa ključnom rečju EXPLAIN, MySQL prikazuje informacije prosleđene od strane optimizatora o planu izvršenja upita. To je objašnjenje kako MySQL procesira upit, uključujući i informacije o tome na koji način su tabele spojene, kojim redosledom…
&lt;br /&gt;
•	Konstrukcija EXPLAIN PARTITIONS je dostupna sa verzijom MySQL 5.1.5. Korisna je samo kada ispitujemo upite koji uključuju parcijalizovane tabele.
&lt;br /&gt;
Uz pomoć EXPLAIN, možemo videti gde su nam neophodni indeksi za brže izvršenje SELECT upita. Možemo takođe videti kada optimizator spaja tabele optimalnim redosledom, a kada ne. Možemo ga naterati da koristi redosled stajanja tabela u optimalnom redosledu. Da bi spajali tabele u redosledu navedenom u upitu, koristimo SELECT STRAIGHT_JOIN umesto SELECT.
&lt;br /&gt;
Ukoliko imamo problem da indeksi nisu korišćeni kada mi verujemo da trebaju, možemo pokrenuti ANALYZE TABLE za statistiku o kardinalnosti ključeva, što može dovesti do promene ponašanja optimizatora.
&lt;br /&gt;
Brzina SELECT upita
&lt;br /&gt;
Generalno, kada želimo da izvršenje našeg sporog SELECT … WHERE upita ubrzamo, prva stvar koju treba da proverimo jesu indeksi. Sve veze među tabelama treba da budu ostvarene korišćenjem indeksa. Možemo koristiti EXPLAIN da otkrijemo koji indeksi se koriste u našem SELECT upitu.
&lt;br /&gt;
Evo još nekih načina za ubrzanje upita nad MyISAM tabelama:
&lt;br /&gt;
•	Da bi pomogli MySQL-u da optimizuje upite, koristimo ANALYZE TABLE ili pokrećemo myisamchk-analyze nad tabelom pošto ona biva napunjena podacima.Ovo osvežava vrednost svakog indeksa koji ukazuje na više kolona koje imaju istu vrednost (za UNIQUE indekse je uvek jedan). MYSQL ovo koristi da odluči koji indeks da izabere pri spajanju dve tabele kada je spajanje bazirano na nekom izrazu koji nije konstanta. Takođe možemo koristiti SHOW INDEX FROM tbl_name da bi ispitali cardinalnost veze. myisamchk --description –verbose prikazuje informacije o indeksima takođe.
&lt;br /&gt;
•	Da bi sortirali podatke u zavisnosti odindeksa, koristimo myisamchk --sort-index --sort-records=1 (uz pretpostavku da želimo sortiranje po indeksu 1). Ovo je dobar način da ubrzamo izvršenje upita ukoliko imamo unique indeks pomoću kog želimo da pročitamo sve vrste u redosledu koji zavisi od tog indeksa. Kada prvi put sortiramo veliku tabelu na ovaj način, to može da potraje.
&lt;br /&gt;
Optimizacija WHERE klauzule
&lt;br /&gt;
Ovde će biti reči o optimizaciji WHERE klauzule. U primerima ćemo koristiti SELECT upite, ali ista logika važi i za DELETE i UPDATE upite.
&lt;br /&gt;
MySQL optimizator sa svakom novom verzijom postaje sve bolji, ali uvek ima mesta za optimalnije napisan upit, koji MySQL ne može da optimizuje bez naše pomoći.
&lt;br /&gt;
Evo nekih optimizacija koje MySQL čini kada je u pitanju WHERE klauzula:
&lt;br /&gt;
•	Uklanjanje suvišnih zagrada: 
&lt;br /&gt;
o	   ((a AND b) AND c OR (((a AND b) AND (c AND d))))
&lt;br /&gt;
o	-&amp;gt; (a AND b AND c) OR (a AND b AND c AND d)
&lt;br /&gt;
•	Evaluacija konstanti: 
&lt;br /&gt;
o	   (a&amp;lt;b AND b=c) AND a=5
&lt;br /&gt;
o	-&amp;gt; b&amp;gt;5 AND b=c AND a=5
&lt;br /&gt;
•	Uklanjanje suvišnih uslova:
&lt;br /&gt;
o	   (B&amp;gt;=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
&lt;br /&gt;
o	-&amp;gt; B=5 OR B=6
&lt;br /&gt;
•	COUNT(*) nad jednom tabelom bez WHERE klauzule biva direktno pročitana iz MyISAM i MEMORY tabela. Ovo je takođe slučaj za bilo koji NOT NULL izraz kada radimo sa samo jednom tabelom.
&lt;br /&gt;
•	Brza detekcija nevalidnih izraza. MySQL brzo detektuje da neki SELECT upit neće vratiti podatke.
&lt;br /&gt;
•	HAVING je integrisan sa WHERE ako ne koristimo GROUP BY ili agregacione funkcije (COUNT(), MIN(), i slične).
&lt;br /&gt;
•	Za svaku tabelu u spoju, jednostavniji WHERE je konstruisan da bi se dobila što brža evaluacija i što brže preskakanje nepotrebnih vrsta.
&lt;br /&gt;
•	Konstantne tabele bivaju pročitane pre bilo kojih drugih tabela u upitu. Konstantne tabele su:
&lt;br /&gt;
o	Prazna tabela ili tabela sa jednom vrstom.
&lt;br /&gt;
o	Tabela koja je korišćena u WHERE klauzuli na PRIMARY KEY ili UNIQUE indeksu.
&lt;br /&gt;
Sve tabele u narednom primeru su korišćene kao konstantne: 
&lt;br /&gt;
SELECT * FROM t WHERE primary_key=1;
&lt;br /&gt;
SELECT * FROM t1,t2
&lt;br /&gt;
  WHERE t1.primary_key=1 AND t2.primary_key=t1.id;
&lt;br /&gt;
•	Najbolja kombinacija za spajanje tabela se dobija pokušavanjem svih mogućnosti. Ako sve kolone u ORDER BY i GROUP BY klauzuli pripadaju istoj tabeli, ta tabela treba da bude prva u spoju.
&lt;br /&gt;
•	Ako postoji ORDER BY klauzula i druga GROUP BY klauzula, ili ako ORDER BY ili GROUP BY klauzula sadrži kolone tabela koje nisu prve u redu za spajanje, kreira se privremena (temporary) tabela.
&lt;br /&gt;
•	Ako koristimo SQL_SMALL_RESULT opciju, MySQL koristi privremenu tabelu koja se nalazi u glavnoj memoriji.
&lt;br /&gt;
•	Pre izbacivanja vrsta, one koje ne zadovoljavaju HAVING klauzulu bivaju odbačene.
&lt;br /&gt;
Evo primera nekih veoma brzih upita: 
&lt;br /&gt;
SELECT COUNT(*) FROM tbl_name;
&lt;br /&gt;

&lt;br /&gt;
SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
&lt;br /&gt;

&lt;br /&gt;
SELECT MAX(key_part2) FROM tbl_name
&lt;br /&gt;
  WHERE key_part1=constant;
&lt;br /&gt;

&lt;br /&gt;
SELECT ... FROM tbl_name
&lt;br /&gt;
  ORDER BY key_part1,key_part2,... LIMIT 10;
&lt;br /&gt;

&lt;br /&gt;
SELECT ... FROM tbl_name
&lt;br /&gt;
  ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;
&lt;br /&gt;
MySQL rešava sledeće upite korišćenjem samo stabla indeksa: 
&lt;br /&gt;
SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
&lt;br /&gt;

&lt;br /&gt;
SELECT COUNT(*) FROM tbl_name
&lt;br /&gt;
  WHERE key_part1=val1 AND key_part2=val2;
&lt;br /&gt;

&lt;br /&gt;
SELECT key_part2 FROM tbl_name GROUP BY key_part1;
&lt;br /&gt;
Sledeći upiti koriste indekse da dobave vrste u sortiranom redosledu, bez dodatnog prolaska algoritma za sortiranje:
&lt;br /&gt;
SELECT ... FROM tbl_name
&lt;br /&gt;
  ORDER BY key_part1,key_part2,... ;
&lt;br /&gt;

&lt;br /&gt;
SELECT ... FROM tbl_name
&lt;br /&gt;
  ORDER BY key_part1 DESC, key_part2 DESC, ... ;
&lt;br /&gt;

&lt;br /&gt;
Optimizacija LEFT JOIN i RIGHT JOIN upita
&lt;br /&gt;
Optimizator spoja izračunava redosled u kome tabele trebaju biti spajane. Možemo sami nametnuti redosled spajanje korišćenjem by LEFT JOIN or STRAIGHT_JOIN i na taj način pomoći optimizatoru da svoj deo posla obavi mnogo brže, zato što je potrebno manje permutacija tada proveriti.Primetimo da ako imamo upit sledećeg tipa:
&lt;br /&gt;
SELECT *
&lt;br /&gt;
  FROM a JOIN b LEFT JOIN c ON (c.key=a.key) 
&lt;br /&gt;
  LEFT JOIN d ON (d.key=a.key)
&lt;br /&gt;
  WHERE b.key=d.key;
&lt;br /&gt;
MySQL radi “full scan” nad tabelom b, zato što LEFT JOIN zahteva da je pročita pre d.
&lt;br /&gt;
Optimizacija bi se u ovo slučaju svela na obrtanje redosleda u kome navodimo a i b u FROM klauzuli:
&lt;br /&gt;
SELECT *
&lt;br /&gt;
  FROM b JOIN a LEFT JOIN c ON (c.key=a.key) 
&lt;br /&gt;
  LEFT JOIN d ON (d.key=a.key)
&lt;br /&gt;
  WHERE b.key=d.key;
&lt;br /&gt;
Za LEFT JOIN, ako je uslov u WHERE klauzuli uvek false za generisanu NULL vrstu, LEFT JOIN se pretvara u običan JOIN. Na primer, uslov u WHERE klauzuli će biti false u sledećem upitu ako t2.column1 bude NULL:
&lt;br /&gt;
SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;
&lt;br /&gt;
Zato je sigurnije da napišemo klasičan join:
&lt;br /&gt;
SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;
&lt;br /&gt;
Ovo može biti brže zato što MySQL može koristiti tabelu t2 pre t1 ako to daje bolje rezultate kod planiranja upita. Da bi nametnuli specifičan redosled koristimo STRAIGHT_JOIN.
&lt;br /&gt;

&lt;br /&gt;
Optimizacija INSERT upita
&lt;br /&gt;
Vreme potrebno za unos vrste u tabelu je determinisano sledećim faktorima, gde brojka u zagradi označava aproksimaciju proporcije ukupnog vremena:
&lt;br /&gt;
•	Povezivanje: (3) 
&lt;br /&gt;
•	Slanje upita serveru: (2) 
&lt;br /&gt;
•	Parsiranje upita: (2) 
&lt;br /&gt;
•	Unos vrste: (1 × veličina vrste) 
&lt;br /&gt;
•	Unos indeksa: (1 × broj indeksa) 
&lt;br /&gt;
•	Zatvaranje: (1) 
&lt;br /&gt;
Veličina tabele usporava unos indeksa za logN, indeksi implementirani pomoću B-stabla.
&lt;br /&gt;
Možemo koristiti sledeće metode da optimizujemo INSERT upite: 
&lt;br /&gt;
•	Ako unosimo više vrsta sa istog klijenta u isto vreme, koristimo INSERT upite sa više VALUES listi da bi uneli više vrsta istovremeno. Ovo je u većini slučajeva nekoliko puta brže od korišćenja odvojenih INSERT upita za svaku vrstu.
&lt;br /&gt;
•	Ako dodajemo podatke u nepraznu tabelu, možemo koristiti bulk_insert_buffer_size promenljivu da učinimo unos podataka bržim.
&lt;br /&gt;
•	Ako više klijenata unosi mnogo vrsta, možemo dobiti ubrzanje korišćenjem INSERT DELAYED konstrukcije.
&lt;br /&gt;
•	Sa MyISAM tabele, možemo koristiti konkurentne inserte da bi dodavali vrste za vreme izvršenja SELECT upita.
&lt;br /&gt;
•	Kada učitavamo tabele iz tekstualne datoteke, koristimo LOAD DATA INFILE. Ovo je obično oko 20 puta brže od INSERT upita.
&lt;br /&gt;

&lt;br /&gt;
Optimizacija UPDATE upita
&lt;br /&gt;
Update upiti su optimizovani kao i SELECT upiti, sa dodatkom za upis. Brzina pisanja zavisi od količine podataka koje osvežavamo i broja indeksa koje osvežavamo. Indeksi koji ostaju nepromenjeni nisu obuhvaćeni UPDATE operacijom.
&lt;br /&gt;
Drugi način da dobijemo brze update-ove je da ih čuvamo i onda uradimo više njih odjednom kasnije. Izvršenje više update-ova odjednom je mnogo brže od pojedinačnog izvršenja svakog od njih ako pritom vršimo zaključavanje tabela. 
&lt;br /&gt;
Za MyISAM tabele koje korisre dinamički format vrsti, update-ovanje vrste sa povećanjem njene dužine, može je podeliti na dve vrste. Ako ovo činimo često, veoma je važno da koristimo OPTIMIZE TABLE konstrukciju.
&lt;br /&gt;
Optimizacija DELETE upita
&lt;br /&gt;
Vreme potrebno za brisanje vrste je proporcionalno broju indeksa. Da bi obrisali vrste što brže, možemo povećati veličinu keša ključeva korišćenjem key_buffer_size sistemske promenljive.
&lt;br /&gt;
Ostali načini optimizacije
&lt;br /&gt;
Evo još nekoliko načina optimizacije u MySQL-u: 
&lt;br /&gt;
•	Korišćenje perzistentne(stalne) konekcije na bazu ubrzava sve operacije sa bazom, jer nemeamo gubljenje resursa I vremena na povezivanje, a to je jedna od zahtevnijih operacija. Ako pak ne možemo da koristimo perzistentnu konekciju I stalno inicijalizujemo mnogo novih konekcija ka bazi, možemo izmeniti vrednost thread_cache_size sistemske promenljive.
&lt;br /&gt;
•	Treba izbegavati komplikovane SELECT konstrukcije nad MyISAM tabelama koje se frekventno update-uju, da bismo izbegli probleme sa zaključavanjem koji se javljaju između čitaoca i pisca.
&lt;br /&gt;
•	Replikacija može poboljšati neke performanse. Možemo distribuirati klijentovo pretraživanje na replikacione servere da bi podelili protok podataka. Da bismo izbegli usporenje mastera dok pravi backuo-ove, možemo ih praviti korišćenjem slave servera.
&lt;br /&gt;
•	Da bi popravili rezultate koji se dobijaju korišćenjem ARCHIVE tabela, možemo koristiti OPTIMIZE TABLE.
&lt;br /&gt;
•	Za MyISAM tabelekoje se često menjaju, možemo pokušati da izbegnemo sve tipove kolona promenljive dužine(VARCHAR, BLOB, and TEXT). Ovakve tabele koriste dinamički format za vrste, što je kritično kod frekventnog update-a.
&lt;br /&gt;
•	Možemo koristiti INSERT LOW_PRIORITY kada želimo veći prioritet da damo SELECT upitima.
&lt;br /&gt;
•	Korišćenjem SELECT HIGH_PRIORITY možemo postići da preskočimo klijentski upis koji stoji u redu čekanja na izvršenje i momentalno izvršimo naš SELECT. LOW_PRIORITY i HIGH_PRIORITY uzimaju efekta samo kod engine-a za smeštanje podataka koji koriste samo zaključavanje na nivou tabela (MyISAM, MEMORY, MERGE).
&lt;br /&gt;
•	Korišćenje LOAD DATA INFILE za velike količine podataka je mnogo brže od INSERT upita.
&lt;br /&gt;
•	Korišćenje AUTO_INCREMENT polja je korisno, tako da svaka vrsta može biti identifikovana jedinstvenom vrednošću.
&lt;br /&gt;
•	Slike I drugi binarni sadržaji mogu biti sačuvani kao fajlovi. Zato treba čuvati samo adrese (putanje) do njih na serveru, a ne sadržaj celih fajlova u bazi. Većina Web servera je bolja u keširanju fajlova od samog DBMS-a, tako da je korišćenje fajlova generalno brže.
&lt;br /&gt;
Optimizacija baze podataka je veoma kompleksan zadatak, zato što zahteva razumevanje principa rada celokupnog sistema. Mada je moguće primeniti neke loičke optimizacije sa malo osnovnog znanja o sistemu ili aplikaciji koju želimo optimizovati. Jedno je sigurno, što bolju optimizaciju želimo, to više znanja moramo posedovati.
&lt;br /&gt;

&lt;br /&gt;
Ovde sam pokušao da objasnim i dam primer različitih načina optimizacije u MySQL-u. Naravno, uvek postoji način da sistem postane brži, potrebno je eksperimentisati i dublje proučavati sam sistem.</description>
	<pubDate>Sun, 01 Jul 2007 19:45:24 +0100</pubDate>
</item>
<item>
	<title>Kako dizajnirati bazu podataka</title>
	<link>https://www.mycity.rs/Baze-podataka/Kako-dizajnirati-bazu-podataka.html</link>
	<guid>https://www.mycity.rs/?p=498518</guid>
	<author>nobody@mycity.rs (beli0135)</author>
	<description>Mali trikovi u radu sa bazama.
&lt;br /&gt;

&lt;br /&gt;
Ovaj clanak je namenjen i pocetnicima i iskusnijim programerima, pa je preporuka da se procita.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;1. Dizajn baze
&lt;br /&gt;
==============&lt;/span&gt;
&lt;br /&gt;
Prvo se postavlja pitanje za cega ce program da sluzi? Da li je to licna bazica podataka, tipa kataloga CD-ova, filmova itd, ili je to komercijalni program?
&lt;br /&gt;
U slucaju da je licna baza, lokalne baze tipa Access, Paradox, DBaseIII, AbsoluteDB, pa cak i FlatFile su odlicne za taj posao: Lako prenosive i male.
&lt;br /&gt;

&lt;br /&gt;
Medjutim, to nije dobro za komercijalne programe, ma kako firma bila mala ili mali broj kompjutera imala. Firme imaju tendenciju da se zatvaraju i da se shire. Skoro nikad ne ostaje na istom. Ako se shire, brzo ce i da raste broj kompjutera koji pristupa bazi, eventualno i razlicite lokacije u zemlji, pa cak i na planeti.
&lt;br /&gt;
Lokalne baze tu ne rade posao. Mora se instalirati server.
&lt;br /&gt;

&lt;br /&gt;
Ako firma vec ima server baze, i obavezuje vas da ga koristite, onda nemate izbora. Medjutim, ako su do sada imali lokalnu bazu ili vam uopste ne diktiraju uslove kakav server moze da bude. Onda je izbor na vama.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Klasicne zamke:&lt;/span&gt;
&lt;br /&gt;
----------------
&lt;br /&gt;
1. Ostaviti klijenta na lokalnoj bazi koju vec koristi
&lt;br /&gt;
2. Praviti program za moderniju lokalnu bazu 
&lt;br /&gt;
3. Ostaviti istu strukturu baze i vecinu tabela
&lt;br /&gt;
4. Ostaviti ista pravila (Business rules) koja su vazila u starom programu, bez istrazivanja da li su ona uopste ispravna. 
&lt;br /&gt;
5. &amp;quot;Ja sam navikao tako da radim&amp;quot; uopste ne znaci da je to i pravilno. Treba klijentu objasniti implikacije, a ne prihvatiti zdravo za gotovo, i naci resenje koje je pravilno i prihvatljivo.
&lt;br /&gt;

&lt;br /&gt;
Sto se samog dizajna tice, obicno ide pravilo: nikad ne stavljaj tekstualno polje, koje je moguce zameniti drugom tabelom i vezati ga preko integer, kljuc polja.
&lt;br /&gt;
Serveri baza imaju tendenciju da se usporavaju, ne u zavisnosti od broja tabela, broja zapisa i megabajta/gigabajta, nego ne pravilnim odabirom polja, losim indeksiranjem itd.
&lt;br /&gt;

&lt;br /&gt;
Mali primer:
&lt;br /&gt;
Ako imate tabelu od 3 polja, ID, datum i status (text), u koji cete upisivati slovima, recimo &amp;quot;Otisao&amp;quot;, &amp;quot;Dosao&amp;quot;... bice mnogo sporije nego da napravite 2 tabele, od kojih ce prva imati ID, Datum i ID polja statusa, a druga &amp;quot;status&amp;quot; tabela, imati svoj ID i opis statusa. Naravno, polja ID Status iz prve tabele, i primarni kljuc ID Status iz statusne tabele, bice u relaciji. Samim tim, treba kreirati index na prvoj tabeli, ka tom polju.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;2.Kako kreirati tabele
&lt;br /&gt;
======================&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Svako ima neki svoj nacin na koji je navikao da kreira tabele i daje imena poljima. Razumljivo je, ali nije i najbolji nacin. To ste sigurno primetili ako ste prepravljali necju tudju bazu. Koliko ste ga samo psovali?
&lt;br /&gt;
Iskustvo od preko 20 godina je kreiralo jedan novi standard, koji se, moram priznati, najvise koristi u Brazilu. Elem, posto je zadnjih decenija, Brazil poznat kao najveci izvoznik tehnologije na planeti, treba shvatiti ove standarde krajnje ozbiljno.
&lt;br /&gt;
Sada cu vam navesti pravila koja se koriste kod nomenklature tabela i polja.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Pravilo 1: &lt;/span&gt;
&lt;br /&gt;
Tabela, uvek ima naziv onoga sta predstavlja, uvek u mnozini. (primer za artikle, tabela bi trebala da se zove &amp;quot;Artikli&amp;quot;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Pravilo 2:&lt;/span&gt;
&lt;br /&gt;
Nazivi polja uvek pocinju sa prefiksom od 3 slova, koje smisleno odgovara svojoj tabeli, ako je moguce. Iza prefiksa sledi &amp;quot;underscore&amp;quot; ( _ ), pa onda 3 slova koja oznacavaju tip podatka u polju. (za tabelu &amp;quot;Artikli&amp;quot;, smislen prefix bi bio &amp;quot;ART_&amp;quot; ili &amp;quot;ATK_&amp;quot;, &amp;quot;ARK_&amp;quot; ili nesto slicno). 
&lt;br /&gt;
Za 3 slova od tipa podataka cu objasniti detaljnije u nastavku.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Pravilo 3:&lt;/span&gt;
&lt;br /&gt;
Ime polja primarnog kljuca UVEK sadrzi ime tabele, ali u jednini. 
&lt;br /&gt;
(Za tabelu &amp;quot;Artikli&amp;quot;, polje primarnog kljuca bi izgledao &amp;quot;ART_CdiArtikal&amp;quot;)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Oznake tipova podataka&lt;/span&gt;
&lt;br /&gt;
-----------------------
&lt;br /&gt;

&lt;br /&gt;
Od ta 3 slova, prva sva slova su &amp;quot;Upotreba&amp;quot;, a zadnje je sam tip.
&lt;br /&gt;
(ovde iznosim najcesce koriscene)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Cdi&lt;/span&gt; = Code, Integer (ova polja su obicno primarni i sekundarni kljucevi)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Cos&lt;/span&gt; = Code, String  (tekstualno polje koje ima zadatak da prikaze tekstualnu identifikaciju, recimo neke opreme ili string oznaku - ona se obicno ne indexiraju)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Dss&lt;/span&gt; = Description, String
&lt;br /&gt;
ovde ima malo grananje. Ako je aplikacija multijezicka, obicno se koristi, SAMO za polja koja podlezu promeni usled jezika: D1s, D2s, D3s.... gde su 1,2,3 razliciti jezici
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Dsb&lt;/span&gt; = Description, BLOB / IMAGE
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Nui&lt;/span&gt; = Number, integer  (ova polja se nikad ne indeksiraju)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Nus&lt;/span&gt; = Number, string representation
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Vln&lt;/span&gt; = Value, number (double precision)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Qti&lt;/span&gt; = Quantity, integer
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Qtn&lt;/span&gt; = Quantity, number (double)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Dti&lt;/span&gt; = Date, integer (obicno za cuvanje meseca (april = 4) ili godine)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Dtd&lt;/span&gt; = Date, DateTime
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Hrd&lt;/span&gt; = Hour, DateTime (obicno frakcionarni deo.... 0,6266262)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Pci&lt;/span&gt; = Percentage, integer
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Pcn&lt;/span&gt; = Percentage, number (double)
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Opl&lt;/span&gt; = Option, logic (boolean - mada je praksa pokazala da je bolje praviti integer polje koje ce da sadrzi 0 i 1, nego da sadrzi boolean vrednost. Ime je ostalo ne promenjeno)
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Zasto sve ovo?
&lt;br /&gt;
==================&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Iz vise razloga. Prvi je sto je vrlo ocigledno, na prvi pogled, cemu koje polje sluzi i kog je tipa. Drugi, lako se pamti da je primarni kljuc tabele Rafovi, RAF_CdiRaf (eventualno treba pogledati prefix) i samim tim se odmah zna koja tabela vezuje koju. Takodje, ko god da uzme da radi program od predhodnog programera, ne gubi vreme da razume sta je sta.
&lt;br /&gt;
Treca stvar je da se izbegava maksimalno stavljanje prefiksa u SQL upite.
&lt;br /&gt;

&lt;br /&gt;
Hajdemo da napravimo malu banalnu bazu artikala i polica. Necu navoditi tipove polja, ako pogledate listu iznad, bice vam jasno kako to radi.
&lt;br /&gt;

&lt;br /&gt;
Materijali (nek budu materiali od kog su napravljeni artikli, a moze da koristi i za police.. recimo tekstil, drvo, metal itd)
&lt;br /&gt;
MAT_CdiMaterijal, MAT_DssMaterijal
&lt;br /&gt;

&lt;br /&gt;
Artikli (informacije o artiklima)
&lt;br /&gt;
ART_CdiArtikal, ART_DssArtikal, ART_CosArtikal_Oznaka, ART_VlnCena, ART_CdiMaterijal
&lt;br /&gt;

&lt;br /&gt;
Police (informacije o policama)
&lt;br /&gt;
PLC_CdiPolica, PLC_CdiMaterijal, PLC_NuiVisina_Cm, PLC_NuiSirina_Cm
&lt;br /&gt;

&lt;br /&gt;
PolicexArtikli (Police X Artikli - dodeljujemo artikle na odredjenu policu)
&lt;br /&gt;
PLA_CdiPolicaxArtikal, PLA_CdiPolica, PLA_CdiArtikal
&lt;br /&gt;

&lt;br /&gt;
-----------------------
&lt;br /&gt;

&lt;br /&gt;
Sada zelimo da vidimo koji su artikli na kojoj (drvenoj) polici, i od kog je materijala koji artikal
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT PLC_CdiPolica, ART_CosArtikal_Oznaka, ART_DssArtikal, ART_VlnCena, MAT_DssMaterijal
&lt;br /&gt;
FROM PolicexArtikli
&lt;br /&gt;
INNER JOIN Police on &amp;#40;PLC_CdiPolica=PLA_CdiPolica&amp;#41;
&lt;br /&gt;
INNER JOIN Artikli on &amp;#40;ART_CdiArtikal = PLA_CdiArtikal&amp;#41;
&lt;br /&gt;
INNER JOIN Materijali on &amp;#40;MAT_CdiMaterijal = ART_CdiMaterijal&amp;#41;
&lt;br /&gt;
WHERE
&lt;br /&gt;
&amp;nbsp;PLC_CdiMaterijal = 2&amp;nbsp; --&amp;#40;drvo&amp;#41;
&lt;br /&gt;
&lt;/code&gt; 
&lt;br /&gt;

&lt;br /&gt;
Nadam se da je za sada jasno. Bice jos o bazama &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;font-style: italic&quot;&gt;Article published by GPL/GNU license&lt;/span&gt;&lt;/span&gt;</description>
	<pubDate>Fri, 02 Mar 2007 21:35:12 +0100</pubDate>
</item>
<item>
	<title>MS Access - korisni linkovi i primeri</title>
	<link>https://www.mycity.rs/Baze-podataka/MS-Access-korisni-linkovi-i-primeri.html</link>
	<guid>https://www.mycity.rs/?p=383293</guid>
	<author>nobody@mycity.rs (soxxx)</author>
	<description>Sajtovi posveceni MS Access-u:
&lt;br /&gt;

&lt;br /&gt;
functionx.com/access/
&lt;br /&gt;
databasedev.co.uk/
&lt;br /&gt;
utteraccess.com/
&lt;br /&gt;
mvps.org/access/
&lt;br /&gt;
blueclaw-db.com/
&lt;br /&gt;
accessfreak.net
&lt;br /&gt;
microsoft-accesssolutions.co.uk/
&lt;br /&gt;
access-programmers.co.uk/
&lt;br /&gt;
programmingmsaccess.com/
&lt;br /&gt;
fabalou.com/
&lt;br /&gt;
yaccess.com/ (Linkovi do sajtova, uglavnom nemackih, sadrze clanke, primere itd)
&lt;br /&gt;
databasejournal.com/features/msaccess/
&lt;br /&gt;
drewslair.com/desk/access_series/Intro.htm
&lt;br /&gt;
aspfree.com/c/b/Microsoft-Access/
&lt;br /&gt;
functionx.com/vbaccess/
&lt;br /&gt;
accessdb.info/
&lt;br /&gt;
home.bendbroadband.com/conradsystems/accessjunkie.html
&lt;br /&gt;
techtutorials.net/Applications/Microsoft_Office/MS_Access/index.shtml
&lt;br /&gt;

&lt;br /&gt;
Primeri, VBA kodovi, Tutorijali:
&lt;br /&gt;

&lt;br /&gt;
fgcu.edu/support/office2000/access/
&lt;br /&gt;
bcschools.net/staff/AccessHelp.htm
&lt;br /&gt;
databases.about.com/od/tutorials/
&lt;br /&gt;
databasedev.co.uk/downloads.html
&lt;br /&gt;
acc-technology.com/
&lt;br /&gt;
tutorials.beginners.co.uk/index/category/104
&lt;br /&gt;
pcvoyager.com/dir/database_access.html
&lt;br /&gt;
comeandread.com/access/
&lt;br /&gt;
programmingmsaccess.com/Samples/
&lt;br /&gt;
blueclaw-db.com/ms_access_examples/
&lt;br /&gt;
kayodeok.btinternet.co.uk/favorites/kbofficeaccess.htm
&lt;br /&gt;

&lt;br /&gt;
P.S. Naravno ako neko ima jos korisnih linkova neka postuje.
&lt;br /&gt;

&lt;br /&gt;
Pozdrav!!
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Dodatak:&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Ko se slabo snalazi sa Engleskim jezikom evo par linkova za nas maternji:)
&lt;br /&gt;

&lt;br /&gt;
Elitesecurity.org-Access forum
&lt;br /&gt;

&lt;br /&gt;
Forum Nove Tehnologije BIH-Access forum
&lt;br /&gt;

&lt;br /&gt;
Kompletna Kljiga na Srpskom jeziku:
&lt;br /&gt;
icentar.com/showthread.php?t=80
&lt;br /&gt;

&lt;br /&gt;
Sadrzaj knjige:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;01-Sta je baza podataka.
&lt;br /&gt;
02-Planiranje baze podataka. 
&lt;br /&gt;
03-Pokretanje i napustanje accessa.
&lt;br /&gt;
04-Upotreba pomoci u accessu. 
&lt;br /&gt;
05-Stvaranje nove baze podataka.
&lt;br /&gt;
06-Spremanje, zatvaranje i otvaranje baze podataka.
&lt;br /&gt;
07-Stvaranje tablice uz pomoc table wizarda.
&lt;br /&gt;
08-Stvaranje tablice bez pomoci carobnjaka.
&lt;br /&gt;
09-Unosenje promena u tablicu.
&lt;br /&gt;
10-Stvaranje odnosa izmedju tablica.
&lt;br /&gt;
11-Unosenje podataka u tablicu.
&lt;br /&gt;
12-Uredjivanje podataka u tablici.13-Formatiranje tablice.
&lt;br /&gt;
14-Stvaranje jednostavne forme. 
&lt;br /&gt;
15-Unosenje promena u formu.
&lt;br /&gt;
16-Stvaranje posebnih polja za unos podataka u formu.
&lt;br /&gt;
17-Dodavanje slika u formu.
&lt;br /&gt;
18-Pronalazenje podataka.
&lt;br /&gt;
19-Sortiranje,indeksiranje i filtriranje podataka.
&lt;br /&gt;
20-Stvaranje jednostavnog upita.
&lt;br /&gt;
21-Dizajniranje vlastitog upita.
&lt;br /&gt;
22-Prilagodjavanje upita.
&lt;br /&gt;
23-Stvaranje jednostavnog izvestaja.
&lt;br /&gt;
24-Prilagodjavanje izvestaja.
&lt;br /&gt;
25-Rad s povezanim tablicama.
&lt;br /&gt;
26-Stvaranje dijagrama.
&lt;br /&gt;
27-Upotreba accessa na internetu.
&lt;br /&gt;
28-PDeljenje baze podataka s drugim korisnicima. 
&lt;br /&gt;
29-Uvoz i izvoz podataka. 
&lt;br /&gt;
30-Sigurnosna pohrana podataka.
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;&lt;span style=&quot;color: white&quot;&gt;snoop: Izdvojio sam ovu temu jer ima korisne informacije za one koji zele da udju u kostac sa Accessom... : )&lt;/span&gt;&lt;/span&gt;</description>
	<pubDate>Fri, 14 Jul 2006 12:31:28 +0100</pubDate>
</item>
<item>
	<title>SQL tutorial by snoop</title>
	<link>https://www.mycity.rs/Baze-podataka/SQL-tutorial-by-snoop.html</link>
	<guid>https://www.mycity.rs/?p=369931</guid>
	<author>nobody@mycity.rs (m4rk0)</author>
	<description>0. lekcija - baza podataka i SQL jezik - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
1. lekcija - kreiranje tabele - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
2. lekcija - Insert - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
3. lekcija - Select - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
4. lekcija - Where - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
5. lekcija - Update - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
6. lekcija - Delete - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
A.
&lt;br /&gt;
Appendix 1 - Advanced SQL-ing - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;0. lekcija - baza podataka i SQL jezik&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Baza podataka sluzi da skladisti zeljene podatke, da te podatke organizuje po tabelama, i da ih zatim jednostavno i brzo dostavi 'klijentu' koji trazi te podatke...
&lt;br /&gt;

&lt;br /&gt;
Verovatno se pitate kako sve to funkcionise...
&lt;br /&gt;

&lt;br /&gt;
Postoji na jednoj strani server [gde se cuvaju podaci] - i postoji na drugoj strani klijent [koji trazi podatke od servera].
&lt;br /&gt;

&lt;br /&gt;
Komunikacija izmedju klijenta i servera se odvija SQL jezikom!
&lt;br /&gt;
SQL sintaksa je veoma jednostavna, i razumljiva.
&lt;br /&gt;
Dakle, klijent posalje 'upit' serveru - i server posalje klijentu odgovor - tj. zeljene podatke iz baze.
&lt;br /&gt;

&lt;br /&gt;
Evo jednog najprostijeg primera SQL upita [to se takodje zove i SQL query, ili samo query] :
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT ime FROM tabela_korisnici WHERE prezime='Stojkovic';
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
Server ce vratiti podatak klijentu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
Predrag
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Tako sve to funkcionise...
&lt;br /&gt;
Klijent trazi, ili salje, podatke... server obradi zahtev, i posalje odgovor klijentu...
&lt;br /&gt;

&lt;br /&gt;
--------
&lt;br /&gt;

&lt;br /&gt;
SQL se uglavnom primenjuje u programskim jezicima.
&lt;br /&gt;
Dakle, program trazi/salje podatke serveru, server obradi zahtev, i vrati rezultat programu.
&lt;br /&gt;
To je i svrha baza podataka, da brzo i efikasno skladisti podatke i radi sa njima.
&lt;br /&gt;

&lt;br /&gt;
U svakom programskom jeziku postoje funkcije/klase/komponente za povezivanje sa SQL bazom.
&lt;br /&gt;
Ako vam treba pomoc oko povezivanja - napisite ovde u kom programskom jeziku programirate, i koju SQL bazu koristite, pa cemo pokusati da resimo vas problem.
&lt;br /&gt;

&lt;br /&gt;
-------
&lt;br /&gt;

&lt;br /&gt;
Ja cu da radim po MySQL sintaksi, posto to jedino i poznajem..
&lt;br /&gt;
SQL sintakse se u principu ne razlikuju mnogo, tako da ce 99% toga raditi na svim SQL bazama.
&lt;br /&gt;

&lt;br /&gt;
Ako na svom racunaru nemate ni jednu bazu - instalirajte MySQL [linux korisnici to imaju] - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Uputstvo za instalaciju - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Bilo je dosta reci o MySQL instalaciji - tako da mozete pogledati ovaj forum [i eventualno PHP forum].
&lt;br /&gt;
Ako imate problema sa instalacijom, prijavite ih odmah... mada nije neophodno da imate instaliranu bazu... mozete i samo ovako teorijski da ucite, ali je ipak preporucljivo da sve to imate, i sami experimentisete, i sami radite sa bazom podataka [kada dovoljno naucite]...
&lt;br /&gt;
Pa da posle krenemo sa prvom lekcijom...
&lt;br /&gt;

&lt;br /&gt;
-------
&lt;br /&gt;

&lt;br /&gt;
O SQL jeziku i sintaksi - u sledecoj lekciji!
&lt;br /&gt;

&lt;br /&gt;
--------
&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;span style=&quot;color: red&quot;&gt;prev&lt;/span&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=8542&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;next&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;1. lekcija - kreiranje tabele&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
1) Organizacija podataka
&lt;br /&gt;

&lt;br /&gt;
Baza podataka se sastoji iz [vise] tabela...
&lt;br /&gt;
Dakle, podaci su u bazi organizovani po tabelama [a jedna baza moze imati mnogo tabela]
&lt;br /&gt;

&lt;br /&gt;
Same tabele sadrze podatke... u pitanju su obicne dvodimenzionalne tabele...
&lt;br /&gt;
Na vrhu su polja [kolone]... (na primer: Ime, Prezime, Godiste...) a na dole se redjaju podaci...
&lt;br /&gt;

&lt;br /&gt;
Primer:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
tabela1 &amp;#58;
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Prezime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Godiste&amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Predrag&amp;nbsp; &amp;nbsp; |&amp;nbsp; Stojkovic&amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Petar&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Petrovcic&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 84&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Jasmina&amp;nbsp; &amp;nbsp; |&amp;nbsp; Nikolic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 80&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
--------------------------------------------------------------
&lt;br /&gt;

&lt;br /&gt;
2) Tipovi polja
&lt;br /&gt;

&lt;br /&gt;
Polja [kolone] imaju svoj 'tip', tako da se tacno zna koji tip podataka moze da ide u koje polje.
&lt;br /&gt;
Na primer... u polju 'Godiste' moze da se upise samo broj... ne moze tekst... jer je polje predvidjeno samo za brojcane vrednosti.
&lt;br /&gt;

&lt;br /&gt;
Najcesce korisceni tipovi su (MySQL):
&lt;br /&gt;
INT - za brojeve
&lt;br /&gt;
REAL - za brojeve sa decimalama
&lt;br /&gt;
CHAR - za samo jedan karakter
&lt;br /&gt;
VARCHAR - za vise karaktera (do 255), s tim sto se navede broj karaktera za polje, recimo - VARCHAR(30)
&lt;br /&gt;
TINYTEXT - za tekst do 256 karaktera
&lt;br /&gt;
TEXT - za tekst do 65.000 karaktera
&lt;br /&gt;
BLOB - za 'binarni' sadrzaj [do 65k bajta]...
&lt;br /&gt;
MEDIUMTEXT, MEDIUMBLOB, BIGTEXT, BIGBLOB - sve isto, samo su polja veca...
&lt;br /&gt;
DATE - za datume
&lt;br /&gt;
TIME - za vreme...
&lt;br /&gt;

&lt;br /&gt;
Ako bismo hteli da kreiramo onu gore tabelu, iz primera... polja bi bila ovako 'organizovana' :
&lt;br /&gt;
Ime - bilo bi tipa TINYTEXT, ili eventualno VARCHAR(20) ako bi smo hteli da ustedimo prostor, posto ne postoje imena duza od 20 slova
&lt;br /&gt;
Prezime - isto kao i za Ime, TINYTEXT, ili VARCHAR(20)
&lt;br /&gt;
Godiste - tu cemo staviti INT, posto se upisuju samo brojcane vrednosti
&lt;br /&gt;

&lt;br /&gt;
Za Access korisnike: umesto INT staviti NUMBER, i umesto TINYTEXT staviti STRING
&lt;br /&gt;

&lt;br /&gt;
---------------------------------------------------------------
&lt;br /&gt;

&lt;br /&gt;
3) Kreiranje tabele
&lt;br /&gt;

&lt;br /&gt;
Kao sto smo rekli u prethodnoj lekciji... sve operacije sa bazom se obavljaju SQL komandama...
&lt;br /&gt;
Komanda za kreiranje tabele je CREATE TABLE.
&lt;br /&gt;

&lt;br /&gt;
SQL query, koji trebamo da posaljemo serveru, da bi kreirali bazu, je :
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
CREATE TABLE tabela1 &amp;#40;
&lt;br /&gt;
ime VARCHAR&amp;#40;20&amp;#41;,
&lt;br /&gt;
prezime VARCHAR&amp;#40;20&amp;#41;,
&lt;br /&gt;
godiste INT
&lt;br /&gt;
&amp;#41;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Server ce naravno poslati odgovor da je tabela &amp;quot;tabela1&amp;quot; uspesno kreirana...
&lt;br /&gt;

&lt;br /&gt;
Za one koji zele jos neke sitnice da saznaju (koje vama za sada nisu bitne) :
&lt;br /&gt;
1) &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
2) &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
3) &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
------------------------------------------------------------
&lt;br /&gt;

&lt;br /&gt;
4) Za one kojima je dosadno (i koji trce ispred vremena)
&lt;br /&gt;

&lt;br /&gt;
Ovo ispod cemo sve uciti posebno, u sledecim lekcijama...
&lt;br /&gt;

&lt;br /&gt;
Tabela se puni na sledeci nacin:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
INSERT INTO tabela1 &amp;#40;ime, prezime, godiste&amp;#41; 
&lt;br /&gt;
VALUES &amp;#40;'Mika', 'Kostic', 80&amp;#41;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
Opsirnije: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
Tabela se cita na sledeci nacin... primeri:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM tabela1;
&lt;br /&gt;
SELECT ime FROM tabela1;
&lt;br /&gt;
SELECT ime, godiste FROM tabela1;
&lt;br /&gt;
SELECT ime, prezime FROM tabela1;
&lt;br /&gt;
SELECT ime, prezime FROM tabela1 WHERE godiste&amp;gt;80;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
Opsirnije: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
Napominjem ponovo, ovo su samo primeri, da vam nije dosadno, za one koji zele da pozure sa lekcijama.
&lt;br /&gt;
Sve cemo ovo posebno objasniti, u sledecim lekcijama.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=8457&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=12734&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;next&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;2. lekcija - insert&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
INSERT je SQL naredba/upit za dodavanje novih zapisa u bazu podataka.
&lt;br /&gt;
sintaxa INSERT naredbe je sledeca:
&lt;br /&gt;

&lt;br /&gt;
INSERT INTO ime_tabele [(spisak_atributa)] VALUES (spisak_vrednosti_atributa);
&lt;br /&gt;

&lt;br /&gt;
atribut je ime kolone (u ovoj tabeli, atributi su: ime, prezime i godiste.
&lt;br /&gt;

&lt;br /&gt;
INSERT naredba dodaje spisak_vrednosti_atributa u ime_tabele. spisak_atributa je neophodan ako zelite da dodate samo neka polja. ako zelim da dodam samo ime i prezime, ali ne i godiste (pod uslovom da se za polje godiste dozvoljava da bude ne uneseno).
&lt;br /&gt;
SQL upit:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
INSERT INTO tabela1 &amp;#40;ime, prezime&amp;#41; VALUES &amp;#40;'Slobodan','Kasic'&amp;#41;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
ovaj sql upit ce generisati ovakvu tabelu
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
tabela1 &amp;#58;
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Prezime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Godiste&amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Predrag&amp;nbsp; &amp;nbsp; |&amp;nbsp; Stojkovic&amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Petar&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Petrovcic&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 84&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Jasmina&amp;nbsp; &amp;nbsp; |&amp;nbsp; Nikolic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 80&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Slobodan&amp;nbsp; &amp;nbsp;|&amp;nbsp; Kasic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
-------------------------------------------- 
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
SQL nije casesensitive i nije bitno da li cete napisati InSeRt/INSERT/INSeRt/insert, potpuno je svejedno, ali ja pisem velikim slovima radi preglednosti, nista vise.
&lt;br /&gt;
za atribute nikada ne stavljajte nesto kao text, string ili neki drugi tip polja, jer moze doci do greske pri izvrsavanju upita. malo je teze pronaci takvu gresku jer se ne nadas da je to problem &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.ako je tip polja/atributa string/text, u INSERT upitu (a i ostalih upita), morate da stavite ' i ', ako je u pitanju broj, onda je bez '.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=8542&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=13077&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;next&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;3. lekcija - select&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Select upit sluzi kako bi iz neke tabele 'izvadili' selektovali neki zapis ili vise zapisa po nekom odredjenom 
&lt;br /&gt;

&lt;br /&gt;
kriterijumu.
&lt;br /&gt;
sintaxta select upita je sledeca:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM ime_tabele &amp;#91;WHERE id=13&amp;#93;;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
znak * znaci da cemo iz tabele ime_tabele da selektujemo sve atribute, a ime_tabele je zapravo ime tabele u kojoj se 
&lt;br /&gt;

&lt;br /&gt;
nalaze ti selektovani atributi.
&lt;br /&gt;

&lt;br /&gt;
ako zelimo da iz tabele selektujemo sve korisnike koji su rodjeni 83 godine upit bi izgledao ovako:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM tabela1 WHERE Godiste=83;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
kao rezultat ovog upita, dobicemo ovakvu tabelu
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Prezime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Godiste&amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Predrag&amp;nbsp; &amp;nbsp; |&amp;nbsp; Stojkovic&amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
-------------------------------------------- 
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
ova tabela je virtuelna tabela i nalazi se u memoriji racunara.
&lt;br /&gt;

&lt;br /&gt;
bazu cemo azurirati (update jos nismo radili, za dva casa)
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
UPDATE tabela1 SET Godiste=83 WHERE Prezime='Kasic';
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
ovaj sql upit ce u vec postojeci zapis, dodati ono prazno poje koje je bilo (Godiste)
&lt;br /&gt;
cela tabela izgleda ovako:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Prezime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Godiste&amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Predrag&amp;nbsp; &amp;nbsp; |&amp;nbsp; Stojkovic&amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Petar&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Petrovcic&amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 84&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Jasmina&amp;nbsp; &amp;nbsp; |&amp;nbsp; Nikolic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 80&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Slobodan&amp;nbsp; &amp;nbsp;|&amp;nbsp; Kasic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
-------------------------------------------- 
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
kada se sada izvrsi isti onaj SELECT upit, virtuelna tabela ce biti ovakva:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Prezime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Godiste&amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Predrag&amp;nbsp; &amp;nbsp; |&amp;nbsp; Stojkovic&amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Slobodan&amp;nbsp; &amp;nbsp;|&amp;nbsp; Kasic&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
-------------------------------------------- 
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
sa ovakvim rezultatom upita, mozete da radite sta vam je volja. da ga sortirate ili ispisujete negde.
&lt;br /&gt;

&lt;br /&gt;
ako zelite da izracunate (izbrojite) koliko zapisa ima u tabeli sledeci sql upit resava to:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT count&amp;#40;*&amp;#41; FROM tabela1;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
rezultat upita ce biti broj 4.
&lt;br /&gt;

&lt;br /&gt;
postoje i malo komplikovaniji delovi SELECT upita (ugnjezdeni upiti)
&lt;br /&gt;

&lt;br /&gt;
hipoteticka situacija:
&lt;br /&gt;
imate dve tabele. u jednoj spisak CD/DVD, a u drugoj grupa u kojoj isti pripadaju.
&lt;br /&gt;
tabele ce ovako nekako izgledati:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
tabela&amp;#58; cddvd
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| Broj&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Grupa&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
--------------------------------------------
&lt;br /&gt;
| 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Worms&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Flash&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Linux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; VS.NET&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
-------------------------------------------- 
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
tabela&amp;#58; grupa
&lt;br /&gt;
-------------------------------
&lt;br /&gt;
| Broj&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
-------------------------------
&lt;br /&gt;
| 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Igre&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Programi&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; OSystems&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Programiranje |
&lt;br /&gt;
-------------------------------
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
ovako realizovana tabela sprecava neke od anomalija (anomalije pri brisanju, dodavanj i azuriranju)
&lt;br /&gt;

&lt;br /&gt;
mozgli smo to uraditi i sa jednom tabelom stim sto bi onda u atributu Grupa zapravo bilo ime grupe, ali to nije 
&lt;br /&gt;

&lt;br /&gt;
dobro. tako se ne radi zbog pomenutih anomalija (o njima kasnije)
&lt;br /&gt;

&lt;br /&gt;
ove dve tabele su spojene sa atributima Grupa (iz prve tabele) i Broj (iz druge tabele)
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
select cddvd.broj,cddvd.ime,grupa.ime from cddvd,grupa where cddvd.broj=grupa.broj;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
ovaj sql upit ce vam dati ono sto zelite.
&lt;br /&gt;
tabela je ovakva
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
tabela&amp;#58; virtuelana
&lt;br /&gt;
-----------------------------------------------
&lt;br /&gt;
| Broj&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Ime&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Grupa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
-----------------------------------------------
&lt;br /&gt;
| 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Worms&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Igre&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Flash&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; Programi&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Linux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; OSystems&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
| 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; VS.NET&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; Programiranje|
&lt;br /&gt;
-----------------------------------------------
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
sve sto vam je potrebno je tu, a jos plus ste izbegli anomalije. malo je sql upit komplikovaniji, ali nije problem.
&lt;br /&gt;

&lt;br /&gt;
znaci, ono sto zelite da se prikaze u tabeli, morate navesti posle SELECT-a. kada radite sa dve ili vise tabela, 
&lt;br /&gt;

&lt;br /&gt;
najbolje je da atribut pisete kao ime_tabele.ime_atributa da ne bi bilo zabune, a i da izbegnete greske, posebno ako 
&lt;br /&gt;

&lt;br /&gt;
u dve tabele imate isti atribut (kao u mom slucaju Broj).
&lt;br /&gt;
ovo je nesto sto ja najcesce koristim. ima tu jos ugnjezdenih f-ja. neke ne znam ni sam kako se koriste &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
npr.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT max&amp;#40;Broj&amp;#41; FROM grupa;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
vraca broj 4 posto je on najveci broj u atributu Broj
&lt;br /&gt;

&lt;br /&gt;
slucaj sa min(broj), vratice 1, kao najmanji.
&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=12734&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;span style=&quot;color: red&quot;&gt;next&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;4. lekcija - Where&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Posle malo duze pauze, nastavljam sa zapocetim poslom (za koji, BTW, jos nisam placen &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_mrgreen.gif&quot; alt=&quot;Mr. Green&quot; border=&quot;0&quot; /&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; border=&quot;0&quot; /&gt;).
&lt;br /&gt;
Potrudicu se da objasnim sto je moguce bolje.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
WHERE je klauzula uslova. Sa WHERE odreduje koje zapise cete brisati, selektovati, azurirati...
&lt;br /&gt;
Opciona je, ali ako postoji, mora da ide posle FROM some_table naredbe.
&lt;br /&gt;

&lt;br /&gt;
Primer 1.0
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM Table1 WHERE id=1;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovo prevedeno na obican jezik glasi: Izaberi sva polja iz tabele Table1 gde je id jednako 1.
&lt;br /&gt;
WHERE mozete da kombinujete sa logickim izrazima tipa AND, OR, NOT.
&lt;br /&gt;

&lt;br /&gt;
Primer 1.1 (Selektuje sve zapise iz tabele Table1 gde je id 1 i 4)
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM Table1 WHERE id=1 AND id=4;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Primer 1.1 (Selektuje sve zapise iz tabele Table1 gde je id ili 1 ili 4)
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM Table1 WHERE id=1 OR id=4;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
WHERE klauzula moze da sadrzi GROUP BY i ORDER BY klauzule.
&lt;br /&gt;
GROUP BY ime_atributa za grupisanje po tom atributu
&lt;br /&gt;

&lt;br /&gt;
ORDER BY ime_atributa za prikazivanje u opadajucem (DESC) ili rastucem (ASC) redosledu.
&lt;br /&gt;

&lt;br /&gt;
WHERE klauzula takodje moze da sadrzi i drugu SELECT klauzulu (ne u MySQLu).
&lt;br /&gt;
Ono sto je bitno kod ovakvog nacina pisanja SQL upita jeste da u jednom delu SQL upita izjednacite polje sa poljem iz drugog SQL upita (istog tipa) po kojem zelite da povezete te dve tabele.
&lt;br /&gt;

&lt;br /&gt;
Primer 1.2
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM Tabela1 WHERE id1=&amp;#40;SELECT id2 FROM Tabela2 WHERE UserName='NekiUser';&amp;#41;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj SQL upit ne radi nista pametno, ali sam samo hteo da pokazem syntaxu kako se pise.
&lt;br /&gt;

&lt;br /&gt;
Isti ovaj rezultat mozete postici na drugi nacin (ako neke baze podataka ne podrzavaju ugnjezdene upite kao mySQL npr.)
&lt;br /&gt;

&lt;br /&gt;
Primer 1.3
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM Table1,Table2 WHERE Table1.id1=Table2.id2 AND UserName='NekiUser';
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U ovom slucaju morate navesti ime_tabele.ime_atributa kako bi 'rekli' iz koje tabele da uzima podatke. Ovo isto moze i vama pomoci, posebno ako upit ne radi kako treba.
&lt;br /&gt;
Ako ne zelite da pisete ime_tabele.ime_atributa, onda morate da proverite da ime svakog polja iz obe tabele bude unikatno kako ne bi doslo do gresaka. (Ovo se ne preporucuje)
&lt;br /&gt;
Rezultat oba ova upita je isti.
&lt;br /&gt;

&lt;br /&gt;
Neke baze (MSSQL) kada poredite dva stringa u WHERE klauzuli, 'traze' da umesto = bude klauzula LIKE.
&lt;br /&gt;

&lt;br /&gt;
Bilo u slucaju koriscenja ugnjezdenog upita ili SQL upita iz Primera 1.3 kada SQL upit treba da vrati vise zapisa onda se umesto = koristi klauzula IN.
&lt;br /&gt;
U klauzuli WHERE mozete da kombinujete logicke operacije po ovoj semi:
&lt;br /&gt;
Argument1 OperatorUporedjivanja Argument2 i tako u nedogled &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.
&lt;br /&gt;

&lt;br /&gt;
WHERE u DELETE
&lt;br /&gt;

&lt;br /&gt;
Sama DELETE klauzula ne bi bila ni malo upotrebljiva ako ne bi imali WHERE klauzulu osim u slucaju da zelimo da obrisemo sve zapise iz tabele.
&lt;br /&gt;
Kada zelite neki odredjeni zapis (ili logicku kombinaciju zapisa) da obrisete iz tabele, u DELETE klauzulu morate da 'ukljucite' WHERE klauzulu.
&lt;br /&gt;

&lt;br /&gt;
Primer 1.4
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
DELETE FROM Table1 WHERE UserName='NekiTamoUser';
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj SQL upit ce obrisati citav jedan zapis iz tabele Table1 gde je atribut UserName = NekiTamoUser.
&lt;br /&gt;

&lt;br /&gt;
WHERE u UPDATE
&lt;br /&gt;

&lt;br /&gt;
Kao i DELETE, ni UPDATE ne bi bio upotrebljiv bez WHERE, osim ako ne zelimo da jednu promenu preslikamo na sve u tabeli.
&lt;br /&gt;
Ako zelite da azurirate samo jedan zapis ili logicku kombinaciju vise zapisa koristite WHERE unutar UPDATE klauzule.
&lt;br /&gt;

&lt;br /&gt;
Primer 1.5 (Azuriranje zapisa gde je id=14)
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
UPDATE SET ime_atributa=vrednost_atributa WHERE id=14;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Primer 1.6 (Azuriranje zapisa gde je id=14 i id=10 ukupno dve promene ime_atributa sa vrednost_atributa)
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
UPDATE SET ime_atributa=vrednost_atributa WHERE id=14 AND id=10;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Mislim da je to sve. Ako sam nesto zaboravio, dopunite me &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=13077&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17511&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;next&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;5. lekcija Update&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
O UPDATEu nema sta puno da se kaze. (bar koliko ja znam &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;).
&lt;br /&gt;
UPDATE klauzula sluzi za menjanje vrednosti jednog ili vise zapisa po nekom odredjenom kriterijumu.
&lt;br /&gt;

&lt;br /&gt;
Sadrzi WHERE uslov pomocu kojeg se menjaju neki atributi zapisa.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
UPDATE tabela SET ime_atributa1=vrednost_atributa1, ime_atributa2=vrednost_atributa2, ime_atributaN=vrednost_atributaN;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Posle spiska atributa cija vrednost treba da se promeni/izmeni, treba da stoji WHERE koji odredjuje koji zapis ce biti UPDATE-ovan.
&lt;br /&gt;
Ako izostavimo WHERE uslov, svi zapisi u tabeli ce biti isti.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
UPDATE tabela SET grupa='industrija koze' WHERE id=14;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj sql upit ce promeniti vrednost atributa grupa u industrija koze svim zapisima kojima je ID=14.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17024&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17512&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt; next&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;6. lekcija - Delete&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Kao i za UPDATE, ni o DELETE nema mnogo stosta da se kaze.
&lt;br /&gt;
DELETE sluzi za brisanje svih (time se ne brise definicija tabele, nego samo zapisi u njoj) zapisa ili samo selektovanih zapisa pomocu uslova.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
DELETE FROM tabela;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj sql upit brise sve zapise iz tabele.
&lt;br /&gt;
Da bi ipak obrisali samo zeljeni zapis, treba se dodati uslov WHERE.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
DELETE FROM tabela WHERE id=14;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj sql upit brise sve zapise ciji je ID=14.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17511&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17513&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;Appendix 1&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Advanced SQL-ing &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; border=&quot;0&quot; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Zamislite sledecu situaciju.
&lt;br /&gt;
Zelite da napravite nesto, da kazemo katalog knjiga (strucna literatura &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;).
&lt;br /&gt;
Izmedju ostalog, ta aplikacija treba da sadrzi i ime knjige i grupu u kojoj pripada radi lakseg pronalazenja iste.
&lt;br /&gt;
Vidjao sam da su neki sve te informacije (ime knjige, grupa, korisnik koji je uzeo knjigu...) dodavali u jednu tabelu. To nije dobro resenje jer se tu javljaju tri osnovne (i jedine) anomalije.
&lt;br /&gt;

&lt;br /&gt;
1. Pri dodavanju zapisa
&lt;br /&gt;
2. Azuriranju zapisa (Update)
&lt;br /&gt;
3. Brisanju zapisa
&lt;br /&gt;

&lt;br /&gt;
Stim sto jos pravite redudantne podatke (bespotrebno ponavljanje zapisa/podataka).
&lt;br /&gt;

&lt;br /&gt;
Da obajsnim svaku od anomalija.
&lt;br /&gt;

&lt;br /&gt;
1. Anomalija pri dodavanju zapisa:
&lt;br /&gt;
Uzmimo primer ove nase aplikacije za knjige.
&lt;br /&gt;
Ako imamo tabelu u kojoj su smesteni korisnici te biblioteke i tabelu u kojoj su smestene knjige.
&lt;br /&gt;
Radnik koji radi u knjizari, ne moze da doda zapise o nekom korisniku osim ako taj korisnik ne uzme neku knjigu.
&lt;br /&gt;
Zasto?
&lt;br /&gt;
Zato sto se to sve nalazi u jednoj tabeli, a zamislite kako bi izgledala ta jedna tabela kada bi pola zapisa bilo prazno i jos bi se i ponavljali neki. Stim sto se pri projektovanju baze, za neka polja stavlja da ne mogu da prime null vrednost. Drugim recima, MORATE da upisete nesto.
&lt;br /&gt;
Takvo polje bi bilo za ime knjige, grupu. Korisnik koji je uzeo knjigu je opciono.
&lt;br /&gt;
Kako bi se zapis dodao u bazu, sva tri polja moraju biti popunjena (pored onih ostalih).
&lt;br /&gt;

&lt;br /&gt;
Isto to vazi i za knjige. Ne mozemo dodati novu knjigu ako nemamo kome da je iznajmimo.
&lt;br /&gt;

&lt;br /&gt;
2. Anomalije pri azuriranju zapisa:
&lt;br /&gt;
Kada promenimo ime knjige (iz bilo kod razloga) npr. tek posle nekoliko godina &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; smo shvatili da nismo lepo napisali naslov knjige.
&lt;br /&gt;
Sve te izmene moramo da vrsimo onoliko koliko je neko puta uzimao knjigu sto moze da dovede do greske i samim tim ne validnih podataka.
&lt;br /&gt;

&lt;br /&gt;
To isto vazi i za grupe i korisnike......
&lt;br /&gt;

&lt;br /&gt;
3. Anomalije pri brisanju zapisa:
&lt;br /&gt;
Ako nam je neka knjiga slucajno ispala sa mosta &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt; i naravno unistena, ljudi u knjizari (pored naplate stete &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;) moraju i da obrisu knjigu koja je bila prva knjiga u biblioteci staroj nekoliko 
&lt;br /&gt;

&lt;br /&gt;
vekova &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.
&lt;br /&gt;
Da bi obrisali tu knjigu, moraju da brisu onoliko puta koliko je neko iznajmio tu knjigu. Samim tim (brisanjem) gube se informacije o korisnicima koji su uzimali tu knjigu.
&lt;br /&gt;

&lt;br /&gt;
Ista stvar je i sa grupama i korisnicima......
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
'Tri tabele' To the rescue &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Ipak, postoji nacin da se resi sve ovo.
&lt;br /&gt;
U nasem slucaju (knjige, grupe i korisnici) trebamo da napravimo tri tabele.
&lt;br /&gt;
Jedna tabela za spisak svih knjiga sa svim njenim informacijama (sta god vam padne na pamet).
&lt;br /&gt;
Tabela sa spiskom svih mogucih grupa (beletristika, kompjuteri, kompjuterska filozofija &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;...)
&lt;br /&gt;
I tabela sa spiskom korisnika koji bi trebalo da uzimaju te knjige sa svim njihovim informacijama.
&lt;br /&gt;
Kontrolni broj, broj dece...
&lt;br /&gt;

&lt;br /&gt;
U tabeli za knjige treba da se dodaju jos dva atributa (pored onih sa informacijama za knjige) za grupe i korisnike preko kojih ce se tabela knjige povezivati sa abelom grupe i tabelom 
&lt;br /&gt;

&lt;br /&gt;
korisnici.
&lt;br /&gt;

&lt;br /&gt;
Sve tri tabele imaju atribut ID koji je primarni kljuc. Ime knjige je obavezno polje (ono not null) kao i grupaID dok je korisnikID opciono.
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
knjige
&lt;br /&gt;
+----------------------------------------------------------+
&lt;br /&gt;
|&amp;nbsp; id&amp;nbsp; |&amp;nbsp; ime knjige&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; grupaID&amp;nbsp; &amp;nbsp; |&amp;nbsp; korisnikID&amp;nbsp; |
&lt;br /&gt;
+----------------------------------------------------------+
&lt;br /&gt;
|&amp;nbsp; 01&amp;nbsp; |&amp;nbsp; kompjuterska fil.&amp;nbsp; &amp;nbsp;|&amp;nbsp; 01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
|&amp;nbsp; 02&amp;nbsp; |&amp;nbsp; tom sojer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 02&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
|&amp;nbsp; 03&amp;nbsp; |&amp;nbsp; dig. integr. el.&amp;nbsp; &amp;nbsp; |&amp;nbsp; 03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
+----------------------------------------------------------+
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
grupe
&lt;br /&gt;
+-----------------------------+
&lt;br /&gt;
|&amp;nbsp; id&amp;nbsp; |&amp;nbsp; ime grupe&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------------------+
&lt;br /&gt;
|&amp;nbsp; 01&amp;nbsp; |&amp;nbsp; kompjuteri&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
|&amp;nbsp; 02&amp;nbsp; |&amp;nbsp; lektira&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
|&amp;nbsp; 03&amp;nbsp; |&amp;nbsp; elektronika&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------------------+
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
korisnici
&lt;br /&gt;
+----------------------------+
&lt;br /&gt;
|&amp;nbsp; id&amp;nbsp; |&amp;nbsp; ime korisnika&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
+----------------------------+
&lt;br /&gt;
|&amp;nbsp; 01&amp;nbsp; |&amp;nbsp; Mika&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
|&amp;nbsp; 02&amp;nbsp; |&amp;nbsp; Pera&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
|&amp;nbsp; 03&amp;nbsp; |&amp;nbsp; Sima&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+----------------------------+
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Tabele izgledaju ovako.
&lt;br /&gt;
Kada zelimo da dodamo novog korisnika, Sve njegove informacije dodajemo u tabelu korisnici.
&lt;br /&gt;
Kada zelimo da dodamo grupu, sve informacije o grupi dodajemo u tabelu grupe.
&lt;br /&gt;
Isto tako i za knjige.
&lt;br /&gt;

&lt;br /&gt;
Kada dodje neki korisnik (Mika npr.) i zeli da uzme knjigu 'kompjuterska filozofija', operater zapisuje te podatke u tabelu knjige i to za tu knjigu koju je taj korisnik uzeo.
&lt;br /&gt;

&lt;br /&gt;
Tabela izgleda ovako:
&lt;br /&gt;

&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
knjige
&lt;br /&gt;
+-------------------------------------------------------+
&lt;br /&gt;
|&amp;nbsp; id&amp;nbsp; |&amp;nbsp; ime knjige&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; grupaID&amp;nbsp; |&amp;nbsp; korisnikID&amp;nbsp; |
&lt;br /&gt;
+-------------------------------------------------------+
&lt;br /&gt;
|&amp;nbsp; 01&amp;nbsp; |&amp;nbsp; kompjuterska fil.&amp;nbsp; |&amp;nbsp; 01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; 01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
|&amp;nbsp; 02&amp;nbsp; |&amp;nbsp; tom sojer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; 02&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
|&amp;nbsp; 03&amp;nbsp; |&amp;nbsp; dig. integr. el.&amp;nbsp; &amp;nbsp;|&amp;nbsp; 03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
+-------------------------------------------------------+
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Vidimo da je Mika povezan sa knjigom koju je uzeo preko njegovog ID (iz tabele korisnici) i ID iz tabele knjige tako da se zna ko je uzeo koju knjigu.
&lt;br /&gt;

&lt;br /&gt;
Kad bi ovo trebali da ispisemo, dobili bismo ne bas razumne podatke (mislim ovo, 01, 03, 10003, 383....).
&lt;br /&gt;
Za ispisivanje pravih podataka, treba nam malo komplikovaniji SQL upit, ali radi posao.
&lt;br /&gt;

&lt;br /&gt;
Teorijski opis SQL upita:
&lt;br /&gt;
SQL upit treba da selektuje sve iz tabele knjige gde je grupaID=ID id tabele grupe I gde je korisnikID=ID iz tabele korisnici.
&lt;br /&gt;

&lt;br /&gt;
Prakticni opis SQL upita:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
SELECT * FROM knjige,grupe,korisnici WHERE knjige.grupaID=grupe.ID AND knjige.korisniciID=korisnici.ID;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Posle ovog SQL upita, normalno mozemo da pristupamo poljima i da ih ispisujemo gde treba.
&lt;br /&gt;
Ako niko nije uzeo ni jednu knjigu, SQL upit nece vratiti ni jedan zapis.
&lt;br /&gt;

&lt;br /&gt;
To bi bilo to. Za sada. Ako imate nekih pitanja, slobodno pitajte.
&lt;br /&gt;

&lt;br /&gt;
Izvinjavam se zbog neurednosti tabela. Primetio sam tek kada sam postovao ovde, a sada me mrzi da ih ispravljam &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.
&lt;br /&gt;
Update: Sredio sam tabele &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;.
&lt;br /&gt;

&lt;br /&gt;
Navigation
&lt;br /&gt;
----------------------------------
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/phpbb/viewtopic.php?t=17512&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;prev&lt;/a&gt; | &lt;span style=&quot;color: red&quot;&gt;...&lt;/span&gt;</description>
	<pubDate>Tue, 20 Jun 2006 18:02:08 +0100</pubDate>
</item>
<item>
	<title>Izasao MySQL 5!</title>
	<link>https://www.mycity.rs/Baze-podataka/Izasao-MySQL-5.html</link>
	<guid>https://www.mycity.rs/?p=260464</guid>
	<author>nobody@mycity.rs (Peca)</author>
	<description>Glavne novine u novoj verziji ove popularne baze podataka su:
&lt;br /&gt;
Stored procedures - napravite svoje funkcije [konacno!!!]
&lt;br /&gt;
Triggers - mozete napraviti 'Event' kada se nesto desi [recimo kada se insertuje nesto u tabelu, npr. kad je Godiste&amp;lt;83 da se izvrsi neki event]
&lt;br /&gt;
Views - kreirate 'prividnu' tabelu koja pokazuje ono sto zelite iz drugih tabela
&lt;br /&gt;

&lt;br /&gt;
Zaista impresivno...
&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
MySQL 5.0 is the most ambitious release in MySQL's history. MySQL 5.0 delivers the enterprise features the community has been asking for, including Stored Procedures, Triggers, Views, Information Schema, XA Distributed Transactions, and new Storage Engines. We also added Strict SQL Mode to eliminate some of the ‘Gotchas’. Plus, MySQL 5.0 builds on our reputation for Reliability, Performance, and Ease of Use.
&lt;br /&gt;

&lt;br /&gt;
inace, ugnjezdeni upiti postoje od verzije 4.1 &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_cool.gif&quot; alt=&quot;Cool&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;
i to veoma mocno odradjeni - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
sta da kazem, mysql je postao ozbiljna baza podataka...</description>
	<pubDate>Sun, 06 Nov 2005 19:18:35 +0100</pubDate>
</item>
<item>
	<title>Index SQL lekcija</title>
	<link>https://www.mycity.rs/Baze-podataka/Index-SQL-lekcija.html</link>
	<guid>https://www.mycity.rs/?p=146945</guid>
	<author>nobody@mycity.rs (snoop)</author>
	<description>0. lekcija - baza podataka i SQL jezik - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
1. lekcija - kreiranje tabele - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
2. lekcija - Insert - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; 
&lt;br /&gt;
3. lekcija - Select - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
4. lekcija - Where - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
5. lekcija - Update - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
6. lekcija - Delete - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
A.
&lt;br /&gt;
Appendix 1 - Advanced SQL-ing - &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Thu, 14 Apr 2005 00:09:31 +0100</pubDate>
</item>
<item>
	<title>SQL quiz</title>
	<link>https://www.mycity.rs/Baze-podataka/SQL-quiz.html</link>
	<guid>https://www.mycity.rs/?p=138591</guid>
	<author>nobody@mycity.rs (snoop)</author>
	<description>ako zelite da radite kviz iz SQL-a... i ovde su, kao i za ASP, pitanja elementarne prirode tako da sam i ovde zavrsio kviz sa 100% ucinkom...
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
mozete da radite kviz onako 'na suvo' pa posle kada odradimo sve sto je Peca rekao da treba, da probate ponovo i vidite razliku u naucenom znanju...
&lt;br /&gt;
imate i na doticnom sajtu tutotijale za SQL pa mozete i odatle uciti... kako god zelite
&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Sun, 27 Mar 2005 17:21:29 +0100</pubDate>
</item>
<item>
	<title>Instalacija PostgreeSQL na Windows-u</title>
	<link>https://www.mycity.rs/Baze-podataka/Instalacija-PostgreeSQL-na-Windows-u.html</link>
	<guid>https://www.mycity.rs/?p=95633</guid>
	<author>nobody@mycity.rs (bobby)</author>
	<description>PostgreeSQL za Windows se moze naci u dve varijante: kao native Windows verzija i kao Cygwin verzija. Za one koji neznaju, Cygwin je emulation layer koji emulira POSIX na Windows-u, sto omogucuje lakse prevodjenje i kompajliranje Linux programa na Windowsu.
&lt;br /&gt;

&lt;br /&gt;
Native verzija PostgreeSQL-a zahteva instalaciju na NTFS particiji i trenutno logovani user ne sme imati administratorska prava ukoliko se zeli pokrenuti servis.
&lt;br /&gt;
Cygwin verzija je malo teza za instalaciju, ali je nama vise odgovarala jer smo svi iz tima u kome radim koristili admin prava na svojim racunarima i nije nam nikako odgovaralo bilo sta drugcije.
&lt;br /&gt;

&lt;br /&gt;
Instalacija Cygwin verzije PostgreeSQL-a:
&lt;br /&gt;

&lt;br /&gt;
Skinuti Cygwin setup fajl sa &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
Odaberite najblizi server i predjite na ekran sa selekcijom paketa. Ovde se obicno svako zbuni: &quot;koji su paketi potrebni?&quot;
&lt;br /&gt;
BASE paket je obavezan. Pod DATABASE stiklirati PostgreeSQL za instalaciju (moja preporuka je da ne odaberete 8.0 verziju, verzije se biraju tako sto vise puta kliknete na fajl u instaleru). Instaler bi trebao da sam odabere sve ostale potrebne fajlove, medjutim desilo mi se da mi je naknadno bio potreban i paket DEVEL&amp;gt;pcre, tako da i njega selektujte.
&lt;br /&gt;
Kako skinuti samo potrebne fajlove (kako ne skidati suvisne fajlove):
&lt;br /&gt;
moj recept bi bio: prvo deselektuj sve, pa selektuj BASE, postgree, pcre i skroz dole postinstall.
&lt;br /&gt;
Sledeci korak je skidanje fajlova sa interneta i instalacija.
&lt;br /&gt;
Nakon zavrsetka instalacije potrebno je podesiti sistemske varijable.
&lt;br /&gt;
Udjite u ControlPanel&amp;gt;System&amp;gt;Advanced&amp;gt;Environment Variables
&lt;br /&gt;
Pod System Variables pronadjite varijablu PATH i kliknite dugme edit.
&lt;br /&gt;
Na kraju dodajte (nemojte slucajno obrisati postojece vrednosti, vec je potrebno DODATI) sledece: &quot;;c:\cygwin\bin\;c:\cygwin\usr\sbin&quot; (bez navodnika). Vrednosti su date za default cygwin folder, ukoliko je kod vas putanja drugcija - podesite vrednosti u gornjem izrazu.
&lt;br /&gt;
Potrebno je napraviti i jednu novu varijablu. Kliknite dugme NEW, ime varijable je: CYGWIN , vrednost: server.
&lt;br /&gt;
Sada je potrebno restartovati racunar.
&lt;br /&gt;
Nakon restarta pokrenite Cygwin shell (crno-zelena ikonica).
&lt;br /&gt;
U shellu kucajte sledece:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
cygserver-config&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- ovo ce pri sledecem restartu startovati cygserver koji ce opsluzivati bazu
&lt;br /&gt;
mkdir /var/pgsql&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- napravimo folder za bazu
&lt;br /&gt;
mkdir /var/pgsql/data&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - napravimo folder za podatke
&lt;br /&gt;
initdb -D /var/pgsql/data&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - inicijalizujmo bazu
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
Sledi restart. Nakon restarta cemo imati startovan cygserver pa mozemo da startujemo servis. Ulazimo ponovo u cygwin shell i kucamo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;postmaster -D /var/pgsql/data –i &amp;amp; &lt;/code&gt;
&lt;br /&gt;
Time se zavrsava moje kratko upustvo o instaliranju PostgreeSQL-a.
&lt;br /&gt;
Jedina mana ovog nacina je sto se posle svakog restarta mora startovati servis postmaster komandom kao gore, i jos to da se cygwin shell ne sme zatvarati jer to prekida i servis. Ovo nije veliki problem ukoliko imate poseban racunar koji sluzi samo kao server za bazu i koji se ne restartuje cesto.
&lt;br /&gt;

&lt;br /&gt;
EDIT: Zaboravio sam da vam eventualno (ukoliko nemate instalirano) moze zatrebati i sledece:
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;   - ODBC drajver
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;   - MDAC (meni na XP SP2 nije bio potreban_
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;   - ODBC za .NET framework</description>
	<pubDate>Fri, 03 Dec 2004 04:32:37 +0100</pubDate>
</item>
</channel>
</rss>

