Upload
phuc
View
51
Download
0
Embed Size (px)
DESCRIPTION
Š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 . - PowerPoint PPT Presentation
Citation preview
1
2
Šta je to što MySQL čini posebnim?
• MySQL 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.
• Tehnička podrška. MySQL je jedan od retkih open source projekata iza kojih stoje konkretne firme (MySQL AB) koja isključivo radi na održavanju i razvoju tog proizvoda.
3
• 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 rangu sa najbržim sistemima.
• Upravo zbog brzine, MySQL često predstavlja izbor za internet aplikacije, gde se zbog velikog saobraćaja zahteva velika brzina odziva.
4
• Funkcionalnost. MySQL nudi 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.
5
• Lakoća upotrebe. – Distribucija MySQL-a je 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.
6
• Portabilnost. MySQL može da se pokrene na brojnim paltformama, a najvažnije su UNIX, Linux i Windows.
7
• 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)
8
• 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.
9
MySQLStorage Engines (StEn)
10
• 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 donosi mogućnost izvođenja transakcija MySQL-u
• Federated Engine • Archive Engine - velika kompresija podataka koristeći zlib kompresionu
biblioteku (http://www.zlib.net/), i dekompresija podataka u letu po zahtevu.• CSV Storage - (comma separated format), podaci odvojeni zarezom koriste
ga (OpenOffice i Microsoft Office).• Blackhole Engine – radi slično MyISAM enginu• Example Engine
- 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.
11
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.
• MySQL indeks tipovi su:– Primary, – Unique, – Index, – Fulltext– Spatial (MyISAM)
12
• 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.
13
• INDEX ili KEY bez 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.
• Spatial indeks tip za MyISAM tabele, MySQL može stvoriti prostorne indekse koristeći sintaksu sličnu onoj za stvaranje klasičnih indeksa, koristeći SPATIAL ključu reč. Koristi se za prostornu analizu geometrijskih objekata. (npr presek, sadržaj, podskup skupa koordinata kojim se predstavlja objekat)
14
Tipovi podataka u MySQL-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– INTEGER i 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 jeBIT
– 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
15
Tipovi podataka u MySQL-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– TEXT mož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)
16
Tipovi podataka u MySQL-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
17
Tipovi podataka u MySQL-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.
18
Kreiranje baza podataka, tabela i indeksa u MySQL-u
Razlikovanje malih i velikih slova u MySQL-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.
19
Kreiranje baza podataka, tabela i indeksa u MySQL-u
• Kreiranje baza podatakacreate 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.
20
Kreiranje baza podataka, tabela i indeksa u MySQL-u
• Kreiranje tabela
CREATE TABLE nazivtabele (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;
21
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_ime ON zaposleni(ime(5));
22
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;
23
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_koloneIli DROP PRIMARY KEY
24
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, …]
25
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, …]
26
Unos, brisanje i ažuriranje podataka u MySQL-u
Komanda INSERT (nastavak)
• Neobavezne odredbe:– LOW PRIORITY, kojom se zadaje da se komanda INSERT
izvršava sa niskim prioritetom, s tim što se blokira klijentski program za unos podataka.
– DELAYED, kojom se zadaje da se izvršavanje odlož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.
27
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,…),(…),…
iliREPLACE [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)]
SELECT …iliREPLACE [LOW_PRIORITY |DELAYED] [INTO] ime_tabele [(ime_kolone,…)]
SET ime_kolone = (izraz |DEFAULT), …
28
Unos, brisanje i ažuriranje podataka u MySQL-u
Komanda DELETE• Omogućava brisanje redova iz tabele.• Primer:
DELETE FROM odeljenje;
• Opšti oblik ove komande 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]
29
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]
Delete zaposleni, vestinaFROM zaposleni, vestina, odeljenjeWHERE zaposleni.zaposleni = vestina.zaposleniAND zaposleni.odeljenje = odeljenje.odeljenjeAND odeljenje.naziv = ‘Finansije’;
Delete from zaposleni, vestinaUSING zaposleni, vestina, odeljenjeWHERE zaposleni.zaposleni = vestina.zaposleniAND zaposleni.odeljenje = odeljenje.odeljenjeAND odeljenje.naziv = ‘Finansije’;
30
Unos, brisanje i ažuriranje podataka u MySQL-u
Komanda TRUNCATE• Omogućava brisanje svih redova iz tabele.• Brza je od naredbe DELETE• Primer:
TRUNCATE TABLE zaposleni;
31
Unos, brisanje i ažuriranje podataka u MySQL-u
Komanda UPDATE• Omogućava ažuriranje postojećih redova u tabelama.Primer:
UPDATE zaposleniSET posao=‘DBA’WHERE zaposleni=123
Naredba UPDATE ima sledeći oblik:
UPDATE ime_tabeleSET ime_kolone1=izraz1 [,ime_kolone2 = izraz2…]
[WHERE uslov][ORDER BY …]
[LIMIT broj_redova]
32
Unos, brisanje i ažuriranje podataka u MySQL-u
Grupno unošenje podataka pomoću komande LOAD DATA INFILE
• Datoteka Odeljenje.txt
42 Finansije128 istrazivanje i razvojNULL Ljudski resursiNULL 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;
33
Unos, brisanje i ažuriranje podataka u MySQL-u
Grupno unošenje podataka pomoću komande LOAD DATA INFILE nastavak
• Datoteka programeri.csv
Pera, programer, 128Mika, programer, 128Laza, programer, 128
Primer:
LOAD DATA LOCAL INFILE ‘c:\\programeri.csv’ INTO TABLE zaposleni FIELDS TERMINATED BY ‘,’ /* obavezno mora da se naznači */
LINES TERMINATED BY ‘/n’ /* nije neophodno */ IGNORE 2 LINES /* posto su prva dva reda zaglavlje treba ih preskočiti */(ime,posao,odeljenje); /* posto datoteka ne sadrži šifre zaposlenih moramo naznačiti u koja polja (i kojim redosledom) želimo da prenesemo podatke */
34
Napredne mogućnosti MySQL-a
• Transakcije• Pogledi (Views)• Uskladištene procedure (Stored procedures)• Funkcije• Trigeri