Open source s istem za upravljanje bazama podataka
This presentation is the property of its rightful owner.
Sponsored Links
1 / 75

Open source s istem za upravljanje bazama podataka PowerPoint PPT Presentation


  • 65 Views
  • Uploaded on
  • Presentation posted in: General

Open source s istem za upravljanje bazama podataka. M ySQL je veoma brz i robus t an sistem za upravljanje relacionim bazama podataka.

Download Presentation

Open source s istem za upravljanje bazama podataka

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Open source s istem za upravljanje bazama podataka

Open source

sistem za upravljanje bazama podataka


Open source s istem za upravljanje bazama podataka

  • MySQLje veoma brz i robustan sistem za upravljanje relacionim bazama podataka.

  • Server upravlja pristupom podacima, pri tome omogućuje da s njima radi više korisnika istovremeno i da pristup podacima bude brz i dozvoljen samo ovlašćenim korisnicima.

  • MySQL je na raspolaganju korisnicima od 1996. godine. Do sada je više puta dobijao nagradu "Reader's Choice Award" u svojoj kategoriji.


Ta je to to m ysql ini tako posebnim

Šta je to štoMySQLčini tako posebnim ?

  • MySQLje 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.

      Ovo je veliki kontrast drugim komercijalnim sistemima za baze podataka (kao što su Oracle, MS SQL, Informix i sl.), kreiranih od strane velikih kompanija, koji su pri tome veoma skupi.


Ta je to to mysql ini tako posebnim

Šta je to štoMySQLčini tako posebnim ?

  • Tehnička podrška. MySQLje jedan od retkih open source projekata iza kojih stoje konkretne firme (MySQL AB) koja isključivo radi na održavanju i razvoju tog proizvoda.

    Uz to, postoji ogroman broj korisnika koji direktno utiču na razvoj.


Ta je to to m ysql ini tako posebnim1

Šta je to štoMySQLčini tako posebnim ?

  • 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.


Ta je to to m ysql ini tako posebnim2

Šta je to štoMySQLčini tako posebnim ?

  • 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.


Ta je to to m ysql ini tako posebnim3

Šta je to štoMySQLčini tako posebnim ?

  • 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.


Ta je to to m ysql ini tako posebnim4

Šta je to štoMySQLčini tako posebnim ?

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


Ta je to to m ysql ini tako posebnim5

Šta je to štoMySQLčini tako posebnim ?

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


Ta je to to m ysql ini tako posebnim6

Šta je to štoMySQLčini tako posebnim ?

  • Interoperabilnost.

    • može da se koristi u kombinaciji sa velikim brojem drugog softvera, bilo open source ili komercijalnog.

    • Ove alatke vam omogućavaju da na lak način iskoristite sve mogućnosti baza podataka.


Ta je to to m ysql ini tako posebnim7

Šta je to štoMySQLčini tako posebnim ?

  • 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.


Ta je to to m ysql ini tako posebnim8

Šta je to štoMySQLčini tako posebnim ?

  • Saradnja sa najvećim proizvođačem poslovnog softvera SAP – om na maxDB-u značajno utiče i na kvalitet osnovnog proizvoda

  • Uz sve prethodno navedeno, ne čudi što se MySQLrazvija brže od rivalskih proizvoda i što lista korisnika komercijalne verzije ovog sistema za upravljanje bazama podataka izgleda ovako:


Tipovi podataka u mysql u

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 u mysql u1

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 u mysql u2

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 u mysql u3

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

Kreiranje baza podataka, tabela i indeksa u MySQL-u

