MySQL¶
Šta je baza podataka?¶
Pod bazom podataka podrazumevaćemo softver kojim se upravlja kolekcijom podataka. Svaka baza podataka ima jedan ili više programskih interfejsa za kreiranje, pristupanje, upravljanje, pretraživanje i repliciranje podataka koje sadrži.
Postoji mnogo načina na koje se mogu organizovati baze podataka. Jedan od tih načina su relacione baze podataka kod kojih se podaci smeštaju u tabele koje su međusobno povezane ključevima (primarnim i stranim).
Sledeća slika ilustruje jednu takvu relacionu bazu koja se sastoji od tri tabele.

A ovako bi mogle da izgledaju popunjene tabele iz gornje baze:
Tabela user:
+----+-----------------------+-------------------------+-----------------------+----------+
| id | name | email |password | is_admin |
+----+-----------------------+-------------------------+-----------------------+----------+
| 4 | Jovan Jovanović Zmaj | jovanzmaj@gmail.com |822176b294c4a84456932b | 0 |
| 5 | Desanka Maksimović | desanka@gmail.com |8d8e4cd6e6e8db4cc5c3c1 | 0 |
| 6 | Ljubivoje Ršumović | ljubivoje@gmail.com |1d69560fb863a7dab032a7 | 0 |
| 7 | Oskar Davičo | oskar@gmail.com |82182f2fd234e3995e40ad | 0 |
| 8 | Miroslav Antić | miroslav@gmail.com |2f461bf3e4d394f341f06e | 0 |
| 9 | Laza Kostić | laza@gmail.com |973902af2b448872c6854b | 0 |
+----+-----------------------+-------------------------+-----------------------+----------+
Tabela poem:
+-----+---------+---------------------------+----------------------------------+
| id | user_id | title | content |
+-----+---------+---------------------------+----------------------------------+
| 2 | 4 | Ciganin hvali svoga konja | Gledaš, je li, moga konja,Gos... |
| 3 | 4 | Jututunska narodna himna | Bože sveti, podrži nam Knjaza... |
| 4 | 4 | Zimska pesma | Zima, zima, e pa šta je, Ako ...|
| 5 | 4 | Kaži mi kaži | Kaži mi, kaži, Kako da te zove...|
| 6 | 4 | Gaša | Gašo, Gašo, tužan Gašo, Šta će...|
| 9 | 5 | Strepnja | Ne, nemoj mi prići Hoću izdale...|
| 10 | 5 | Tražim pomilovanje | Tražim pomilovanje za zgužvane...|
+-----+---------+---------------------------+----------------------------------+
Tabela bio:
+----+---------+----------------------------------------------------------------+
| id | user_id | biography |
+----+---------+----------------------------------------------------------------+
| 85 | 4 | Jovan Jovanović, Zmaj Jova ili Čika Jova, je jedan od najplo...|
| 59 | 5 | <a href="https://sr.wikipedia.org/sr-ec/%D0%94%D0%B5%D1%81%D...|
| 81 | 6 | Рођен 1939. године у Љубишу на Златибору у породици Милесе и...|
| 83 | 9 | Laza Kostic je bio srpski knjizevnik, pesnik, advokat, polig...|
+----+---------+----------------------------------------------------------------+
Softver za upravljanje relacionim bazama podataka (poznat kao RDBMS) treba da omogući:
- Kreiranje baze sa tabelama, kolonama i indeksima.
- Da ostvaruje i održava veze među tabelama.
- Interpretira SQL upite u bazu i kombinuje podatke iz različitih tabela.
RDBMS Terminologija¶
Evo kratkog podsetnika na terminologiju koja se koristi kod relacionih baza podataka.
- Database − baza podataka je kolekcija međusobno povezanih tabela.
- Table − Tabela je matrica podataka. Relacione tabele su slične Excel tabelama.
- Column − Kolona sadrži podatke iste vrste, na primer u tabeli user, name je kolona koja sadrži imena korisnika.
- Row − Red je grupa povezanih podataka u tabeli (jedan red iz tabele).
- Primary Key − Primarni ključ je jedinstven i ne može se pojaviti dva puta u istoj tabeli. Pomoću ključa možemo pronaći jedan red tabele.
- Foreign Key − Strani ključ služi za povezivanje različitih tabela.
- Compound Key − Složeni ključ je ključ koji se sastoji od više kolona, jer jedna kolona nije dovoljna da jednoznačno odredi jedan red u tabeli.
MySQL baza podataka¶
MySQL je jedna od mnogin relacionih baza podataka (Oracle, MS-SQL, Postgres, …). MySQL je jedna od najpopularnijih baza podataka iz više razloga:
- MySQL je open-source softver, tako da se za njegovu upotrebu ne plaća ništa.
- MySQL ima večinu funkcija koje nude i najskuplje baze podataka.
- MySQL koristi standardni SQL jezik za upite u bazu.
- MySQL radi na svim operativnih sistema i sa svim programskih jezicima Python, PHP, PERL, C, C++, JAVA, itd.
- MySQL radi vrlo brzo i dobro čak i sa velikim skupovima podataka.
- MySQL podržava velike baze podataka do 50 miliona redova u tabeli.
Da bi smo koristili MySQL bazu podataka potrebno je da savladamo nekoliko stvari:
- Kako kreirati novu bazu.
- Kako pristupati bazi iz programskog jezika (u našem slučaju Python).
- Kako administrirati bazu.
Sve ove stvari, kao i mnoge druge, mogu se naći na sajtu MySQL.
Warning
Radićemo sa MySQL verzijom 14.14 Distrib 5.5.57, koja je instalirana na našim Cloud9 virtuelnim mašinama.
Iz obimne MySQL dokumentacije izdvajamo nekoliko najvažnijih delova koje ćemo proučavati:
- MySQL tutorijal: Tutorijal
- MySQL klijentski programi: MySQL Client Programs
- SQL jezik: SQL Statement Syntax
- Python i MySQL: Connector/Python Coding Examples
Za vežbanje ćemo koristiti Cloud9 razvojno okruženje.