„Informatika 2 - Adatbázisok használata labor” változatai közötti eltérés

David14 (vitalap | szerkesztései)
Diesel94 (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(10 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
Ez az oldal az [[Informatika 2]] című tárgy - SQL nyelv labor beugrókérdéseinek kidolgozását tartalmazza.
{{Vissza|Informatika 2}}
 
Ez az oldal az [[Informatika 2]] című tárgy - '''Adatbázisok használata labor''' beugrókérdéseinek kidolgozását tartalmazza.<br>Az aktuális segédlet az aktuális (ajánlott) beugrókérdésekkel bejelentkezés után megtalálható a tanszéki honlapon a [https://www.aut.bme.hu/Upload/Course/VIAUA203/hallgatoi_segedletek/4.%20gyakorlat%20seg%C3%A9dlet_120316195751.pdf 4. gyakorlat segédlet címen] (2013 tavasz).


Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza.
Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza.
'''''FONTOS: Ezektől eltérő kérdések is előfordulhatnak a beugrókban! Ezek csak irányadó kérdések, így ajánlott a segédlet alapos áttanulmányozása is.'''''


'''Kérlek szerkesszétek, aktualizáljátok!'''
'''Kérlek szerkesszétek, aktualizáljátok!'''
7. sor: 11. sor:
__TOC__
__TOC__


== Hogyan lehet vizsgálni egy kifejezés nullitását? ==


== Milyen szintaktikájú SQL utasítással lehet létrehozni egy rekordot egy táblában? ==
A where feltételben lehet egyedül vizsgálni, a következő módon:


'''Egy rekord beszúrása:'''
'''WHERE''' ''pelda'' '''IS NULL'''


''insert into táblanév (oszlopok listája)''
== Miképp működik a like operátor? Milyen joker karaktereket lehet használni? ==


''values (értékek listája)''
''kifejezés'' '''LIKE''' ''string minta''


Az oszlopok listája elhagyható, ekkor minden oszlopnak értéket kell adni.
String összehasonlító operátor, a kifejezésben keres a mintának megfelelően, és ha a minta illeszthető a kifejezésre, akkor az operátor igaz értékkel tér vissza. A mintaillesztés case sensitive, a használható joker karakterek:


_: Pontosan EGY tetszőleges karakter helyettesítése<br>%: Tetszőleges hosszúságú karaktersorozat helyettesítése<br>": szimpla aposztróf, mivel, a szimpla aposztróf jel önmagában a stringhatároló karakter


'''Több rekord esetén:'''
Pl.: '''SELECT''' * '''FROM''' ''termek'' '''WHERE''' ''nev'' '''LIKE''' '%er%'


''insert into táblanév (oszlopok listája)''
Azon termékek listája, amelyek neve tartalmazza az ''er'' karaktersorozatot


''select...''
== Hogyan működnek az oszlopfüggvények? ==


Itt a select egy lekérdezést hajt végre, és az általa lekérdezett összes sor beszúrásra kerül.
A lekérdezés eredményeként kapott rekordhalmazon lehet utólagos kalkulációt végezni velük:
*'''SUM''': Értékek összegzése
*'''MIN''': Legkisebb érték megkeresése
*'''MAX''': Legnagyobb érték
*'''AVG''': Átlag számítása
*'''COUNT''': Rekordok megszámolása


== Milyen szintaktikájú SQL utasítással lehet módosítani rekordokat? ==
A kiszámítandó oszlopfüggvényeket a select listában kell megadni. Az adatbázis-kezelő szerver először lefuttatja a lekérdezést az oszlopfüggvények nélkül, majd az egyes rekordokat átadja az oszlopfüggvényeknek, az értékek kiszámítására. Az oszlopfüggvények a null értéket nem veszik figyelembe, kivéve a count(*) függvény (megszámolja, hogy hány rekordja van az adott relációnak).


''update táblanév
== Mire szolgál a having kulcsszó? ==


set oszlopnév=érték1, oszlopnév2=érték2...
Ha az oszlopfüggvény eredményére teszünk megkötést, akkor ezt a where részben nem adhatjuk meg, mivel az kiértékelődik még az oszlopfüggvények kiszámítása előtt. Ezért ha az oszlopfüggvények kimenetére szeretnénk szűrni, akkor azt külön a having kulcsszó után lehet megadni.


where logikai feltétel''
== Írja fel a select utasítás általános szintaktikáját! ==


A where rész elhagyható, ekkor a tábla összes rekordja módosításra kerül.
'''SELECT''' ['''DISTINCT'''] ''oszloplista''
'''FROM''' ''táblalista''
['''WHERE''' ''logikai kifejezés'']
['''GROUP BY''' ''oszloplista'']
['''HAVING''' ''logikai kifejezés'']
['''ORDER BY''' ''oszloplista'']


== Milyen szintaktikájú SQL utasítással lehet törölni rekordokat? ==
== Mire szolgál az ifnull függvény MySQL Serveren? ==


delete from táblanév where logikai felétel
'''IFNULL'''(''kifejezés1'',''kifejezés2'')


vagy
Ha ''kifejezés1'' értéke nem NULL, akkor ''kifejezés1'' értéke kerül kiírásra. Ha ''kifejezés1'' értéke NULL, akkor kifejezés2 értéke kerül kiírásra.


delete táblanév <- így minden sort törlünk a táblából
== Miképp lehet megadni két tábla outer joinját? ==


== Hogyan lehet vizsgálni egy kifejezés nullitását? ==
A join művelet tulajdonsága, hogy a nem párosítható rekordokat nem tartalmazza az eredményhalmaz. A left outer join abban tér el ettől, hogy ha mondjuk az első táblának volt olyan sora, ami semmilyen módon nem került be a kiválasztott sorok közé, akkor nem kerül be, itt viszont bekerül, és a hozzá tartozó második táblabeli oszlopok értékei mind null-ok lesznek. A right outer join ugyanez, csak a két tábla szerepe felcserélve.
 
kifejezés is null <- csak így lehet, a kifejezés = null értéke akkor sem lesz igaz, ha a kifejezés értéke egyébként null, mivel ha valamit null-al hasonlítunk össze, az mindig false


pl: SELECT FROM tanszekek WHERE shortname is null
'''SELECT''' *
'''FROM''' ''termek'' '''RIGHT OUTER JOIN''' ''gyarto'' '''ON''' ''gyartoid=gyarto.id
''
'''SELECT''' *
'''FROM''' ''gyarto'' '''LEFT OUTER JOIN''' ''termek'' '''ON''' ''gyartoid=gyarto.id''


Ezt a külön nyelvi konstrukciót lehet a null-ság vizsgálatára használni.
== Mit értünk az alatt, hogy egy tranzakció atomi? ==


== Miképp működik a like operátor? Milyen joker karaktereket lehet használni? ==
Oszthatatlan, azaz vagy teljes egészében végrehajtódik, vagy teljes egészében elvetésre kerül. Köztes állapot nincs!


kifejezés like string minta
== Mit jelent a tranzakciók konzisztencia tulajdonsága? ==


String összehasonlító operátor, a kifejezésben keres a mintának megfelelően, és ha a minta illeszthető a kifejezésre, akkor az operátor igaz értékkel tér vissza. A mintaillesztés case sensitive, a használható joker karakterek:
Az adatbázist konzisztens állapotból konzisztens állapotba viszi.


_: egy betű helyettesítése
== Mit jelent a tranzakciók tartósság tulajdonsága? ==


%: tetszőleges hosszúságú szöveg helyettesítése
Ha egy tranzakció lefutott akkor annak hatása tartósan megmarad. Azaz az adatmódosítás nemcsak a memóriában történik meg, hanem háttértárolón is rögzítésre kerül.


dupla aposztróf: szimpla aposztróf, mivel, a szimpla aposztróf jel önmagában a stringhatároló karakter
== Mit jelent a tranzakciók izolációs tulajdonsága? ==


pl.: select * from termek where nev like &#8217;%er%&#8217;
A párhuzamosan futó tranzakciók egymástól függetlenül hajtódnak végre úgy, mintha egymás után hajtódnának végre.


azon termékek listája, amelyek neve tartalmazza az er karaktersorozatot
== Mit értünk elveszett módosítás problémája alatt? ==


== Hogyan működnek az oszlopfüggvények? ==
Ha két vagy több tranzakció ugyanazon az adatelemen dolgozik, akkor a tranzakciók felül tudják írni egymás módosításait és csak annak a tranzakciónak marad meg a hatása, mely utolsónak adta ki a commit utasítást.


A lekérdezés eredményeként kapott rekordhalmazon lehet utólagos kalkulációt végezni velük:
== Mit értünk fantom rekordok problémája alatt? ==
*sum: értékek összegzése
*min: legkisebb érték megkeresése
*max: legnagyobb érték
*avg: átlag számítása
*count: rekordok megszámolása


A kiszámítandó oszlopfüggvényeket a select listában kell megadni. Az adatbázis-kezelő szerver először lefuttatja a lekérdezést az oszlopfüggvények nélkül, majd az egyes rekordokat átadja az oszlopfüggvényeknek, az értékek kiszámítására. Az oszlopfüggvények a null értéket nem veszik figyelembe, kivéve a count(*) függvény.
A fantom rekordok olyan rekordok, melyek "megjelenhetnek" illetve "eltűnhetnek" egy táblából egy tranzakció élete során. Mivel egy párhuzamosan futó tranzakció vihet fel új rekordokat egy táblába, illetve törölhet meglévőket.


== Mire szolgál a having kulcsszó? ==
== Mit jelent a read committed izolációs szint? ==


Ha az oszlopfüggvény eredményére teszünk megkötést, akkor ezt a where részben nem adhatjuk meg, mivel az kiértékelődik még az oszlopfüggvények kiszámítása előtt. Ezért ha az oszlopfüggvények kimenetére szeretnénk szűrni, akkor azt külön a having kulcsszó után lehet megadni.
Az egyes tranzakciók a rekordoknak csak a commitált képét láthatják.


== Írja fel a select utasítás általános szintaktikáját! ==
== Mit jelent a serializable izolációs szint? ==
 
<pre>
select [discint] oszloplista
from táblalista
[where logikai kifejezés]
[group by oszloplista]
[having logikai kifejezés]
[order by oszloplista]
</pre>
 
== Mire szolgál az isnull függvény MS SQL Serveren? ==
 
Az isnull(kifejezés1,kifejezés2)   Ha a kifejezés1 értéke nem null, akkor a kifejezés1-et adja vissza, ha null, akkor a kifejezés2-t. Néha van olyan, hogy egy változó értéke lehet, hogy null, és ha null, akkor lehet, hogy helyette valami mással szeretnék dolgozni.
 
== Miképp lehet megadni két tábla outer joinját MS SQL Serveren? ==
 
A join művelet tulajdonsága, hogy a nem párosítható rekordokat nem tartalmazza az eredményhalmaz. A left outer join abban tér el ettől, hogy ha mondjuk az első táblának volt olyan sora, ami semmilyen módon nem került be a kiválasztott sorok közé, akkor nem kerül be, itt viszont bekerül, és a hozzá tartozó második táblabeli oszlopok értékei mind null-ok lesznek. A right outer join ugyanez, csak a két tábla szerepe felcserélve.


select *
A tranzakciók ütemezése konfliktus ekvivalens egy soros ütemezéssel. Azaz a tranzakciók úgy ütemeződnek, mintha egymás után futnának le.


from termek right outer join gyarto on gyartoid=gyarto.id
== Mi a holtpont? ==


select *
Előfordulhat olyan szituáció, hogy két vagy több a párhuzamosan futó tranzakció egymásra vár, és egyik sem tudja folytatni futását. Mivel olyan erőforrásra vár amit a másik tranzakció birtokol, viszont a másik olyan erőforrásra vár, melyet az egyik birtokol. Ezt a szituációt nevezik holtpontnak.


from gyarto left outer join termek on gyartoid=gyarto.id
== Ismertesse az erőforrás foglaltsági gráf működését! ==


Holtponti helyzetet erőforrás foglaltsági gráffal lehet szemléltetni és felismerni. Az erőforrás foglaltsági gráf olyan irányított páros gráf, melynek a csomópontjai: az erőforrások és folyamatok.<br>Az élek jelentése (iránytól függően):
*Az adott erőforrást az adott tranzakció birtokol (erőforrás -> tranzakció).
*Egy adott erőforrásra vár az adott tranzakció (tranzakció -> erőforrás).
Holtponti helyzet akkor és csak akkor van, ha az erőforrás foglaltsági gráfban irányított kör van.


[[Category:Villanyalap]]
[[Kategória:Villamosmérnök]]