1 / 14

- NASTAVAK -.

- NASTAVAK -. 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 u bazu podataka. Uvedeni su u MySQL u verziji 5.0.1

osric
Download Presentation

- NASTAVAK -.

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. - NASTAVAK -.

  2. Pogledi (Views) u MySQL-u • Pogledisuvirtuelnetabelekojenastajukaorezultat SQL upitanadjednomili 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_name AS SELECTcolumn_list...FROMtable_name;

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

  4. 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;

  5. Transakcije u MySQL-u • Transakcijaoznačavaskup SQL komandikoji se izvršavajukaonedeljiva celina. • Akosusve SQL komandekoje čine transakciju uspešnoizvršeneonda je transakcijaizvršena, u suprotnomse ne sme ništa uraditi.Ovaj koncept je poznat kao nedeljivost. • 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.

  6. Transakcije u MySQL-u Transakcionebazemorajuobezbediti 4 osobinekoje se nazivajuACID: • Atomicity (nedeljivost)Iskaz se sastojiodnekolikologičnihcelina - skupaupita. Ili susviupitiizvršeniuspešnoilinijedanodnjih. • Consistency (usklađenost)Baza je u konzistentnomstanju pre iposletransakcije. 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)Transakcijanemaefekatnadrugeprocese. To značidaefektipojedinačnihupita u transakcijinisuvidljividrugimklijentimasvedok se transakcijauspešno ne izvrši (commit iskazom). • Durability (trajnost)Kada je transakcijauspešnoobavljenanjeniefektisupermanentni.

  7. Transakcije u MySQL-u Preduslov: korišćenje transaction-safe storage engine (mašina za skladištenje podataka kao što suInnoDB, 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}

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

  9. Transakcije u MySQL-u • Predefinisano je da MySQLradi sa uključenim autocommitmodom. 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 suInnoDB, BDB ili NDB Cluster),možete isključiti autocommitmod 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.

  10. Transakcije u MySQL-u create table test( imechar(20) not null unique); start transaction; insert into test(ime) values('Jovan'); insert into test(ime) values('Petar'); commit;

  11. Transakcije u MySQL-u start transactionkoristimozapočetaktransakcije. Nakonuspešnoizvršena 2 upitakoristilismocommitzakrajtransakcije, koja je u ovomslučajuuspešnoobavljena. Važno je danijednaodpromenatokomtransakcije (unošenjenovogimenaPetar) nijevidljivadrugimklijentimasvedok se ne izvršicommit. To je osobinaizolovanosti.

  12. 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; • Tokomtransakcijedošlo je do greške, jersmopokušalidaunesemovećpostojećuvrednost (Jovan) u poljedefinisanokaojedinstveno (unique). • Kao rezultatdošlo je do greške, pa smoizvršilirollbackiskaz. • Tabelasadržiisteslogovekaoi pre početkatransakcije, tj. imeLazarkoje je prvounetonapočetkutransakcijenijeostaloupisanojertransakcija u celininijeuspela.

  13. Transakcije u MySQL-u PočevodverzijeMySQL4.1.1 moguće je snimititačku u transakciji (savepoint) nakoju se možemovratiti 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 unosaprvogimena (Lazar) snimilismopoziciju u transakcijikaotacka1. UnosimenaMirko je poništenvraćanjemnatačku1, nakonkojesmouneliuspešnoimeDraganiodradili commit. • Na krajutransakcije, vidi se daimeMirkonijeunetojersmo se vratilinatačku u transakcijigde to imenijepostojalo.

  14. Transakcije u MySQL-u Naredbe na koje ROLLBACK nema efekta suDDL naredbe, kao što su: • CREATE ili DROP DATABASE, • CREATE, ALTER ili DROP TABLE ili • CREATE, ALTER ili DROP PROCEDURE Zbog toga ih ne treba koristiti u transakcijama.

More Related