340 likes | 479 Views
Šta je to što M ySQL čini posebnim ?. M ySQL je Open Source RSUBP . Dostupan je na Internetu i pri tome je besplatan. može se preuzeti i koristiti prema GPL licenci. Cena za komercijalnu upotrebu i podršku su niski .
E N D
Šta je to štoMySQLčini posebnim? • MySQLje Open Source RSUBP. • Dostupan je na Internetu i pri tome je besplatan. • može se preuzeti i koristiti prema GPL licenci. • Cena zakomercijalnu upotrebu i podršku su niski. • Tehnička podrška. MySQLje jedan od retkih open source projekata iza kojih stoje konkretne firme (MySQL AB) koja isključivoradi na održavanju i razvoju tog proizvoda.
Brzina i stabilnost. Svaki od sistema za baze podataka ima oblasti u kojima se posebno ističe. Jedna od ovih oblasti je brzina - široko je priznato da su odgovori ovog RDBMS u rangusanajbržim sistemima. • Upravo zbog brzine, MySQL često predstavlja izbor za internet aplikacije, gde se zbog velikog saobraćaja zahteva velika brzina odziva.
Funkcionalnost.MySQLnudi mnoštvo opcija koje odlikuju „velike” RSUBP kao što su: • podrška za ANSI SQL, kao i postojanje sopstvene ekstenzije • online backup, • replikacija, • podrška za SSL (Secure Sockets Layer), • integracija u skoro sva razvojna okruženja.
Lakoća upotrebe. • Distribucija MySQL-aje relativno mali paket, koji ne zahteva stotine i stotine megabajta kao drugi SUBP. • Razvojna filozofija ovog sistema fokusirana je na široku i laku upotrebljivost, gde se u paket ubacuju samo neophodne funkcije. Ovo ga čini relativno lakim za razumevanje, za instaliranje, podešavanje i administraciju.
Portabilnost. MySQL može da se pokrene na brojnim paltformama, a najvažnije su UNIX, Linux i Windows.
Rapidni razvoj. MySQL od verzije 5.0 uključuje podršku za: • transakcije, • replikaciju, • tekstualno pretraživanje i • RAID fajl-sisteme. • Trigere (okidače) • uskladištene procedure (stored procedures)
Programibilnost. • Ukoliko postojeći softver ne odgovara vašim potrebama, možete kreirati sopstveni. • Dostupni su interfejsi za veliki broj programskih jezika, kao što su: • C, • C++, • Perl, • PHP, • Python, • Java, • Ruby, itd.
- MySQL podržava mnoge vrste mehanizama za skladištenje podataka. - StEn-om se mogu skladištiti podaci na način koji najbolje odgovara zahtevima vaše aplikacije. - Svaki tip StEn-a ima svoje prednosti, nedostatke i određenu svrhu. • MyISAM Engine - nema stranih ključeva • Merge Engine- server log data • InnoDB Engine – zaključavanje na nivou vrsta i konstrukcije stranih ključeva. (google, yahoo...). Mogućnost obrade sa više simultanih zahtjeva za ažuriranjem. Transakcije. Automatski povratak podataka posle pada sistema (crash recovery) • Memory Engine - MEMORY tablice ne podržavaju VARCHAR i Blob, ili tekst podatke (fixedrecord-length format) • BDB Engine - Berkeley DB (BDB) prvi donosimogućnost izvođenja transakcijaMySQL-u • Federated Engine • Archive Engine - velika kompresija podataka koristeći zlibkompresionu biblioteku (http://www.zlib.net/), i dekompresija podataka u letu po zahtevu. • CSV Storage- (comma separated format), podaci odvojeni zarezom koriste ga (OpenOfficei Microsoft Office). • Blackhole Engine – radi slično MyISAM enginu • Example Engine
Indeksi • Indeksi u MySQL je jedna od korisnih dodataka. Indeksi u MySQL služe da se određeni zapis iz baze podataka brže pronađe. • MySQLindeks tipovi su: • Primary, • Unique, • Index, • Fulltext • Spatial(MyISAM)
PRIMARY KEY je polje u tablici koji jedinstveno identifikuje svaki zapis u toj tablici. Drugim rečima, sve vrednosti u indeksiranoj koloni moraju se dogoditi samo jednom. • Kao primarni indeks, UNIQUE indeks dopušta umetanje dvostruke vrednosti u odgovarajućem polju. Međutim, razlika između primarnog indeksa i jedinstvenog indeks je da je samo jedan primarni indeks je dozvoljen po tabeli, dok je više jedinstvenih indeksa dopušteno da se nađu u istoj tabeli.
INDEXiliKEYbez ograničenja se često nazivaju još i "normalni Indeksi", "Obični Indeks", ili “ne-jedinstvena indeks". Normalni Indeksi su najosnovniji indeksi koji nemaju ograničenja kao što su jedinstvenost. • Full-text indeks je jedan od više korisnih dodataka MySQL-u. O full-text indeksa, MySQL pretpostavlja da će se pretraživati ceo tekst i da će se koristiti za filtriranje kroz velike količine prirodnog jezika teksta. On pruža mehanizam za manipulaciju sa podacima koji daju rezultate koji najbolje odgovara korisničkom željenom rezultatu. Npr. ako korisnik želi da pronađe rečenicu poput "MySQL is the world's most popular open source database" reči ‘is’ i ‘the’ trebaju da igraju malu ili nikakvu ulogu u određivanju rezultata. U stvari, MySQL deli pretraživanje teksta u rečima, po default-u eliminiše bilo koju reč od tri ili manje od tri znaka. Međutim, takvo ponašanje može se menjati sa IN BOOLEAN MODE i WITH QUERY EXPANSION modifikatorima. • Spatialindeks tip za MyISAM tabele, MySQLmožestvoritiprostorneindeksekoristećisintaksusličnuonojzastvaranjeklasičnihindeksa, koristeći SPATIAL ključu reč. Koristi se za prostornu analizu geometrijskih objekata. (npr presek, sadržaj, podskup skupa koordinata kojim se predstavlja objekat)
Tipovi podataka uMySQL-u • Numerički tipovi podataka • NUMERIC ili DECIMAL (sinonim je DEC) • Čuvanje vrednosti sa pokretnim zarezom • Obično se koriste za rad sa novčanim vrednostima • Opseg vrednosti jednak je kao za brojeve s pokretnim zarezom dvostruke tačnosti • INTEGERi varijante • Standardni tip za celobrojne vrednosti • Smešta se u 4 bajta, što daje 232 vrednosti • Varijante: • TINYINT zauzima jedan bajt (28 mogućih vrednosti). Sinonim je BIT • SMALLINT zauzima dva bajta (216 mogućih vrednosti). • MEDIUMINT zauzima tri bajta (224 mogućih vrednosti). • BIGINT zauzima osam bajtova (264 mogućih vrednosti). • FLOAT, namenjen za rad s brojevima s pokretnim zarezom jednostruke tačnosti. • DOUBLE, namenjen za rad s brojevima s pokretnim zarezom dvostruke tačnosti. • Sininimi za ovaj tip su REAL i DOUBLE PRECISION
Tipovi podataka uMySQL-u • Znakovni i tekstualni tipovi podataka • CHAR • Čuvanje znakovnih vrednosti fiksne dužine • Maksimalna dužina podatka tipa CHAR je 255 znakova • VARCHAR • Čuvanje znakovnih vrednosti promenljive dužine • Maksimalna dužina podatka tipa VARCHAR je 255 znakova • TEXT i njegove varijante • TEXT– za skladištenje tekstualnih podatka dužih od 255 znakova • Varijante • TINYTEXT može sadržati najviše 255 (28-1) znakova ili bajtova • TEXTmože sadržati najviše 65535 (216-1) znakova ili bajtova (64 KB) • MEDIUMTEXT može sadržati najviše 224-1 znakova ili bajtova (16 MB) • LONGTEXT može sadržati najviše 232-1 znakova ili bajtova (4 GB)
Tipovi podataka uMySQL-u • Znakovni i tekstualni tipovi podataka (nastavak) • ENUM • omogućava zadavanje liste mogućih vrednosti. Polje ovog tipa može sadržati jednu vrednost iz nabrojanog skupa mogućih. • Tip podataka ENUM deklariše se na sledeći način: Pol enum(‘m’, ’z’) Pošto vrednost tipa ENUM može biti i NULL, moguće vrednosti polja pol su m,z,NULL il error • SET • Sličan tipu ENUM s tom razlikom što polja mogu sadržati i više vrednosti iz nabrojanog skupa mogućih
Tipovi podataka uMySQL-u • Datumski i vremenski tipovi podataka • DATE • Čuvanje datuma u ISO redosledu godina-mesec-dan • Datumi se prikazuju u formatu GGGG-MM-DD • TIME • Čuvanje podataka koji predstavljaju vreme • Prikazuju se u formatu ČČ:MM:SS • DATETIME • Čuvanje datuma i vremena u formatu godina-mesec-dan ČČ:MM:SS • TIMESTAMP • Ako u određenom redu zadate vrednost NULL u polje se upisuje vreme kada je red dodat tabeli ili kada je red poslednji put izmenjen • YEAR • Čuvanje podataka koji predstavljaju godine. • Moguće je zadati YEAR(2) ili YEAR(4), podrazumevano je YEAR(4) • YEAR(2) predstavlja opseg godina od 1970 do 2069.
Kreiranje baza podataka, tabela i indeksa u MySQL-u Razlikovanjemalihivelikihslova uMySQL-u • U rezervisanim rečima SQL jezika ne pravi se razlika između upotrebe malih i velikih slova. To je standardno u svim RDBMS. • Da li će MySQL praviti razliku između malih i velikih slova u imenima baza podataka i tabela zavisi od operativnog sistema pod kojim radite. Savet: definisati sopstveni standard koji treba dosledno primenjivati radi izbegavanja moguće konfuzije. • U MySQL-u se u imenima kolona, indeksa i alijasa nikada ne pravi razlika između malih i velikih slova.
Kreiranje baza podataka, tabela i indeksa u MySQL-u • Kreiranje baza podataka create database zaposleni; • Da je ova komanda uspešno izvršena, možete proveriti ako zadate komandu: show databases; • Biranje baze podataka • Pre kreiranja tabela ili bilo kakvih drugih promena u našoj bazi, potrebno je da naglasimo da ćemo sve promene raditi u bazi koja ima naziv “zaposleni” use zaposleni ; • Sada je izabrana (otvorena) baza podataka zaposleni i za sve akcije koje izvršimo podrazumevaće se da se odnose na tu bazu podataka.
Kreiranje baza podataka, tabela i indeksa u MySQL-u • Kreiranje tabela CREATE TABLEnazivtabele (definicije kolona tabele) [TYPE=tip_tabele]; Ili puni oblik: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] ime_tabele [(definicija_kolone,…)] [opcije_za_tabelu] [komanda select] Primer: create table odeljenje (odeljenje int not null auto_increment primary key, naziv varchar(30) ) type=InnoDB;
Kreiranje baza podataka, tabela i indeksa u MySQL-u • Kreiranje indeksa Primer: CREATE INDEX ime ON zaposleni(ime); • Indeksi definisani nad kolonama tipa char I varchar mogu se ograničiti na prvih nekoliko znakova u polju. CREATE INDEX parcijalno_imeON zaposleni(ime(5));
Kreiranje baza podataka, tabela i indeksa u MySQL-u • Brisanje baza podataka, tabela i indeksa • Brisanje baze podataka DROP DATABASE [IF EXISTS] naziv_baze; • Brisanje tabela DROP TABLE [IF EXISTS] naziv_tabele [,naziv_tabele, …] • Brisanje indeksa DROP INDEX naziv_indeksa ON naziv_tabele;
Kreiranje baza podataka, tabela i indeksa u MySQL-u • Izmena strukture postojeće tabele • Primer za kreiranje indeksa: ALTER TABLE zaposleni ADD INDEX ime (ime); • Opšti oblik komande: ALTER [IGNORE] TABLE ime_tabele vrsta_izmene[, vrsta_izmene,…] Vrste_izmene: ADD [COLUMN] definicija_kolone [FIRST | AFTER ime_kolone] Ili ADD [COLUMN] (definicija_kolone, definicija_kolone,…) MODIFY [COLUMN] definicija_kolone [FIRST | AFTER ime_kolone] DROP [COLUMN] ime_kolone Ili DROP PRIMARY KEY
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda INSERT INSERT [INTO]naziv_tabele VALUES (vrednost_1, vrednost_2,…), (vrednost_n, vrednost_n+1,…), (vrednost_k, vrednost_k+1,…), ili INSERT [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] VALUES (izraz |DEFAULT, …),)…),… ON DUPLICATE KEY UPDATE ime_kolone=izraz, …]
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda INSERT(nastavak) ili INSERT [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] SELECT … Ili INSERT [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] SET ime_kolone = (izraz |DEFAULT), … ON DUPLICATE KEY UPDATE ime_kolone=izraz, …]
Unos, brisanjei ažuriranje podataka u MySQL-u Komanda INSERT(nastavak) • Neobavezneodredbe: • LOW PRIORITY, kojom se zadajeda se komanda INSERT izvršavasaniskimprioritetom, s tim što se blokira klijentski program za unos podataka. • DELAYED, kojom se zadajeda se izvršavanjeodloži, omogućava izvršavanje drugog upita, s tim što če predhodni upis biti obavljen tek kada je tabela slobodna Obe opcije čine da se upisivanje podataka u tabelu odloži dom više ne bude ni jednog klijenta koji pokušava da učita podatke iz tabele. • Opcija ON DUPLICATE KEY UPDATE pruža rešenje problema dupliranog primarnog ključa ili duplirane jedinstvene vrednosti. Iza ove opcija sledi naredba UPDATE koja menja postojeću vrednost u koloni.
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda REPLACE • Slično deluje kao i komanda INSERT, s tom razlikom što ako dođe do dupliranja ključa, novi red koji želite da upišete zamenjuje posojeći red. REPLACE [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] VALUES (izraz,…),(…),… ili REPLACE [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] SELECT … ili REPLACE [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)] SET ime_kolone = (izraz |DEFAULT), …
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda DELETE • Omogućavabrisanjeredovaiztabele. • Primer: DELETE FROM odeljenje; • Opštioblikovekomande je: DELETE [LOW_PRIORITY] [QUICK] FROM ime_tabele [WHERE uslov] [ORDER BY …] [LIMIT broj_redova] Ili DELETE [LOW_PRIORITY] [QUICK] ime_tabele[, ime_tabele…] FROM reference_na_tabele [WHERE uslov]
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda DELETE (nastavak) Ili DELETE [LOW_PRIORITY] [QUICK] FROM ime_tabele[, ime_tabele…] USING reference_na_tabele [WHERE uslov]
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda TRUNCATE • Omogućavabrisanjesvihredovaiztabele. • Brza je odnaredbe DELETE • Primer: TRUNCATE TABLE zaposleni;
Unos, brisanje i ažuriranje podataka u MySQL-u Komanda UPDATE • Omogućava ažuriranjepostojećihredova u tabelama. Primer: UPDATE zaposleni SET posao=‘DBA’ WHERE zaposleni=123 Naredba UPDATE imasledećioblik: UPDATE ime_tabele SET ime_kolone1=izraz1 [,ime_kolone2 = izraz2…] [WHERE uslov] [ORDER BY …] [LIMIT broj_redova]
Unos, brisanje i ažuriranje podataka u MySQL-u Grupno unošenje podataka pomoću komande LOAD DATA INFILE • Datoteka Odeljenje.txt 42 Finansije 128 istrazivanje i razvoj NULL Ljudski resursi NULL Marketing Datoteka je u standardnom formatu za primenu naredbe LOAD DATA INFILE, Sto znači da se svaki red podataka nalazi u posebnom redu datoteke, a kolone su razdvojene znakom za tabulator. Primer: LOAD DATA LOCAL INFILE ‘odeljenje.txt’INTO TABLE odeljenje;
Unos, brisanjei ažuriranje podataka u MySQL-u Grupnounošenjepodatakapomoću komande LOAD DATA INFILE nastavak • Datotekaprogrameri.csv Pera, programer, 128 Mika, programer, 128 Laza, programer, 128 Primer: LOAD DATA LOCAL INFILE ‘c:\\programeri.csv’ INTO TABLE zaposleni FIELDS TERMINATED BY ‘,’ /* obaveznomorada se naznači*/ LINES TERMINATED BY ‘/n’ /* nijeneophodno */ IGNORE 2 LINES /* postosuprvadvaredazaglavljetrebaihpreskočiti*/ (ime,posao,odeljenje); /* postodatoteka ne sadržišifrezaposlenihmoramonaznačiti u kojapolja (ikojimredosledom) želimodaprenesemopodatke */
Napredne mogućnostiMySQL-a • Transakcije • Pogledi (Views) • Uskladištene procedure (Stored procedures) • Funkcije • Trigeri