DML utasítások és tranzakciókezelés

DML utasítások és tranzakciókezelés

Tranzakciókezelés

r

DML utasítások sorozata, mely egy logikai egységet alkotLegkisebb egység, mely lényege, hogy csak együtt mehetnek végbe, vagy mind végbe megy vagy egyik sem. EGYként léteznek.Pl.: Ha pénzt utalok valaki számlájára akkor az én számlámon a pénz csökken( UPDATE) az adott összeggel, míg akinek utalok azé nő (UPDATE). Fontos, hogy a kettő csak egyszerre mehessen végbe különben lehetne, hogy a pénz csak az én számlámról tűnik el de nem érkezik meg a másik számlára, ami számomra nem lenne túl jó, viszont fordítva meg a bank számára nem lenne előnyös.(előadás)A tranzakció elejét és végét a programozói jelölik ki, fontos a jó kezdet és vég meghatározás.

COMMIT

COMMIT

r

Tranzakció véglegesítésekor használjuk a COMMIT utasítást.A tranzakció által okozott módosításokat átvezeti az adatbázisba és láthatóvá teszi azokat más munkamenetek számára, felold minden – a tranzakció működése közben elhelyezett – zárat és törli a mentési pontokat.Forrás:http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_plsql_programozas/ch05s06.html

a

r

https://www.youtube.com/watch?v=3XPgQFvVWpo

ROLLBACK

ROLLBACK

r

Ha meggondoltuk magunkat akkor a folyamatban lévő tranzakciót a ROLLBACK utasítással állíthatjuk le.ROLLBACK után a tranzakció által elvégzett módosítás elveszik, a régi értékek visszaállnak és a zárak felszabadulnak.A TO utasításrésszel rendelkező ROLLBACK a megadott mentési pontig görgeti vissza a tranzakciót, a megadott mentési pont érvényben marad, az azt követők törlődnek, a mentési pont után elhelyezett zárak feloldásra kerülnek és a tranzakció a megadott mentési ponttól folytatódik.Forrás:http://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_plsql_programozas/ch05s06.html

a

r

https://www.youtube.com/watch?v=aH95qWaJUJo

SAVEPOINT

SAVEPOINT

r

A SAVEPOINT utasítással mentési pontokat hozhatunk létre, mely a tranzakciók részleges visszagörgetését szolgálják.SAVEPOINT mentésipont;Több SAVEPOINTot is el tudunk helyezni a tranzakcióban és amikor vissza szeretnénk görgetni, akkor ROLLBACK TO (SAVEPOINT) mentésipont ;utasítással tehetjük meg.Példa:Számítógépes játékokban is vannak ilyen mentési pontok egy szinten belül, hogy ne kelljen az adott szintet elölről kezdeni.Forráshttp://www.tankonyvtar.hu/hu/tartalom/tamop425/0046_plsql_programozas/ch05s06.html

a

r

https://www.youtube.com/watch?v=cjXhU3CTugw

DML utasítások

r

DML = Data Manipulation Language ( adatmódosító utasítások)Ezen utasítások a meglévő táblák adatait módosítják.DML utasítások:- INSERT- DELETE-UPDATE-MERGE-SELECTBár a SELECT a DDL utasítások közé tartozok sokan mégis ide sorolják.Alapvetően csak egy sort tudunk mindig módosítani azonban a SELECT utasítással ki tudunk jelölni/választani több sort egyszerre és úgy módosítani, s ez a SQL egyik legnagyobb előnye, hogy ezáltal gyorsabban lehet kezelni nagy mennyiségű adatokat.Az adatbázis kezelésénél legtöbbször DDL utasításokat használnak.Források:http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands

a

INSERT

r