Razlikovanje malih i velikih slova 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 u1

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 u2

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 u3

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 u4

    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 u5

    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

    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 u1

    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 brisanje i a uriranje podataka u mysql u2

    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.


    Unos brisanje i a uriranje podataka u mysql u3

    Unos, brisanje i ažuriranje podataka u MySQL-u

    Komanda REPLACE

    • Slično deluje kao i komanda INSRT, 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 u4

    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]


    Unos brisanje i a uriranje podataka u mysql u5

    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 u6

    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;


    Unos brisanje i a uriranje podataka u mysql u7

    Unos, brisanje i ažuriranje podataka u MySQL-u

    Komanda UPDATE

    • Omogućava ažuriranje postojećih redova u tabelama.

      Primer:

      UPDATE zaposleni

      SET posao=‘DBA’

      WHERE zaposleni=6651

      Naredba UPDATE ima sledeći oblik:

      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 u8

    Unos, brisanje i ažuriranje podataka u MySQL-u

    Grupno unošenje podataka pomoću komande LOAD DATA INFILE

    • Datoteka Odeljenje.txt

      42 Finansije

      128istrazivanje i razvoj

      NULLLjudski 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 brisanje i a uriranje podataka u mysql u9

    Unos, brisanje i ažuriranje podataka u MySQL-u

    Grupno unošenje podataka pomoću komande LOAD DATA INFILE nastavak

    • Datoteka novi_programeri.csv

      Julia, programer, 128

      Douglas, programer, 128

      Tim, programer, 128

      Primer:

      LOAD DATA LOCAL INFILE ‘e:\\novi_programeri.csv’

      INTO TABLE zaposleni

      FIELDS TERMINATED BY ‘,’ /* obavezno mora da se naznaci */

      LINES TERMINATED BY ‘/n’ /* nije neophodno */

      IGNORE 2 LINES /* posto su prva dva reda zaglavlje treba ih preskociti */

      (ime,posao,odeljenje); /* posto datoteka ne sadrzi sifre zaposlenih moramo

      naznačiti u koja polja (i kojim redosledom) želimo da prenesemo podatke */


    Napredne mogu nosti mysql a

    Napredne mogućnostiMySQL-a

    • Transakcije

    • Pogledi (Views)

    • Uskladištene procedure (Stored procedures)

    • Funkcije

    • Trigeri


    Transakcije u mysql u

    Transakcije u MySQL-u

    • Transakcija označava skup SQL komandi koji se izvršavaju kao nedeljiva celina.

    • Ako su sve SQL komande koje čine transakciju uspešno izvršene onda je transakcija izvršena, u suprotnom se ne sme ništa uraditi.Ovaj koncept je poznat kao nedeljivost (atomicity).

    • Klasični primer je iz bankarskog okruženja: Određeni novčani iznos treba prebaciti sa računa jedne osobe na račun druge osobe:

      UPDATE racun SET saldo=saldo-500 WHERE vlasnik = “Zoran”;

      UPDATE racun SET saldo=saldo+500 WHERE vlasnik = “Dragan”;

      Oba SQL upita moraju biti izvršena ili nijedan.

      Oba upita čine transakciju.


    Transakcije u mysql u1

    Transakcije u MySQL-u

    • Transakcione baze moraju obezbediti 4 osobine koje se skraćeno nazivajuACID:

    • Atomicity (nedeljivost)Iskaz se sastoji od nekoliko logičnih celina - skupa upita. Ili su svi upiti izvršeni uspešno ili nijedan od njih.

    • Consistency (usklađenost)Baza je u koezistentnom stanju pre i posle transakcije. Svaka operacija nad podacima prebacuje bazu podataka iz jednog ispravnog stanja u drugo. Ne sme biti “međustanja” u kojima podaci nisu potpuno usklađeni.

    • Isolation (izolovanost)Transakcija nema efekat na druge procese. To znači da efekti pojedinačnih upita u transakciji nisu vidljivi drugim klijentima sve dok se transakcija uspešno ne izvrši (commit iskazom).

    • Durability (trajnost)Kada je transakcija uspešno obavljena njeni efekti su permanentni.


    Transakcije u mysql u2

    Transakcije u MySQL-u

    Preduslov: korišćenje transaction-safe storage engine (mašina za skladištenje podataka kao što su InnoDB, BDB ili NDB Cluster),

    START TRANSACTION, COMMIT i ROLLBACK

    START TRANSACTION | BEGIN [WORK]

    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 | 1}


    Transakcije u mysql u3

    Transakcije u MySQL-u

    • START TRANSACTIONiBEGIN naredbaoznačavaju početak nove transakcije.

    • COMMITpotvrđuje tekuću transakciju, čineći promene nastale tom transakcijom stalnim.

    • ROLLBACKponištava tekuću transakciju, otkazujući sve promene koje su o okviru nje izvršene.

    • Naredba SET AUTOCOMMIT uključuje ili isključuje autocommit mod za aktivnu konekciju


    Transakcije u mysql u4

    Transakcije u MySQL-u

    • Predefinisano je da MySQL radi sa uključenim autocommit modom. To znači da čim izvršite SQL naredbu koja ažurira neku tabelu,MySQLpromenu zapisuje u bazi.

    • Ako koristite transaction-safe storage engine (kao što su InnoDB, BDB ili NDB Cluster),možete isključiti autocommit mod na sledeći način:

      SET AUTOCOMMIT=0;

      Napomena:ako isključite automatsko potvrđivanje transakcija nije neophodno izričito zadati komandu START TRANSACTION da biste započeli transakciju.


    Transakcije u mysql u5

    Transakcije u MySQL-u

    create table test(

    ime char(20) not null unique);

    start transaction;

    insert into test(ime) values(“Jovan”);

    insert into test(ime) values(“Petar”);

    commit;


    Transakcije u mysql u6

    Transakcije u MySQL-u

    • start transaction koristimo za početak transakcije.

    • Nakon uspešno izvršena 2 upita koristili smocommitza kraj transakcije, koja je u ovom slučaju uspešno obavljena.

    • Važno je da nijedna od promena tokomtransakcije (unošenje novog imena Petar) nije vidljiva drugim klijentima sve dok se ne izvrši commit. To je osobinaizolovanosti.


    Transakcije u mysql u7

    Transakcije u MySQL-u

    • Primer neuspele transakcije:

      set autocommit=0;

      start transaction;

      insert into test(ime) values(”Lazar”);

      insert into test(ime) values(“Jovan”);

      rollback;

    • Tokom transakcije došlo je do greške, jer smo pokušali da unesemo već postojeću vrednost (Jovan) u polje definisano kao jedinstveno (unique).

    • Kao rezultat došlo je do greške, pa smo izvršili rollback iskaz.

    • Tabela sadrži iste slogove kao i pre početka transakcije, tj. ime Lazar koje je prvo uneto na početku transakcije nije ostalo upisano jer transakcija u celini nije uspela.


    Transakcije u mysql u8

    Transakcije u MySQL-u

    • Počev od verzijeMySQL4.1.1 moguće je snimiti tačku u transakciji (savepoint) na koju se možemo vratiti rollback-om.

      Primer:

      set autocommit=0;

      start transaction;

      insert into test(ime) values('Lazar');

      savepoint tacka1;

      insert into test(ime) values('Mirko');

      rollback to savepoint tacka1;

      insert into test(ime) values('Dragan');

      commit;

    • Nakon unosa prvog imena (Lazar) snimili smo poziciju u transakciji kao tacka1. Unos imena Mirko je poništen vraćanjem na tačku1, nakon koje smo uneli uspešno ime Dragan i odradili commit.

    • Na kraju transakcije, vidi se da ime Mirko nije uneto jer smo se vratili na tačku u transakciji gde to ime nije postojalo.


    Transakcije u mysql u9

    Transakcije u MySQL-u

    Naredbe na koje ROLLBACK nema efekta

    su DDL naredbe, kao što su:

    • CREATE ili DROP DATABASE,

    • CREATE, ALTER ili DROP TABLE ili

    • CREATE, ALTER ili DROP PROCEDURE

      I zbog toga ih ne treba koristiti u transakcijama.


    Pogledi views u mysql u

    Pogledi (Views) u MySQL-u

    • Pogledi su virtuelne tabele koje nastaju kao rezultat SQL upita nad jednom ili više tabela.

    • Oni fizički ne postoje.

    • Pogledi predstavljaju jednostavan metod smeštanja SQL naredbe ubazu podataka.

    • Uvedeni su u MySQL u verziji 5.0.1

      Kreiranje pogleda

      CREATE VIEWview_nameAS SELECTcolumn_list...FROMtable_name;


    Pogledi views u mysql u1

    Pogledi (Views) u MySQL-u

    • Kreiranjem pogleda se ne pravi kopija postojećih podatka iz tabele ili tabela koje su učestvovale u kreiranju pogleda, već je to samo memorisanje SQL komande.

    • Pogled je po svemu ravnopravan sa ostalim tabelama baze podataka:

      • mogu se pisati upiti koji se odnose na jedno ili više polja pogleda

      • Mogu se u okviru upita povezivati sa ostalim tabelama baze podataka


    Pogledi views u mysql u2

    Pogledi (Views) u MySQL-u

    • Ažuriranje podataka korišćenjem pogleda

      • Ograničenja prilikom ažuriranja:

        • za ažuriranje podataka ne mogu biti korišćeni pogledi koji sadrže sledeće SQL klauzule :

          • UNION

          • DISTINCT i DISTINCTROW

          • HAVING i GROUP BY klauzule

    • Brisanje podataka korišćenjem pogleda

      • Ograničenja prilikom brisanja:

        • Za brisanje podataka se mogu koristiti isključivo pogledi kreirani nad jednom tabelom.

    • Brisanje pogleda

      DROP VIEW [IF EXISTS]view_name;


    Uskladi tene procedure u mysql u

    Uskladištene procedure u MySQL-u

    Uskladištena procedura (stored procedure) je procedura (potprogram ili metod u programskim jezicima) koja je smeštena u bazi podataka.

    MySQL podržava dve vrste ovakvih procedura:

    • uskladištene procedure koje ne vraćaju vrednost

    • funkcije koje vraćaju vrednosti na isti način kao i funkcije ugrađene u MySQL.

    • Uskladištena procedura ima naziv, listu parametara i sadrži jednu ili više SQL naredbi


    Uskladi tene procedure u mysql u1

    Uskladištene procedure u MySQL-u

    • Zašto se koriste ?

    • Iako predstavljaju novu mogućnost u okviru MySQL-a, odavno postoje u ostalim RDBMS

    • Uskladištene procedure su brze. Efekat brzine se postiže pre svega kroz smanjenje mrežnog saobraćaja.

    • Naročito su pogodne za ponavljajuće zadatke koji zahtevaju proveru, iteraciju, sa malo ili bez interakcije sa korisnikom

    • Ako promenite jezik za pristup bazi podataka ne bi trebalo da bude problema jer je logika u bazi podataka a ne aplikaciji.

    • Sintaksa uskladištenih procedura MySQL-a je bliska SQL:2003 standardu, tako da se lako mogu primeniti i na drugim RDBMS


    Uskladi tene procedure u mysql u2

    Uskladištene procedure u MySQL-u

    Važno !!!

    S obzirom da su uskladištene procedure uvedene u verziji 5, neophodno je prvo proveriti koja verzija je instalirana na računaru, da biste bili sigurni da ih uopšte možete koristiti.

    show variables like 'version';

    Ili

    SELECT VERSION();


    Uskladi tene procedure u mysql u3

    Uskladištene procedure u MySQL-u

    • Kreiranje pomoću MySQL Query Browser-a

      Opcija Script > Create Stored Procedure / Function

      Ili

      desni klik u prozoru Shemata i izbor opcije

      Create Stored Procedure / Function


    Uskladi tene procedure u mysql u4

    Uskladištene procedure u MySQL-u

    Primer :

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `zaposleni`.`SP_proba` $$

    CREATE PROCEDURE `SP_proba`()

    BEGIN

    select * from zaposleni;telo procedure (glavni blok)

    END $$

    DELIMITER ;


    Uskladi tene procedure u mysql u5

    Uskladištene procedure u MySQL-u

    Pozivanje uskladištene procedure :

    call SP_proba();


    Uskladi tene procedure u mysql u6

    Uskladištene procedure u MySQL-u

    • Naziv uskladištene procedure nije case senzitivan.

    • U jednoj bazi sve uskladištene procedure moraju imati različite nazive, što znači da preklapanje (overloading) procedura nije moguće

    • Naziv uskladištene procedure može sadržati maksimalno 64 znaka uključujući i praznine (space)


    Uskladi tene procedure u mysql u7

    Uskladištene procedure u MySQL-u

    Koje MySQL naredbe su dozvoljene u telu uskladištene procedure ?

    • INSERT

    • UPDATE

    • DELETE

    • SELECT

    • DROP

    • CREATE

    • REPLACE


    Uskladi tene procedure u mysql u8

    Uskladištene procedure u MySQL-u

    Koje MySQL naredbe su dozvoljene u telu uskladištene procedure ?

    • Bilo koja SQL DML naredba.

    • Primer:

      DELIMITER $$

      DROP PROCEDURE IF EXISTS `zaposleni`.`SP_brisanje_statusa` $$

      CREATE PROCEDURE `zaposleni`.`SP_brisanje_statusa` ()

      BEGIN

      DELETE FROM status;

      END $$

      DELIMITER ;


    Uskladi tene procedure u mysql u9

    Uskladištene procedure u MySQL-u

    Koje MySQL naredbe su dozvoljene u telu uskladištene procedure ?

    • Bilo koja SQL DDL naredba.

    • Primer:

      DELIMITER $$

      DROP PROCEDURE IF EXISTS `zaposleni`.`SP_brisanje_tabele_status` $$

      CREATE PROCEDURE `zaposleni`.`SP_brisanje_tabele_status` ()

      BEGIN

      DROP TABLE status;

      END $$

      DELIMITER ;


    Uskladi tene procedure u mysql u10

    Uskladištene procedure u MySQL-u

    Koje MySQL naredbe nisu dozvoljene u telu uskladištene procedure ?

    • Naredbe koje manipulišu uskladištenim rutinama (procedurama i funkcijama)

      • CREATE PROCEDURE / CREATE FUNCTION

      • ALTER PROCEDURE / ALTER FUNCTION

      • DELETE PROCEDURE / DELETE FUNCTION

      • CREATE TRIGGER

      • ALTER TRIGGER

      • DELETE TRIGGER

    • Naredba USE


    Uskladi tene procedure u mysql u11

    Uskladištene procedure u MySQL-u

    Parametri

    In

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `zaposleni`.`SP_parametar_in` $$

    CREATE PROCEDURE `zaposleni`.`SP_parametar_in` (in p int)

    BEGIN

    SELECT * FROM zaposleni WHERE zaposleni_id= p;

    END $$

    DELIMITER ;

    Primena:


    Uskladi tene procedure u mysql u12

    Uskladištene procedure u MySQL-u

    Uslovni izrazi (IF THEN ELSE)

    Primer :

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `zaposleni`.`SP_primer_if` $$

    CREATE PROCEDURE `SP_primer_if`(in parametar int)

    BEGIN

    declare promenljiva int;

    set promenljiva = parametar + 1;

    if promenljiva = 0 then

    INSERT INTO t VALUES (17,17);

    end if;

    if parametar = 0 then

    UPDATE t

    SET broj = 0, zbir = 0

    WHERE broj = parameter;

    end if;

    END $$

    DELIMITER ;


    Uskladi tene procedure u mysql u13

    Uskladištene procedure u MySQL-u

    Naredba CASE

    Primer :

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `zaposleni`.`SP_primer_case` $$

    CREATE PROCEDURE `SP_primer_case`(in parametar int)

    BEGIN

    declare v1 int;

    set v1 = parametar + 1;

    case v1

    when 0 then INSERT INTO t(broj) VALUES (17);

    when 1 then INSERT INTO t(broj) VALUES (18);

    else insert into t(broj) values (19);

    end case;

    END $$

    DELIMITER ;


    Uskladi tene procedure u mysql u14

    Uskladištene procedure u MySQL-u

    Petlje (WHILE … END WHILE)

    Primer :

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `zaposleni`.`SP_primer_while_petlja` $$

    CREATE PROCEDURE `SP_primer_while_petlja`()

    BEGIN

    declare brojac int;

    set brojac = 0;

    while brojac <= 5 do

    INSERT INTO t(broj) VALUES (brojac);

    set brojac = brojac + 1;

    end while;

    END $$

    DELIMITER ;


    Uskladi tene procedure u mysql u15

    Uskladištene procedure u MySQL-u

    • Primer:

      DELIMITER $$

      DROP PROCEDURE IF EXISTS `zaposleni`.`SP_klijent` $$ /* brisanje procedure */

      CREATE PROCEDURE `SP_klijent`(in klijent integer) /* naziv proc. i lista parametara */

      BEGIN /* pocetak bloka */

      DECLARE promenljiva CHAR(10); /* deklarisanje promenljivih*/

      IF klijent = 17 THEN /* pocetak IF naredbe */

      SET promenljiva = ‘Tom'; /* naredba dodeljivanja */

      ELSE

      SET promenljiva = ‘Tim'; /* naredba dodeljivanja */

      END IF;/* kraj IF naredbe */

      INSERT INTO klijent(klijent,ime,adresa,kontaktOsoba,kontaktTelefon) VALUES (klijent,promenljiva,null,null,null); /* SQL naredba */

      END $$

      DELIMITER ;


    Funkcije u mysql u

    Funkcije u MySQL-u

    • Funkcije su programi koji

      • kada se pozovu vraćaju vrednost,

      • moraju uvek da vrate vrednost,

      • uvek vraćaju samo jednu vrednost.

    • Mogu biti pozvane iz SQL naredbe.

    • Ograničenje

      Funkcije ne mogu da pristupe tabelama baze podataka !


    Funkcije u mysql u1

    Funkcije u MySQL-u

    • Primer:

      DELIMITER $$

      DROP FUNCTION IF EXISTS `zaposleni`.`F_IF` $$

      CREATE FUNCTION `F_IF`(parametar VARCHAR(10)) RETURNS varchar(10)

      BEGIN

      declare izlaz VARCHAR(10) default "Nije A";

      if parametar = "A" then

      set izlaz := "Jeste A";

      end if;

      return izlaz;

      END $$

      DELIMITER ;


    Trigeri u mysql u

    Trigeri u MySQL-u

    • Šta su trigeri ?

      Trigeri su objekti (uskladištene procedure) pridruženi tabeli, koji se automatski aktiviraju kada se desi neki događaj vezan za tu tabelu.

    • Uvedeni su u verziji 5.02 Alpha

      Mogu se uspešno koristiti za validaciju podataka i druge operacije direktno nad tabelama baze podataka.

    • Kada se trigeri aktiviraju ?

      Trigeri se aktiviraju kada se desi neka promena u pridruženoj tabeli, preciznije prilikom izvršenja Insert / Update / Delete naredbi.


    Trigeri u mysql u1

    Trigeri u MySQL-u

    • Trigeri ne mogu biti korišćeni u SELECT naredbi na isti način kao procedura ili funkcija.

    • Kreiranje trigera – sintaksa

      CREATE TRIGGER naziv_trigera

      vreme_izvršavanja_trigera

      događaj

      ON tbl_name

      FOR EACH ROW trigger_stmt


    Trigeri u mysql u2

    Trigeri u MySQL-u

    Vreme izvršavanja trigera:

    • BEFORE

    • AFTER

      Događaj

      je ona akcija čije izvršavanje na pridruženoj tabeli uzrokuje aktiviranje trigera. Može biti:

    • INSERT

    • UPDATE

    • DELETE


    Trigeri u mysql u3

    Trigeri u MySQL-u

    Primer :Validacija vrednosti polja

    CREATE TABLE test (id INT, sum DECIMAL(10,2));

    DELIMITER $$

    CREATE TRIGGER insert_trig

    BEFORE INSERT ON test

    FOR EACH ROW

    BEGIN

    IF new.sum<0 THEN

    SET new.sum=0;

    ENDIF;

    END$$

    DELIMITER;


    Trigeri u mysql u4

    Trigeri u MySQL-u

    Kako trigeri funkcionišu ?

    • Ključna reč BEFORE opredeljuje vreme izvršenja trigera.

      U ovom slučaju, triger će biti aktiviran pre svakog novog upisa zapisa u tabelu test.

    • Ključne reči FOR EACH ROW označavaju da će triger biti izvršen za svaki novi slog.

    • Ključne reči OLD i NEW nam omogučavaju pristup vrednostima polja u zapisima na koje se odnosi triger.

    • U INSERT trigeru može se koristiti samo NEW.ime_polja

    • U DELETE trigeru može se koristiti samo OLD.ime_polja


    Trigeri u mysql u5

    Trigeri u MySQL-u

    • OLD i NEW

    • Ključne rečiOLDiNEWse koriste za pristup podacima u zapisima tabele. OLD se koristi za vrednosti polja pre promene, a NEW sadrži vrednost polja posle promene.

    • U programu, polju koje se zove emp_name možemo pristupiti na sledeći način:new.emp_name

    • Primer:

      create trigger bi_zaposleni_fer

      before insert on zaposleni

      for each row

      set new.ime := reverse(new.ime);


    Trigeri u mysql u6

    Trigeri u MySQL-u

    • Da bi se triger aktivirao potrebno je da zapis bude dodat u odgovarajuću tabelu.

      Primer:

      insert into zaposleni (zaposleni,ime) values (4,’David’);


    Trigeri u mysql u7

    Trigeri u MySQL-u

    • Kompleksni trigeri

      • Trigeri koji sadrže više od jedne linije koda

      • Tada se koriste ključne reči BEGIN i END koje imaju svrhu da označe kompajleru početak i kraj koda trigera

      • Kraj svake komande se označava pomoću znaka ;

      • Zbog toga se mora definisati alternativni graničnik (DELIMITER) za ceo programski kod.

      • Obično se koristi $$

        DELIMITER $$


    Trigeri u mysql u8

    Trigeri u MySQL-u

    Primer:

    create trigger bi_zaposleni_fer

    before insert on zaposleni

    for each row

    begin

    declare duzina numeric;

    set duzina = length(new.ime);

    set new.plata = new.plata * duzina;

    end


    Trigeri u mysql u9

    Trigeri u MySQL-u

    • Kako se trigeri mogu obrisati ?

      DROP TRIGGER naziv_trigera;


    Open source s istem za upravljanje bazama podataka

    ODBC

    • ODBC(Open DataBase Connectivity), je standardan metod za pristup bazama podataka razvijen 1992. godine.

    • Cilj ODBC-aje da učini mogućim pristup podacima sačuvanim u bilo kom formatu iz bilo koje aplikacije, bez obzira koji RDBMS upravlja podacima.

    • ODBC upravlja pristupom podacima ubacivanjem srednjeg nivoa ( middle layer) , koji se zovedatabasedriver između aplikacije i RDBMS. Namena ovog nivoa je da upite nad podacima koje pravi aplikacija prevede u komande koje RDBMS razume.

    • Da bi ovo moglo da funkcioniše, i aplikacija i DBMS moraju imati podršku za ODBC, što znači da aplikacija mora biti sposobna da prosleđuje ODBC komande, a RDBMS takođe sposoban da na te komande odgovori.


  • Login