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

A VIK Wikiből
David14 (vitalap | szerkesztései)
Diesel94 (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(9 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
'''IFNULL'''(''kifejezés1'',''kifejezés2'')


where logikai feltétel''
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.


A where után megadott logikai kifejezés teljesülése (=igaz) esetén az adott sor törlődik. A where elhagyható, ekkor a tábla összes sora törlődni fog.
== 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]]

A lap jelenlegi, 2014. április 3., 18:49-kori változata


Ez az oldal az Informatika 2 című tárgy - Adatbázisok használata labor beugrókérdéseinek kidolgozását tartalmazza.
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 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.

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!

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

A where feltételben lehet egyedül vizsgálni, a következő módon:

WHERE pelda IS NULL

Miképp működik a like operátor? Milyen joker karaktereket lehet használni?

kifejezés LIKE string minta

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
%: Tetszőleges hosszúságú karaktersorozat helyettesítése
": szimpla aposztróf, mivel, a szimpla aposztróf jel önmagában a stringhatároló karakter

Pl.: SELECT * FROM termek WHERE nev LIKE '%er%'

Azon termékek listája, amelyek neve tartalmazza az er karaktersorozatot

Hogyan működnek az oszlopfüggvények?

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

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

Mire szolgál a having kulcsszó?

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.

Írja fel a select utasítás általános szintaktikáját!

SELECT [DISTINCT] oszloplista
FROM táblalista
[WHERE logikai kifejezés]
[GROUP BY oszloplista]
[HAVING logikai kifejezés]
[ORDER BY oszloplista]

Mire szolgál az ifnull függvény MySQL Serveren?

IFNULL(kifejezés1,kifejezés2)

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.

Miképp lehet megadni két tábla outer joinjá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.

SELECT *
FROM termek RIGHT OUTER JOIN gyarto ON gyartoid=gyarto.id

SELECT *
FROM gyarto LEFT OUTER JOIN termek ON gyartoid=gyarto.id

Mit értünk az alatt, hogy egy tranzakció atomi?

Oszthatatlan, azaz vagy teljes egészében végrehajtódik, vagy teljes egészében elvetésre kerül. Köztes állapot nincs!

Mit jelent a tranzakciók konzisztencia tulajdonsága?

Az adatbázist konzisztens állapotból konzisztens állapotba viszi.

Mit jelent a tranzakciók tartósság tulajdonsága?

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.

Mit jelent a tranzakciók izolációs tulajdonsága?

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.

Mit értünk elveszett módosítás problémája alatt?

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.

Mit értünk fantom rekordok problémája alatt?

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.

Mit jelent a read committed izolációs szint?

Az egyes tranzakciók a rekordoknak csak a commitált képét láthatják.

Mit jelent a serializable izolációs szint?

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.

Mi a holtpont?

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.

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