INSERT utasítással sorokat szúrhatunk be a (meglévő) táblába.INSERT INTO táblaneve [(oszlopneve,..)]VALUES (beszúrandóérték);ha a tábla összes oszlopába szeretnék beszúrni értékeket, akkor elegendő a táblanevét megadniha viszont csak egyes oszlopokba szeretnék értéket beszúrni, akkor szükséges az oszlopok neveinek megadásaFONTOS, hogy a oszlopokba beszúrandó értékek adattípusának meg kell egyeznie az oszlop adattípusával. Pl.: születési éveket tartalmazó oszlopba nem szúrhatunk be szövegetCsak egy sort tudunk beszúrni ha csak a INSERT INTO utasítást használjuk.PéldaHallgatók táblához adjunk hozzá egy új hallgatótINSERT INTO Hallgatók (neptun, név, szülév)VALUES ( 'ABC123','Gipsz Jakab', 1993);Hasznos linkek/Forrásokhttps://docs.oracle.com/cd/B14117_01/appdev.101/b10807/13_elems025.htmhttp://www.rebellionrider.com/sql-insert-into/how-to-insert-data-using-sql-insert.htm#.WLBJL_nhDIVhttps://www.youtube.com/watch?v=uQXgqFtxI_k&t=323s

a

NULL érték

r

Sokak szerint hiba volt megengedni a NULL értéket mivel sok hiba keletkezik általa.FONTOS, hogy a NULL érték nem egyenlő a zérussal.Kétféleképpen lehet NULL értéket beszúrni.-Implicit-Explicit

Implicit

r

Implicit: amelyik oszlopba azt szeretnék, hogy NULL érték kerüljön azt kihagyjuk az oszloplistábólINSERT INTO Állatok(név, súly, szülév)VALUES ('Berta', 10, 2015); Ezáltal minden más oszlopban (amit nem írtunk bele) NULL értéket fog beszúrni.FONTOS, hogy azokat az oszlopokat amelyekben nem engedélyezett a NULL érték (pl.:primary key) ne hagyjuk ki, mivel akkor hibát fog kiírni.

Explicit

r

