34
1

Šta je to što M ySQL čini posebnim ?

  • 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

Page 1: Šta je to što M ySQL čini  posebnim ?

1

Page 2: Šta je to što M ySQL čini  posebnim ?

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.

Page 3: Šta je to što M ySQL čini  posebnim ?

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.

Page 4: Šta je to što M ySQL čini  posebnim ?

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.

Page 5: Šta je to što M ySQL čini  posebnim ?

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.

Page 6: Šta je to što M ySQL čini  posebnim ?

6

• Portabilnost. MySQL može da se pokrene na brojnim paltformama, a najvažnije su UNIX, Linux i Windows.

Page 7: Šta je to što M ySQL čini  posebnim ?

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)

Page 8: Šta je to što M ySQL čini  posebnim ?

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.

Page 9: Šta je to što M ySQL čini  posebnim ?

9

MySQLStorage Engines (StEn)

Page 10: Šta je to što M ySQL čini  posebnim ?

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.

Page 11: Šta je to što M ySQL čini  posebnim ?

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)

Page 12: Šta je to što M ySQL čini  posebnim ?

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.

Page 13: Šta je to što M ySQL čini  posebnim ?

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)

Page 14: Šta je to što M ySQL čini  posebnim ?

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

Page 15: Šta je to što M ySQL čini  posebnim ?

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)

Page 16: Šta je to što M ySQL čini  posebnim ?

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

Page 17: Šta je to što M ySQL čini  posebnim ?

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.

Page 18: Šta je to što M ySQL čini  posebnim ?

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.

Page 19: Šta je to što M ySQL čini  posebnim ?

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.

Page 20: Šta je to što M ySQL čini  posebnim ?

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;

Page 21: Šta je to što M ySQL čini  posebnim ?

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));

Page 22: Šta je to što M ySQL čini  posebnim ?

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;

Page 23: Šta je to što M ySQL čini  posebnim ?

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

Page 24: Šta je to što M ySQL čini  posebnim ?

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, …]

Page 25: Šta je to što M ySQL čini  posebnim ?

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, …]

Page 26: Šta je to što M ySQL čini  posebnim ?

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.

Page 27: Šta je to što M ySQL čini  posebnim ?

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), …

Page 28: Šta je to što M ySQL čini  posebnim ?

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]

Page 29: Šta je to što M ySQL čini  posebnim ?

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’;

Page 30: Šta je to što M ySQL čini  posebnim ?

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;

Page 31: Šta je to što M ySQL čini  posebnim ?

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]

Page 32: Šta je to što M ySQL čini  posebnim ?

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;

Page 33: Šta je to što M ySQL čini  posebnim ?

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 */

Page 34: Šta je to što M ySQL čini  posebnim ?

34

Napredne mogućnosti MySQL-a

• Transakcije• Pogledi (Views)• Uskladištene procedure (Stored procedures)• Funkcije• Trigeri