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

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
a
 
(8 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:
  
'''Több rekord esetén:'''
+
_: 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
  
'''insert into''' ''táblanév (oszlopok listája)''
+
Pl.: '''SELECT''' * '''FROM''' ''termek'' '''WHERE''' ''nev'' '''LIKE''' '%er%'
  
'''select...'''
+
Azon termékek listája, amelyek neve tartalmazza az ''er'' karaktersorozatot
  
Itt a select egy lekérdezést hajt végre, és az általa lekérdezett összes sor beszúrásra kerül.
+
== Hogyan működnek az oszlopfüggvények? ==
  
== Milyen szintaktikájú SQL utasítással lehet módosítani rekordokat? ==
+
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
  
'''update''' ''táblanév''
+
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).
  
'''set''' ''oszlopnév=érték1, oszlopnév2=érték2...''
+
== Mire szolgál a having kulcsszó? ==
  
'''where''' ''logikai feltétel''
+
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.
  
A where rész elhagyható, ekkor a tábla összes rekordja módosításra kerül.
+
== Írja fel a select utasítás általános szintaktikáját! ==
  
== Milyen szintaktikájú SQL utasítással lehet törölni rekordokat? ==
+
'''SELECT''' ['''DISTINCT'''] ''oszloplista''
 +
'''FROM''' ''táblalista''
 +
['''WHERE''' ''logikai kifejezés'']
 +
['''GROUP BY''' ''oszloplista'']
 +
['''HAVING''' ''logikai kifejezés'']
 +
['''ORDER BY''' ''oszloplista'']
  
'''delete from''' ''táblanév''
+
== Mire szolgál az ifnull függvény MySQL Serveren? ==
  
'''where''' ''logikai feltétel''
+
'''IFNULL'''(''kifejezés1'',''kifejezés2'')
  
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.
+
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.
  
== Hogyan lehet vizsgálni egy kifejezés nullitását? ==
+
== Miképp lehet megadni két tábla outer joinját? ==
  
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
+
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.
  
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
 
 
 
%: tetszőleges hosszúságú szöveg helyettesítése
 
 
 
dupla aposztróf: szimpla aposztróf, mivel, a szimpla aposztróf jel önmagában a stringhatároló karakter
 
 
 
pl.: select * from termek where nev like &#8217;%er%&#8217;
 
 
 
azon termékek listája, amelyek neve tartalmazza az er karaktersorozatot
 
  
== Hogyan működnek az oszlopfüggvények? ==
+
== Mit jelent a tranzakciók tartósság tulajdonsága? ==
  
A lekérdezés eredményeként kapott rekordhalmazon lehet utólagos kalkulációt végezni velük:
+
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.
*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.
+
== Mit jelent a tranzakciók izolációs tulajdonsága? ==
  
== Mire szolgál a having kulcsszó? ==
+
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.
  
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.
+
== Mit értünk elveszett módosítás problémája alatt? ==
  
== Írja fel a select utasítás általános szintaktikáját! ==
+
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.
  
<pre>
+
== Mit értünk fantom rekordok problémája alatt? ==
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? ==
+
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.
  
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.
+
== Mit jelent a read committed izolációs szint? ==
  
== Miképp lehet megadni két tábla outer joinját MS SQL Serveren? ==
+
Az egyes tranzakciók a rekordoknak csak a commitált képét láthatják.
  
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.
+
== Mit jelent a serializable izolációs szint? ==
  
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., 17:49-kori változata

← Vissza az előző oldalra – 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.
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.