Explicit: NULL kulcsszót használunk a VALUES klauzulábanINSERT INTO ÁllatokVALUES ('Berta, 10, 2015, NULL, NULL, NULL)FONTOS : az értékek számának meg kell egyeznie az oszlopok számával

SELECT

SELECT

r

Ha INSERT utasítást egy SELECT allekérdezéssel használjuk, akkor több sort is be tudunk egyszerre szúrni.INSERT INTO táblanév SELECT oszlopnév FROM táblanév [WHERE feltétel ]; Ilyenkor elhagyjuk a VALUES klauzulát.Az INSERT klauzula oszlopainak számának meg kell egyeznie az allekérdezés oszlopainak számával.Példa:Illesszük be azokat a hallgatókat az ösztöndíjasok táblába akiknek az átlaga 3,5 felett vanINSERT INTO Ösztöndíjasok SELECT * FROM Hallgatók WHERE átlag > 3,5 ;

DELETE

r

A táblák meglévő sorait tudjuk kitörölni.Ki tudunk törölni olyan sorokat, amik benne vannak egy másik táblában illetve olyanokat amik nincsenek benne egy másik táblában.DELETE FROM táblanévWHERE feltétel;Ha a táblának van gyerek táblája, vagyis külső kulccsal össze vannak kötve, akkor nem lehet kitörölni a szülő táblát.A ROLL BACK utasítással vissza lehet állítani az adatokat a törlés előtti állapotba.Forrás:http://www.inczedy.hu/~szikszai/adatbazis/sql1.pdfhttps://www.youtube.com/watch?v=Cue47QnOf_I&t=110s

a

NOT IN

r

Ha NOT IN segítségével azokat töröljük ki akik nincsenek az adott táblában, azonban a NOT IN nem mükődik ha van NULL érték a halmazban!PéldaTöröljük azokat a diákokat, akik nem buktak meg.DELETE FROM DiákokWHERE neptun NOT IN (SELECT neptun FROM Eredmények WHERE eredmény = 'elégtelen' );

UPDATE

r

Update utasítással meglévő sorok értékeit tudjuk módosítani.UPDATE táblanévSET oszlop = érték[WHERE feltétel]PéldaMegváltozott egy ügyfél azonosítója. Módosítsuk az ügyfelek táblában.UPDATE ÜgyfelekSET azonosító = 45WHERE név = 'Gipsz Jakab';Forrás/hasznos link:https://www.techonthenet.com/sql/update.phphttps://www.youtube.com/watch?v=ABB1DR13bNk&t=251s

a

SELECT

r

SELECT allekérdezéssel egyszerre tetszőleges számú sor is módosítható.UPDATE táblanévSET oszlopnév = ( SELECT oszlopnév FROM táblanév ) WHERE feltétel ;

Korrelált UPDATE

r

Egy SELECT utasítás úgy van beágyva az UPDATE utasításba, hogy a belső SELECT az őt körülvevő UPDATE utasítás oszlopaira hivatkozik.A külső UPDATE által érintett minden sorra lefut a belső SELECT. Példa: Adott az alábbi 3 tábla (és oszlopaik nevei)  CSAPOLJA (Kocsma, Sör)   SZERETI (Név, Sör)   ODAJÁR (Név, Kocsma)Válasszuk ki azokat akik járnak olyan kocsmába, ahol olyan sört csapolnak, amit szeretnek.SELECT DISTINCT Szereti.Név  FROM Szereti, Csapolja  WHERE Szereti.Sör=Csapolja.Sör  AND Csapolja.Kocsma IN   ( SELECT Odajár.Kocsma    FROM Odajár    WHERE Odajár.Név=Szereti.Név)Forrás:http://vassanyi.ginf.hu/ab/SQL/rovidSQL.htm

a

MERGE

r

A MERGE utasítás a többszörös INSERT és DELETE utasítások elkerülésére való.

ACID

r

ACID = savasság Egy adatbázistól elvárt képességek halmaza

Atomicity

r

Atomosság:A tranzakció a feldolgozás atomi egysége; vagy teljes egészében végrehajtódik, vagy egyáltalán nem.Forrás.http://shrek.unideb.hu/~nogre/AdatB/Elmelet/13.pdf

a

Consistency

r

Konzisztenciamegőrzés:Egy tranzakció konzisztenciamegőrző, ha teljes végrehajtása az adatbázist konzisztens állapotból konzisztens állapotba viszi át.Forrás:http://shrek.unideb.hu/~nogre/AdatB/Elmelet/13.pdf

a

Isolation

r

Izoláció/Elkülönítés: Egy tranzakciónak látszólag más tranzakcióktól elkülönítve kell végrehajtódnia. Ez azt jelenti, hogy a tranzakció végrehajtása nem állhat kölcsönhatásban semelyik másik konkurensen végrehajtott tranzakcióval sem.Forrás:http://shrek.unideb.hu/~nogre/AdatB/Elmelet/13.pdf

a

Izolációs szintek

Read Uncommited

Read Commited

Serializable

Repeatable Read

Durability

r

Tartósság:Egy véglegesített tranzakció által az adatbázison véghezvitt módosításoknak meg kell őrződniük az adatbázisban. Ezeknek a módosításoknak semmilyen hiba miatt nem szabad elveszniük.Forrás:http://shrek.unideb.hu/~nogre/AdatB/Elmelet/13.pdf

a

DDL

r

DDL = Data Definition Language (adatdefiníciós utasítások)Amelyek objektumok (táblák) létrehozására, módosítására és törlésére valók.(Tábla szerkezetének módosítása)DDL utasítások:-CREATE-DROP-TRUNCATE-COMMENT-RENAME-(SELECT)Forrás:http://tanulnijo.uw.hu/adatbazis/ab_kilencedik.htmlhttp://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands

a

TRUNCATE

r

TRUNCATE egy DDL utasítás,mely minden sort kitöröl az adott táblában.TRUNCATE táblanév;A DELETE-hez képest gyorsabb és nem használ annyi helyet.Azonban nem lehet ROLL BACK utasítással visszaállítani az általa kitörölt adatokat.Forrás:http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

a