3. Adatbázis definiálása és kezelése

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "3. Adatbázis definiálása és kezelése"

Átírás

1 3. Adatbázis definiálása és kezelése 3.1. Bevezetés 3.2. Tevékenységek és eszközök áttekintése 3.3. Adatbázis definiálása 3.4. Adatkezelı SQL parancsok 3.5. Adatkezelés az Access grafikus felületén

2 94 INFORMATIKUS SZAKMAI ISMERETEK 3.1 Bevezetés Ez a fejezet a relációs adatbázisok létrehozásának és mőködtetésének tevékenységeirıl és e tevékenységek eszközeirıl szól. Az utóbbiak közül részletesen ismerteti az SQL parancsnyelvet és az Access adatbáziskezelı felületét. A 3.2. alfejezet áttekinti az adatbázisok létrehozásának feladatait, köztük a migrációt, az adattisztítást; azután az adatbázis biztonságával összefüggı ellenırzési, megelızési és helyreállítási megoldásokat; az adatbázistartalom hitelességének feltételeit biztosító megoldásokat; az adatbázis-adminisztrátor feladatait, a felhasználók konkurens kiszolgálásának és a tranzakciók korrekt lekezelésének megoldásait. A 3.3. alfejezetben az olvasó példák útján is részletesen megismerheti az adatbázis elemeinek definiálására szolgáló fıbb SQL parancsokat, mint a CREATE TABLE és a CREATE INDEX parancs, valamint az Access tábladefiniáló grafikus felületét. A 3.4. alfejezet az adatok bevitelére, törlésére, módosítására és lekérdezésére szolgáló további SQL parancsokat (INSERT, DELETE, UPDATE, SELECT) mutat be példák sorozatán keresztül. Ebben a részben az olvasó egészen összetett adatkezelı feladatok megoldásában is jártasságot szerezhet. A 3.5. alfejezet a 3.4 alfejezetben elıfordultakhoz hasonló feladatok megoldását mutatja be, de már nem SQL parancsok, hanem az Access párbeszédes, grafikus adatkezelı felületének felhasználásával.

3 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE Tevékenységek és eszközök áttekintése Adatbázis létrehozásának és mőködtetésének tevékenységei Adatbázis definiálása és létrehozása A 2.7. alfejezetben ismertetett adatbázistervezés végeredménye a fizikai adatbázisdefiníció. Ez relációs adatbázisok esetében egy SQL nyelvő parancsfájl (lásd a és a szakaszban), amelynek tartalmát az adatbázistervezést (adatmodellezést) támogató CASE 1 szoftver a benne elkészült adatmodell alapján automatikusan generálja. Ez a parancsfájl az adatbázis adattábláit (annak összetevıit), indextábláit, táblakapcsolatait, megszorításait, adatintegritási és üzleti szabályait leíró parancsokból (röviden adatdefiniáló parancsokból), valamint a hozzáférési jogokat adó parancsokból áll. Ha egy ilyen SQL parancsfájlt valamely (relációs) adatbáziskezelı rendszerrel lefuttatunk, akkor létrejön a definíciónak megfelelı szerkezető üres adatbázis, amely persze nem teljesen üres, hiszen az adatszótárában a saját szerkezetleírását már tartalmazza. Egy adatbázist használó új szoftverrendszer fejlesztésekor az adatbázis tesztváltozatát legkésıbb a programok kódolásának megkezdése elıtt létre kell hozni, mert nélküle a kódolással párhuzamosan folyó egységtesztek nem hajthatók végre. Az adatbázis feltöltése Adatmigráció A létrehozott adatbázist elıször is fel kell tölteni adatokkal. Ha a kezdeti feltöltéskor egy korábban használt adatbázis(ok) vagy valamilyen fájlrendszer(ek) adatait töltik be az új adatbázisba, akkor ezt adatmigrációnak nevezik. A migráció minimálisan adatkonverziót jelent, de gyakran adattisztítást is magában foglal. A forrásadatbázisban vagy forrásfájlban az elemi adatok (adatmezık) formátuma vagy az összetett adatok szerkezete eltérhet az új adatbázisban elvárt formátumtól és szerkezettıl, ezen segít a konverzió mint olyan eljárás, amely a forrásoldali formátumot és szerkezetet a céloldalon elvárt formátumra és szerkezetre alakítja át. Az adattisztítás alatt a forrásadatok hiányosságainak és ellentmondásainak (egy szóval: inkonzisztenciájának) kiszőrését és javítását értjük. Ebbıl a szőrés általában automatizálható, a javítás azonban már egyedi emberi beavatkozást, utánajárást igényel. Gyakran éppen azért kerül sor új rendszer fejlesztésére, mert korábbi megbízhatatlanul mőködött, azaz hiányos, illetve ellentmondásos (egy szóval: inkonzisztens) adattartalomhoz vezetett; ilyenkor az adattisztítás elkerülhetetlen. Mivel a szigetrendszerek adatellenırzési lehetıségei korlátozottabbak az integrált rendszerekénél, a szigetrendszerekrıl integrált rendszerekre való áttérés esetén is indokolt az adattisztítás. Adattárház frissítése A vezetıi információrendszerek (üzleti intelligencia rendszerek) adatbázisának, az adattárháznak (lásd a szakaszban) a frissítése az új adatoknak a szervezet más (OLTP) adatbázisaiból és adatforrásaiból való rendszeresen ismételt áttöltésével történik. Tehát az adattárház frissítése napi gyakorisággal igényli azoknak a migrációs eljárásoknak a végrehajtását, amelyek az OLTP adatbázisoknak csak a kezdeti feltöltését jellemzik. 1 Computer Aided Software Engineering szoftver lásd a fejezetben.

4 96 INFORMATIKUS SZAKMAI ISMERETEK Az adatbázis biztonságával és hitelességével összefüggı feladatok Az adatbázis biztonsága megkívánja, hogy azon csak azok végezhessenek mőveletek, akik arra jogosultak, és csak olyan mőveleteket végezhessenek, amelyekre jogosultak, illetve csak olyan mőveleteket végezhessenek, amelyek nem sértik az adatbázis integritását, konzisztenciáját. Ennek érdekében minden mőveletnek át kell esni egy szigorú és automatizált ellenırzésen, amely kiszőri, ha a fenti megkötések valamelyike nem teljesül. Az adatbázis különbözı elemeihez kötött hozzáférési jogok ellenırzését az adatbáziskezelı automatikusan elvégzi az adatbázisdefiníció részeként (vagy utólag) kiadott hozzáférésbeállító parancsoknak megfelelıen. Egyéb szabályok betartásának ellenırzését és a szabályt sértı mőveletek visszautasítását külön megszorításokkal, bonyolultabb szabályok esetén triggerekkel és tárolt eljárásokkal vagy az adatbázist használó alkalmazásokba programozott eljárásokkal valósítják meg. A tárolt adatbáziseljárások vagy önálló programnyelven vagy az SQL speciális kiegészítését képezı procedurális nyelven (pl. PL/SQL) írt utasításokból álló programegységek, amelyek maguk is az adatbázisban tárolódnak, és az adatbáziskezelı adott adatbázisszabály által elıírt módon (a szabályban hivatkozott típusú esemény bekövetkezésekor) automatikusan lefuttatja ıket. (Az Oracle adatbáziskezelı esetében az olyan szabályokat, amelyek adott típusú esemény bekövetkezésekor automatikusan egy adott tárolt eljárást indítanak el, triggernek nevezik.) Megjegyzés: Az adatbázisszabályok és azok által indított tárolt eljárások nem csak ellenırzést szolgálnak; és ellenırzés esetén sem mindig az a feladatuk, hogy visszautasítsák valamilyen nem megengedett mőveletek végrehajtását. Vannak olyan ún. vízesésszabályok is, amelyek úgy gondoskodnak az adatbázis integritásának megırzésérıl, hogy a felhasználó által kezdeményezett mőveleten felül további mőveleteket is végrehajtatnak. Például a felhasználó (vagy egy program) egy rendelés törlését kéri, és egy vízesésszabály gondoskodik arról, hogy a rendeléssel együtt annak tételei is törlıdjenek. Tipikusan nem ellenırzést szolgáló adatbázisszabály egy olyan üzleti szabály, amely valamely cikk adott készletezési helyen vett készletének adott szint alá csökkenésekor egy rendelés készítését és elküldését kezdeményezi. Ha az ellenırzési szabályokat adatbázist használó alkalmazásokba programozott eljárásokkal (tehát nem az adatbázisban tárolt eljárásokkal) valósítják meg, akkor gondoskodni kell arról, hogy a felhasználók az adatbázist csak az erre szolgáló alkalmazás(ok)ból érhessék el. Megjegyzés: Érdekes dilemma, hogy az alkalmazáslogikát adatbázisszabályokkal és tárolt eljárásokkal vagy alkalmazásokba programozott eljárásokkal célszerőbb-e megoldani. Az olyan adabáziskezelı rendszer esetében, amely lehetıséget ad rá, az adatbázisszabályokkal és tárolt eljárásokkal elegánsabb és hatékonyabb megoldások készíthetık. Azonban egyidejőleg romlik a rendszer hordozhatósága, mert az egyik típusú adabáziskezelı rendszerre írt tárolt eljárások nem mőködnek más típusú adabáziskezelı vezérlése alatt. Az illetéktelen és a hibás / téves mőveleteken túl olyan más okok is vezethetnek sérüléshez vagy meghibásodáshoz, amelyek elıfordulását megelızı biztonsági eljárásokkal nem lehet kizárni. Ilyen eshetıségek miatt arra is fel kell készülni, hogy a sérült adatbázis rövid idın belül helyreállítható legyen. Ennek érdekében az adatbázis állapotáról elıírt idıközönként biztonsági mentést kell készíteni, a mentések között történt tranzakciókat pedig naplózni kell. A helyreállítás alkalmával visszatöltik az adatbázis valamely, a sérülést megelızıen elmentett állapotát, majd megismételtetik az ennek mentése óta történt tranzakciókat.

5 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 97 Az adatbázis tartalmának hitelessége csak akkor ítélhetı meg, ha bármely rekord (adatsor) tartalmáról vagy akár az egyes mezık értékérıl megállapítható, hogy az melyik felhasználó beavatkozásának eredményeként és mikor állt elı. Ez az igény vagy az adatállapotok (állapot + ki állította be + mikor) vagy a mőveletek (mővelet + ki hajtotta végre + mikor) naplózásával szolgálható ki. Valamilyen szintő naplózást az adatbáziskezelı eleve végez, de speciális igények esetén az adatbázisba a szakterületi adatok tábláin felül a naplóadatok strukturált tárolására alkalmas táblákat is tervezni kell, és az ezek töltését és elemzését végzı eljárásokat is ki kell fejleszteni. Adatbázis-adminisztráció Az adatbázis felhasználói között van egy kitüntetett: az adatbázis-adminisztrátor. Az ı dolga: szaktanácsadással szolgálni az adatbázis és a migráció tervezése, valamint az adatbázist használó alkalmazások fejlesztése során; létrehozni az új adatbázist; irányítani, felügyelni a migrációt; hozzáférési jogokat osztani a többi felhasználó részére; felügyelni a biztonsági feladatok ellátását (naplók ellenırzése, biztonsági mentések felügyelete), szükség esetén végrehajtani a helyreállítást, a tapasztalatok alapján javítani, fejleszteni a biztonsági megoldásokat; végrehajtani a fizikai tárolási struktúrák rendszeres újraszervezését (pl. hash leképezés egyenletesebbé tétele vagy az indextáblák kiegyensúlyozása céljából végzett újraszervezéseket); elvégezni az esetlegesen elégtelen teljesítmény javítására alkalmas hangolásokat (ez általában az eredetileg tervezett tárolási struktúrák, leképezési eljárások lecserélését; az eredetileg tervezett kulcsok helyett más kulcsok szerinti indextáblák alkalmazását jelentheti); végrehajtani az adatbáziskezelı szoftver verzióváltásaival járó feladatokat; szükség esetén bıvíteni, módosítani az adatbázis (logikai) sémáját; elvégezni a felhasználóknak az adatbázis használatával összefüggı képzését. Nagyobb szervezeteknél az adatbázis-adminisztrátornál szélesebb hatáskörrel rendelkezı, az egész szervezet adatvagyonáért felelıs adat-adminisztrátorra is szükség van. Az adat-adminisztrátor tevékenységének súlypontja nem az adatbázisok üzemeltetésére, hanem azok tervezésére, fejlesztésére esik. Az ı feladata a fejlesztési projektek koordinálása és felügyelete a szervezeti szintő adatintegráció fenntartása céljából. Az adatvagyont egy szervezeti szintő adatszótár írja le. Ez az adattervezés tekintetében meghatározó kiindulási alapot képez minden fejlesztési projekt számára, egyúttal a fejlesztések hatására szervezeti szinten érdekelt és az adat-adminisztrátor által jóváhagyott új adatfogalmakkal bıvül. Az adatbázis használata adatkezelési mőveletek Végül nézzük azokat a mőveleteket, amelyek végrehajthatósága céljából az adatbázist létrehozzuk: a folyamatos üzemeltetés során az adatbázist újabb és újabb adatokkal bıvítjük, a már tárolt adatokat pedig módosíthatjuk, némelyeket archiváljuk és töröljük, valamint az adatokat különbözı célokból lekérdezzük. Relációs adatbázisok esetén e mőveletek is SQL nyelvő parancsokkal (lásd a szakaszban és a 3.4. alfejezetben) kezdeményezhetık még akkor is, ha a felhasználó ebbıl semmit sem lát, mert ı egy felhasználói programmal áll kapcsolatban, és az SQL parancsokat ez a program adja ki helyette. Az adatbázismőveletek végrehajtási mechanizmusának megértéséhez tisztában kell lenni két fontos körülménnyel:

6 98 INFORMATIKUS SZAKMAI ISMERETEK Az adatkezelési mőveletek mindig valamilyen tranzakció feldolgozásának a részét képezik. Az adatbázist konkurens módon több felhasználó használja, azaz az adatbázismotornak egyidejőleg több felhasználó által kezdeményezett mőveleteket kell végrehajtania. Az alkalmazói környezetben tranzakciónak számít minden olyan esemény, amelyet az adatbázis valamilyen állapotváltozásának kell reprezentálni. Az adatbázisnak egy eseményt megfelelıen tükrözı állapotváltozását általában nem egyetlen adatbázismővelettel, hanem mőveletek egy sorozatával lehet produkálni. Ezért az adatbáziskezelı rendszer számára a tranzakció egy olyan mőveletsorozat, amelynek végét egy tranzakció vége parancs jelöli. A továbbiakban az ilyen mőveletsort technikai értelemben vett tranzakciónak nevezzük, de ahol az nem okoz félreértést, röviden ezt is tranzakciónak mondjuk. Megjegyzés: Egy tisztán lekérdezı mővelet elvben nem számít tranzakciónak, mert nem változtatja meg az adatbázis állapotát. Azonban technikailag a lekérdezı parancsok is egy (technikai értelemben vett) tranzakció részeként adhatók ki. Példa tranzakcióra: Ha egy kereskedelmi tevékenységet folytató cég belföldre árukat értékesít, akkor egy (esetleg több tételes) kiszállítás esemény alkalmával az adatbázis tartalmát a következı mőveletek együttesével kell aktualizálni: Létre kell hozni egy új sort a KISZÁLLÍTÁS táblában. A kiszállítás minden egyes tételének megfelelıen létre kell hozni egy-egy sort a KISZÁLLÍ- TÁSTÉTEL táblában. A KÉSZLET táblában minden olyan árukészlet sorában, amibıl e kiszállítás valamely tételéhez árut vételeztek, csökkenteni kell a készleten lévı mennyiséget az onnan kiszállított mennyiséggel. Minden kiszállítástételrıl létre kell hozni öt sort a FİKÖNYVISZÁMLA-FORGALOM táblában (egy Eladott áruk beszerzési értéke tartozik, egy Áruk elszámolóáron követel egy Belföldi vevık tartozik egy Belföldi értékesítés árbevétele követel és egy Fizetendı ÁFA követel forgalomsort). Ha egy tranzakció feldolgozása valamilyen akadály miatt nem fejezıdhet be, akkor az adatbázis tartalma szükségképpen valótlan és ellentmondásos (inkonzisztens) lesz. Így ha a keretezett példában a feldolgozás a kiszállítástételek létrehozása után megszakad, azaz a készletsorok aktualizálására már nem kerül sor, akkor az adatbázis a valóságosnál nagyobb készleteket fog mutatni. A mondottakból következik, hogy a tranzakció megbonthatatlan egységként kezelésének képessége kézenfekvı elvárás az adatbáziskezelı rendszerekkel szemben. Másképpen szólva a (technikai értelemben vett) tranzakció lényegi jellemzıje, hogy az csak egészében hajtható végre, vagy sehogy sem, azaz egy félbeszakadt tranzakció esetében az adatbáziskezelınek képesnek kell lenni a tranzakció odáig végrehajtott mőveleteinek érvénytelenítésére; vagyis a tranzakció elıtti állapot visszaállítására az adatbázis mindazon részében, amit a tranzakció addigi mőveletei érintettek. Az SQL nyelvben egy tranzakció végét a COMMIT parancs vagy a ROLLBACK parancs jelzi. (A tranzakció kezdetét jelzı parancsra általában nincs szükség: a tranzakció kezdete azonos a felhasználó adatbázishoz való kapcsolódását követı elsı adatbázismővelettel vagy egy tranzakciót lezáró parancs utáni elsı adatbázismővelettel. Kivétel a Microsoft SQL Server, amelynél létezik a BEGIN TRANSACTION parancs.): A COMMIT parancs következménye a tranzakció olyan befejezése, hogy az adatbáziskezelı a tranzakció mőveleteinek hatását érvényesíti (véglegesíti) az adatbázison. A ROLLBACK paranccsal az aktuális tranzakciót félbehagyásra kényszerítı hiba esetén kérhetı fel az adatbáziskezelı a tranzakció odáig végrehajtott mőveleteinek érvénytelenítésére; azaz az ezen mőveletek által érintett adatbázirész tranzakció elıtti állapotának visszaállítására.

7 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 99 Még arról is szólni kell, hogy a traknzakciók korrekt kezelése hogyan mőködik az adatbázis konkurens használata esetén. Bár a hozzáférési jogok behatárolják, hogy egy-egy felhasználó az adatbázis mely részét éri el, ez általában nem jelenti azt, hogy az egyes felhasználók csak elkülönült privát részek felett rendelkeznének; jellemzıbb hogy azonos adatokat több felhasználó közösen is használhat. Tehát a konkurens felhasználási mód nem csak az adatbázis egészére, hanem az egyes adatokra külön-külön is fennáll. Többfelhasználós környezetben minden felhasználónak külön csatlakozása (angolul session 2 ) van az adatbázishoz. (Pontosabban egy felhasználó többszörösen is kapcsolódhat egy adatbázishoz, és abban az esetben azonos felhasználó különbözı sessionjei is konkurálhatnak egymással). Egy tranzakció mindig egy felhasználói csatlakozáshoz (sessionhöz) tartozik. Ha egy T tranzakció már végrehajtott utasításai érintették valamely tábla valamely sorát, akkor a sor zárolódik a T tranzakciót kezdeményezı C csatlakozás számára. (Az érintés fogalmába általában az írási mőveletek tartoznak, de csatlakozásonként beállítható, hogy az olvasási mővelet, azaz lekérdezı mővelet SQL-ben a SELECT mővelet is tegyen zárat az olvasott sorokra.) A zárolt sorokat írásra más C1 csatlakozásból nem lehet elérni, olvasásra is csak akkor, ha a C1 csatlakozásnál az olvasás nem zároló mőveletként van beállítva, de ekkor a C1 csatlakozás az elért sor(ok)nak a T tranzakciót megelızı állapotát látja. A T tranzakció minden hatását a többi csatlakozás (még az ugyanazon felhasználó másik csatlakozása is) csak akkor érzékeli, amikor a C csatlakozás a T tranzakciót befejezte. A tranzakzió befejezésekor (akár érvényesítéssel COMMIT, akár érvénytelenítéssel ROLLBACK) a tranzakció által az adatbázisra tett összes zár eltávolítódik. A tranzakciókat megszakító akadályok gyakran éppen a zárolások miatt a konkurens csatlakozások között elıálló konfliktusokból, konkrétabban a holtponti helyzetbıl (angolul: dead lock döglött zár ) adódnak. A holtponti helyzet úgy jön létre, hogy egy T1 tranzakció zárolni akar egy S1 táblasort, de nem tudja, mert azt egy másik T2 tranzakció már zárolta, és ezért a T1 várakozik a T2 befejezésére. Azonban a T2 nem tud befejezıdni, mert ı meg éppen a T1 befejézésére várakozik, mert egy olyan S2 táblasorra szeretne zárat rakni, amelynek a zárolásában ıt a T1 megelızte. A holtponti helyzetet az adatbáziskezelı felismeri, és hibaüzenetet produkál az abban elakadt tranzakciók részére. Megjegyzés: A fejezet példáiban tranzakciókezeléssel nem foglalkozunk, mivel az eszközként feltételezett Accessben erre sem az egyszerő párbeszédes módban, sem a lekérdezésdefiniáló felület SQL-nézetében nincs lehetıség. Bár az Access SQL-je (a súgója szerint) tartalmazza a BEGIN TRANSACTION, a COMMIT és a ROLLBACK parancsokat, a lekérdezésdefiniáló felület SQL-nézetében kiadva mégsem ismeri fel azokat. Ennek következtében az Accessben minden SQL mővelet önálló tranzakciót képez. Egyébként a többfelhasználós adatbázishasználat (hálózatban) még Accessben is kipróbálható, azonban két okból is csak nagyon korlátozott mértékben: Egyrészt néhány felhasználó felett romlik a teljesítmény, másrészt mert (a fentiekben mondottak miatt) csak azon nem életszerő esetekben mőködik korrekten, amikor az SQL mőveletek egyenként képeznek tranzakciót Az SQL nyelv Manapság legelterjedtebben használatos relációs vagy objektumrelációs adatbázisok általánosan használt parancsnyelve az SQL (Structured Query Language). A név szó szerint strukturált lekérdezı nyelvet jelent, de ténylegesen ezen a nyelven nemcsak lekérdezı parancsok, hanem 2 Ejtsd szesön.

8 100 INFORMATIKUS SZAKMAI ISMERETEK az adatbázis szerkezetét definiáló parancsok (Data Definition Language DDL); valamint adataktualizáló parancsok (Data Manipulation Language DML) pl. adatok beírása, módosítása, törlése); tranzakcióvezérlı parancsok (Transaction Control TC) pl. COMMIT, ROLLBACK; bejelentkezésvezérlı és rendszervezérlı parancsok (Session Control & System Control SC) parancsok pl. ALTER SESSION, ALTER SYSTEM, SET ROLE is írhatók. Az SQL a következı módokon, illetve környezetekben használatos: parancsmód: interaktív SQL parancs vagy parancsfájl (script) formájában; adatbázisban tárolt SQL eljárás formájában (a tárolt eljárás az SQL parancsokon felül egyéb procedurális azaz elágazásokat, ismétlıdéseket vezérlı utasításokat is tartalmaz); harmadik generációs (3GL) vagy negyedik generációs (4GL) nyelvő forráskódba (programkódba) beágyazott SQL formájában. Az SQL nyelv jelenleg legfrissebbnek számító megvalósításai az ANSI/ISO SQL-99 szabványt követik. Azonban az SQL-nek a kölönbözı típusú adatbáziskezelı rendszereknél eltérı nyelvjárásai lehetnek, ezek a szabványos parancskészleten felüli speciális bıvítményeket is tartalmaznak, illetve a parancsok szintaktikai egységeire a szabványtól eltérı változatokat is megengednek. Lehet, hogy bizonyos feladatok megoldására az egyes bıvítmények hatékonyabb megoldást kínálnak, viszont az ezeket is tartalmazó SQL parancsoknak komoly hátránya a hordozhatatlanságuk. Minden SQL nyelvjárás közös jellemzıje, hogy a parancsok kulcsszavaiban a függvénynevekben és az adatbázisobjektumok (adattáblák, oszlopok, megszorítások, indextáblák stb.) nevében nem különböztetik meg a kis és a nagybetőket. Ez a szabály nem vonatkozik a parancsokban hivatkozott szövegkonstansokra. Például a SELECT FIZETES FROM ALKALMAZOTT WHERE NEV = 'Kovács János' select fizetes from alkalmazott where nev = 'Kovács János' parancsok egyenértékőek, viszont a select fizetes from alkalmazott where nev = 'KOVÁCS JÁNOS' select fizetes from alkalmazott where nev = 'Kovács János' parancsok már nem azok. Az utóbbi kettı közül csak az elsı fog jól mőködni, ha az alkalmazott neve csupa nagybetővel van letárolva a nev mezıben, illetve csak a második fog jól mőködni, ha az alkalmazott letárolt nevében csak a kezdıbetők nagyok. A szakasz és a 3.4. alfejezet több SQL parancsot ismertet. Az egyes parancsok leírását egy, a parancs (egyszerőbb változatainak) felépítését (szintaktikáját) mutató parancssablonnal kezdjük, majd a sablonnak megfelelı konkrét parancsokkal folytatjuk. Példaként tekintsük az INSERT parancs (egyszerőbb változatának) sablonját: INSERT INTO táblanév [ [AS] másodnév] [ (oszlopnévlista) ] VALUES (értéklista)

9 A sablonok elemei: ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 101 NAGYBETŐKKKEL írt utasításszavak INSERT INTO, AS, VALUES 3 vagy kerek zárójelek és bizonyos más elválasztójelek (pl. vesszık) a sablonnak megfelelı konkrét parancsba változatlanul beírandó elemek; dılt betőkkel szedett részeket még további minták magyarázzák (itt ilyen az oszlopnévlista, értéklista), vagy magyarázat hiányában a konkrét parancsban értelemszerően alkalmazandók (itt ilyen a táblanév, másodnév); olyan metajelek, amelyek egy konkrét parancsnak nem részei, mert csak a mintában bírnak jelentéssel, mint a [ ] zárójelek vagy a ponthármas. Az oszlopnévlista további sablonnal kifejtve: oszlopnév [, oszlopnév] A [ ] zárójelek azt jelzik, hogy a közéjük zárt rész nem kötelezı egység, azaz egy konkrét parancsban csak szükség esetén kell alkalmazni. Az INSERT parancs sablonjában ilyenek az [ (oszlopnévlista) ] az [ [AS] másodnév] és azon belül az AS kulcsszó magában is. Az oszlopnévlista sablonjában ilyen az [, oszlopnév]. Az utóbbi azt jelzi, hogy lista egyetlen névbıl is állhat, ha van második oszlop is, akkor annak nevét vesszı választja el a megelızı oszlop nevétıl. A ponthármas azt jelzi, hogy a (sablonban) megelızı egység további példányai is elıfordulhatnak egy konkrét parancsban, ha azokra szükség van. Az oszlopnévlista sablonjában elhelyezett ponthármas szerint a 2. oszlopnevet további (3., 4. stb.) oszlopnevek is követhetik. 1. megjegyzés: A tankönyvnek nem célja az SQL szabványos változatának kézikönyvszerő leírása. Így a parancsoknak nem a teljes, hanem csak egy-egy nagyon leegyszerősített sablonját adjuk meg 4. A fejezet nagyobb részében a Microsoft Access program SQL nyelvjárását fogjuk bemutatni, mivel ez a legtöbb helyen megtalálható olyan program, amely az adatbáziskezelés gyakorlását (akár SQL használatával, akár interaktív felületen) lehetıvé teszi. Ez azonban azzal jár, hogy a parancsok leírása, szintaktikája tartalmazni fog bizonyos ACCESSsajátosságokat, de néhol kitérünk más SQL nyelvjárások sajátosságaira is, fıleg olyan parancsok esetében, amelyek az Accessben nem mőködnek. 2. megjegyzés: Ha az olvasó a Microsoft Accessben akar SQL parancsokat kipróbálni, akkor azt furcsa módon lekérdezéstervezı (-definiáló) felületen teheti meg akkor is, ha nem lekérdezı parancsot akarunk szerkeszteni. Ezt a felületet a ábrákkal mutatott lépésekkel lehet elıhozni. Az elsı két lépés a 3.1. ábrán látszik: (1) Az objektumok közül a Lekérdezéseket, majd azon belül (2) a Lekérdezés létrehozása Tervezı nézetben mőveletet kell választani. Az ezután megjelenı Tábla megjelenítése ablakból (lásd a 3.2. ábrán) nem kell választani egyetlen táblát sem (különösen nem, ha egy új táblát definiáló SQL parancsot akarunk írni). Így a normál (grafikus) lekérdezı felület üresen jelenik meg (lásd a 3.3. ábrán), róla az SQL gombra kattintva válthatunk az SQL parancsok szerkesztésére szolgáló nézetre. A 3.4. ábra mutatja, hogyan kezdeményezhetı a megírt parancs végrehajtása. 3. megjegyzés: A 3.4. ábrán az SQL parancsszerkesztı ablak fejszegélyében az adatdefiniáló lekérdezés körülbelül annyira értelmes elnevezés, mint a fagyasztó tőz vagy a sóíző cukor. A furcsa nevet egyedül az Accessnek az a furcsa megoldása magyarázza, hogy benne 3 A konkrét parancsban ezek már kisbetővel is írhatók, mert az SQL a parancsszavakban (és a névhivatkozásokban) nem különbözteti meg a kis- és a nagybetőket.) 4 Az olvasó további SQL tudásra tehet szert például [Bhamidipati-1999] kézikönyvbıl.

10 102 INFORMATIKUS SZAKMAI ISMERETEK nem csak a lekérdezı parancsokat, hanem mindenféle SQL parancsot a lekérdezésdefiniáló felületen kell megadni ábra: Lekérdezéstervezés kezdeményezése Accessben 3.2. ábra: Lekérdezéstervezéshez táblák kiválasztása Accessben

11 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 103 Ha a normál lekérdezéstervezı nézet látszik, akkor erre a gombra kattintva válthatunk az SQL parancsok szerkesztésére szolgáló nézetre ábra: SQL szerkesztı nézet választása a lekérdezı felületen Erre a gombra kattintás kezdeményezi az éppen beírt SQL parancs(ok) végrehajtását ábra: SQL parancs szerkesztése Accessben Interaktív adatbáziskezelı felületek Az egyszerő felhasználónak nem kell tudnia, milyen táblákból, adatoszlopokból épül fel az adatbázis, nem kell ismernie az SQL parancsokat, mert általában nem közvetlenül használja az adatbázist, hanem valamilyen célalkalmazás vezérlése alatt, és helyette a célprogram ad ki SQL parancsokat az adatbáziskezelı irányában úgy, hogy arról a felhasználó nem is vesz tudomást. Ebben a szakaszban egy olyan köztes megoldást tárgyalunk, amelynél a felhasználó ismeri az adatbázis felépítését, és közvetlenül elérheti és manipulálhatja az adatbázis tábláit, a táblák részeit;

12 104 INFORMATIKUS SZAKMAI ISMERETEK de nem kell ismernie az SQL nyelvet, mert helyette egy könnyen megtanulható grafikus, párbeszédes (interaktív) felületen közölheti kívánságait, amelyeket a felület mögött mőködı program alakít át SQL parancsokká. Egy interaktív adatbáziskezelı felület birtokában a felhasználó közel akkora szabadsággal rendelkezik, mintha SQL parancsokat adna ki, mert nem csak azokat a mőveleteket kezdeményezheti, amelyeket a programozók egy speciális alkalmazásba beleírtak. (Az eszköz korlátai csak a különösen bonyolult lekérdezési feladatok esetén mutatkoznak meg.) Sokféle párbeszédes adatbáziskezelı felület létezik, azonos adatbáziskezelıhöz esetleg többféle is. (A PC kategóriájú számítógépek használói az ilyen szoftverek közül leggyakrabban valószínőleg az Microsoft Access programmal találkozhatnak.) Ezekkel általában adatdefiniáló, adataktualizáló és lekérdezı mőveletek egyaránt végezhetık, de itt most csak a lekérdezésre szorítkozva utalunk a képességeikre. Egy lekérdezés esetén a szoftver és a felhasználó közötti párbeszéd egy lehetséges menete a következı: 1. A szoftver az adatbázis adatszótárából kiolvassa, milyen táblák léteznek az adatbázisban, és ezek közül melyekhez férhet hozzá a bejelentkezett felhasználó. A szoftver az elérhetı táblák 5 listáját megmutatva, kéri a felhasználót, válassza ki azokat a táblákat, amelyek szerinte az aktuális lekérdezésben érintettek. A felhasználó azonos táblát többször többféle szerepben is kiválaszthat. (Ilyen feladatokra a szakaszban talál példákat.) 2. A szoftver kéri definiálni a kimenet adatait (a kimenet oszlopait), azok forrásait (táblaoszlopkat) és az említettek közötti transzformációt. A szoftver a válaszadást azzal könnyíti meg, hogy kiválasztásra felajánlja az elıbbi lépésben megjelölt táblák oszlopait, illetve az ezeken (ezek közt) végezhetı mőveleteket. 3. A szoftver kéri definiálni azokat a feltételeket, amelyek a forrástáblák sorait (az alapadatokat) a felhasználó igényeinek megfelelıen szőrik. Egyszerőbb esetben a feltételek az 1. lépésben kiválasztott táblák oszlopaira hivatkoznak, azokat különféle összehasonlító, illetve logikai mőveletekkel kapcsolják össze. Tehát most a szoftver ezek választékát ajánlja fel a felhasználónak. Bonyolultabb feladat esetén a feltétel egy újabb beágyazott lekérdezés eredményére is hivatkozhat. (Ilyen feladatra a szakasz mutat példákat.). Ekkor a beágyazott lekérdezésre is be kell járni a párbeszéd 1-5. lépéseit. 4. A felületen jelezhetı, ha a felhasználó a 2. lépésben definiált kimenı adatokat nem az egyes adatsorokról, hanem az adatsorok csoportjairól szeretné kérni. Akkor a szoftver a csoportosító ismérv(ek) választása céljából ismét felajánlja az 1. lépésben megjelölt táblák oszlopainak listáját. 5. Amennyiben a felhasználó élt a 4. lépésben adott lehetıséggel, akkor a szoftver kéri definiálni a csoportokból aggregált adatokra vonatkozó feltételeket, amelyek már a kapott csoportok (aggregátum sorok) halmazát szőkítik. Egyszerőbb esetben a feltételek csak a 2. lépésben megadott aggregáló kifejezésekre hivatkoznak, azokat különféle összehasonlító, illetve logikai mőveletekkel kapcsolják össze. Tehát most a szoftver ezek választékát ajánlja fel a felhasználónak. Bonyolultabb feladat esetén ez a feltétel is hivatkozhat egy újabb beágyazott lekérdezés eredményére. Ekkor a beágyazott lekérdezésre is be kell járni a párbeszéd 1-5. lépéseit. 6. Amennyiben a felhasználó több, azonos szintő lekérdezés eredményét halmazmőveletekkel akarja összekapcsolni, akkor mindegyik lekérdezésre külön-külön le kell folytatni az 5 Itt és a továbbiakban a táblák közé a virtuális táblákat a view-kat (lásd a szakaszban), illetve Access a korábban megírt és elmentett lekérdezéseket (lásd a szakaszban) is odaértjük.

13 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE párbeszédet, továbbá ki kell választani az összekapcsoló mőveletet (egyesítés, metszet vagy különbség). 7. A felületen jelezhetı, ha a felhasználó a kimenet sorait valamilyen sorrendben rendezetten szeretné kapni. Ekkor a rendezı ismérvek kiválasztása céljából a szoftver felajánlja a 2. lépésben definiált adatok listáját, és minden kiválasztott ismérvre külön-külön megadható, hogy a rendezés iránya növı vagy csökkenı Ellenırzı kérdések a 3.2. alfejezethez 1. Mit jelent az adatmigráció? 2. Az adatbázis biztonsága milyen ellenırzési, megelızési és helyreállítási megoldásokat igényel? 3. Mik a szükséges feltételei az adatbázistartalom hitelességének? 4. Milyen feladatokat lát el az adatbázisadminisztrátor? 5. Az adabáziskezeléssel összefüggésben mit jelent a (technikai értelemben vett) tranzakció? 6. Milyen módokon zárulhat egy tranzakció? 7. Többfelhasználós környezetben hogyan kezeli le az adatbáziskezelı rendszer azt az esetet, amikor különbözı felhasználók (sessionök) azonos adatot egyszerre akarnak változtatni? 8. Hogyan jön létre a holtponti helyzet? - Hogyan lehet kezelni? 9. Milyen típusú parancsokat tartalmaz az SQL nyelv? 10. Milyen módot kínál az Access az SQL parancsok kipróbálására? 11. Milyen lehetıségeket kínálnak az interaktív adatbáziskezelı felületek?

14 106 INFORMATIKUS SZAKMAI ISMERETEK 3.3 Adatbázis definiálása Adatbázis definiálása SQL nyelven Az SQL DDL parancsai közül itt csak az adattábla és az indextábla definiálására szolgáló CREATE TABLE és CREATE INDEX parancsokkal ismerkedünk meg, azokkal is csak kivonatosan, az egyszerőbb eseteikre szorítkozva: Nem foglalkozunk a parancsok olyan elemeivel, amelyekben az adattábla vagy az indextábla fizikai tárolási struktúrájáról lehet rendelkezni. (A 3.4. alfejezet az alapvetı adatkezelı parancsokat is tárgyalja.) Adattábla definiálása (CREATE TABLE parancs) Alább az adattáblát definiáló CREATE TABLE parancs leegyszerősített változatának sémája látható. (Az ilyen sémákban alkalmazott jelek értelmezését a szakasz tárgyalta.) CREATE TABLE táblanév ( definíciós egység [, definíciós egység] ) Egy definíciós egység kétféle lehet: vagy oszlopdefiníció, vagy tábla-megszorítás. Egy oszlopdefiníció mintája: oszlopnév adattípus [oszlopmegszorítás] Az oszlopnév értelemszerően alkalmazandó, de minden névhivatkozásra (tábla, indextábla, view, oszlop, megszorítás stb. nevére) be kell tartani a következı szabályokat: egy név alapesetben betővel kezdıdhet, betővel és számjegyekkel folytatódhat. A betők alatt az angol ábécé 26 betőjét és az _ (aláhúzás) jelet kell érteni. Ha más karaktereket is akarunk alkalmazni a névben (pl. a magyar ábécé ékezetes betőit, szóközt, kötıjelet stb.), akkor a nevet névzárójelek közé kell tenni. A legtöbb SQL nyelvjárásban névzárójelként a macskakörmök alkalmazhatók (pl. négy szóból álló név ). Ez alól pont az Access SQL-je képez kivételt. Az Accessben a [ ] zárójelpár alkalmazható névzárójelként, tehát az elıbbi példa az Accessben így néz ki: [négy szóból álló név]. (A [ ] jeleket most nem metajelként, hanem a konkrét parancsban ténylegesen alkalmazandó jelekként kell értelmezni, hiszen itt nem sablonról, hanem névhivatkozásra adott konkrét példákról van szó.) Az Access más tekintetben is eltér a szabványos SQL-tıl. Némi magyarításon esett át, ezért a névhivatkozásokban megengedi az ékezetes betőket anélkül, hogy a nevet [ ] jelek közé kellene tenni. Tehát az Access SQL-ben az Egységár szabályos oszlopnév. (Ha azonban a leírt parancsokat az olvasó egy másik SQL-ben is ki akarja próbálni, akkor ajánlatos az [Egységár] formánál maradni. Ugyanis errıl a [ ] globális cserével könnyő áttérni a szabványos SQL-ben is mőködı Egységár alakra.) Sajnos a magyarítás felemásra sikerült, elsısorban a grafikus felületen végzett mőveletekre terjed ki, az SQL-ben kiadott parancsokra már kevésbé, aminek az lett az eredménye, hogy az Access önmagával sem kompatibilis, ha váltogatjuk a grafikus felületen és az SQL-ben való használatot. Például a grafikus felületen a dátumot ilyen formában lehet megadni: # #, azonban ugyanez a dátum egy SQL parancsba már csak így írható be: #9/27/2007#. Hasonlóan az Igen/Nem típusú adat értékei a grafikus felületen: Igaz vagy Hamis. Ugyanezek egy SQL parancsban csak a True, illetve False, esetleg -1, illetve 0 alakban állhatnak. Emlékeztetünk rá, hogy az SQL a névhivatkozásokban nem különbözteti meg a kis és a nagy betőket, tehát egy vevocim oszlopnév azonos a VEVOCIM vagy a VevoCim oszlopnévvel.

15 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 107 Az adattípus az adott adatbáziskezelı által ismert adattípust jelent, pl.: INTEGER bináris egész szám, CHAR(hossz) fix hosszúságú karakterlánc, VARCHAR(maximális hossz) változó hosszúságú karakterlánc, DATE dátum, MONEY pénztípus. Az oszlopmegszorítás és a táblamegszorítás alakja: [CONSTRAINT megszorításnév] megszorítástörzs A fenti minta azt is kifejezi, hogy a CONSTRAINT kulcsszót csak akkor kell alkalmazni, ha a megszorítást névvel akarjuk ellátni, ha ezt nem tesszük meg, úgy az adatbáziskezelı fog valamilyen nevet adni a megszorításnak. A megszorítástörzs néhány változata oszlopmegszorítás esetén: [NOT] NULL PRIMARY KEY REFERENCES táblanév [(hivatkozott oszlopnév)] [ON DELETE CASCADE] CHECK (feltétel) NOT NULL Jelzi, hogy az oszlop nem lehet definiálatlan (NULL) értékő semelyik konkrét sorban. A NULL viszont éppen megengedi, hogy a táblában lehessenek olyan sorok, amelyekben az oszlop definiálatlan értékő. Az ilyen megszorítás hiánya a NULL megadásával egyenértékő, kivéve ha más megszorítás (pl. PRIMARY KEY) ezt ki nem zárja. A NULL érték egy speciális üres érték, ami azt jelenti, hogy egy egyedre egy (különben értelmezhetı) érték történetesen ismeretlen. Ha egy alkalmazottra a FIZETES oszlop 0 étékő, az azt jelenti, hogy ez az alkalmazott határozottan ingyen dolgozik; de ha NULL értékő, az azt jelenti, hogy nem tudjuk, mennyi a fizetése. Ha egy személyre a Leánykori_nev oszlop üres láncot tartalmaz, akkor az adott személynek határozottan nincs leánykori neve (születési neve), ha viszont NULL értéket tartalmaz, akkor a leánykori név ismeretlen. PRIMARY KEY Jelzi, hogy az oszlop elsıdleges kulcs. REFERENCES táblanév [(hivatkozott oszlopnév)] [ON DELETE CASCADE] Jelzi, hogy a definiált oszlop idegen kulcs a táblanévvel adott (fölérendelt) táblából. A hivatkozott oszlopnév a definiált oszloppal hivatkozott oszlop neve a fölérendelt táblában; és azt csak akkor kell megadni, ha különbözik a definiált oszlop nevétıl. Az [ON DELETE CASCADE] rész magyarázatát lásd késıbb, a táblamegszorításoknál! CHECK (feltétel) A zárójelek között a definiált oszlopra vonatkozó feltétel adható meg logikai kifejezés formájában. A megszorítástörzs néhány változata táblamegszorítás esetén: PRIMARY KEY (oszlopnév [, oszlopnév] ) FOREIGN KEY (oszlopnév [, oszlopnév] ) REFERENCES táblanév [(hivatkozott oszlopnév [, hivatkozott oszlopnév] )] [ON DELETE CASCADE] CHECK (feltétel) PRIMARY KEY (oszlopnév [, oszlopnév] ) Ha az elsıdleges kulcs több oszlopból tevıdik össze, akkor annak komponenseit a zárójelek közt vesszıvel elválasztva kell felsorolni. FOREIGN KEY (oszlopnév [, oszlopnév] ) REFERENCES táblanév [(hivatkozott oszlopnév [, hivatkozott oszlopnév] )] [ON DELETE CASCADE] Ha több oszlop együtt alkot egy idegen kulcsot akkor azt így táblamegszorításként lehet megadni. Az ON DELETE CASCADE rész alkalmazásával azt a (hivatkozás-integritási) szabályt lehet jelezni,

16 108 INFORMATIKUS SZAKMAI ISMERETEK hogy ha az idegen kulccsal hivatkozott sor törlıdik a fölérendelt táblából, akkor az arra hivatkozó összes sornak is törlıdni kell az éppen definiált táblából. (Például ha egy rendelés sor törlıdik a RENDELES táblából, akkor a ráhivatkozó tételeknek is törlıdni kell a RENDE- LESTETEL táblából.) Az ON DELETE CASCADE rész hiánya viszont azt jelzi, hogy a fölérendelt tábla egy sora mindaddig nem törölhetı, amíg legalább egy ráhivatkozó sor létezik az éppen definiált táblában. (Például nem törölhetı egy árucikk sora a CIKK táblából, amíg legalább egy ráhivatkozó készletsor létezik a KESZLET táblában.) CHECK (feltétel) A zárójelek között a tábla több oszlopa közötti összefüggést lehet megadni mint feltételt logikai kifejezés formájában. Például CHECK(Szuletes_datum <= Halalozas_datum). Két tábla definiálása: Az elmondottakat egy Alkalmazott és egy Irat tábla definíciójával szemléltetjük: CREATE TABLE Alkalmazott ( Torzsszam INTEGER PRIMARY KEY, Nev VARCHAR(40) NOT NULL, Neme CHAR(1) NOT NULL CHECK('N' OR 'F'), Szul_datum DATE NOT NULL, Osztalykod INTEGER NULL REFERENCES Osztaly, Fizetes MONEY NULL, Utolso_fiz_emeles DATE NULL, Ervenyesseg_vege DATE NULL ); CREATE TABLE Irat ( Iktatoszam INTEGER PRIMARY KEY, Ugyszam INTEGER NOT NULL REFERENCES Ugy, Bejovo_kimeno CHAR(2) NOT NULL CHECK(Bejovo_kimeno IN ('BE', 'KI')), Kuldte_partnerkod INTEGER NOT NULL CONSTRAINT Kuldo REFERENCES Partner (Partnerkod), Keszitette_torzsszam INTEGER CONSTRAINT Keszito REFERENCES Alkalmazott (Torzsszam), Intezkedo_torzsszam INTEGER CONSTRAINT Intezkedo REFERENCES Alkalmazott (Torzsszam), CONSTRAINT Partnerek_ugyintezok CHECK( ( Bejovo_kimeno='BE' AND Kuldte_partnerkod>0 AND Keszitette_torzsszam=0 AND Intezkedo_torzsszam>0 ) OR ( Bejovo_kimeno='KI' AND Kuldte_partnerkod=0 AND Keszitette_torzsszam>0 AND Intezkedo_torzsszam=0 ) ) ); 1. megjegyzés: Ha egy parancsfájlban több SQL parancsot helyezünk el, akkor elválasztásul az egyes parancsokat pontosvesszıvel (;) kell lezárni. 2. megjegyzés: Amennyiben a fenti parancsokat az olvasó az Access alatt akarja kipróbálni, az egyrészt elıkészítést igényel, másrészt az Access korlátai miatt csak részben lehetséges. Az elıkészítés a szakaszban a ábrákon mutatott mőveleteken felül azt is jelenti, hogy a CREATE TABLE Alkalmazott parancsot megelızıen létre kell hozni a benne hivatkozott Osztaly táblát. Az Access hiányossága, hogy a CHECK(feltétel) alakú megszorítást nem ismeri, tehát a fenti példában adott parancsokból a CHECK megszorításokat (az Accessben való kipróbálás idejére) ki kell hagyni, és utólag a tábladefiniálás

17 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 109 párbeszédes, grafikus felületén (lásd a szakaszban) oszlopra vagy táblára vonatkozó érvényességi szabályokkal lehet pótolni. Az Osztaly táblát elızetes létrehozása történhet vagy a tábladefiniálás párbeszédes, grafikus felületén vagy az alábbi SQL paranccsal: CREATE TABLE Osztaly (Osztalykod INTEGER PRIMARY KEY, Osztaly_neve VARCHAR(40) NOT NULL) Indextábla definiálása (CREATE INDEX parancs) Az indextáblát definiáló CREATE INDEX parancsnak is csak az egyszerő eseteire adunk sémát: CREATE [UNIQUE] INDEX indextábla neve ON adattábla neve ( oszlopnév [, oszlopnév ] ) Az oszlopnevek annak kulcsnak a komponensei, amelyre az indexelés történik, egyébként pedig az adattáblából vett oszlopokat jelentenek. Több oszlopnevet összetett kulcs esetén kell felsorolni. Az UNIQUE rendelkezést akkor kell alkalmazni, ha minden kulcsérték az adattáblának csak egy sorában fordulhat elı. Tehát elsıdleges kulcsra indexeléskor ezt a rendelkezést alkalmazni kell. Indextáblák definiálása: A parancs további magyarázata helyett, szemléltetésül álljon itt három konkrét parancs: CREATE UNIQUE INDEX Ugyirat_index1 ON Ugyirat (Ugyiratszam); CREATE INDEX Ugyirat_index2 ON Ugyirat (Kuldte_partnerkod); CREATE UNIQUE INDEX RT_index ON Rendelestetel (Rendelesszam, Cikkszam); A relációs adatbázisokban az elsıdleges kulcsra és az idegen kulcsokra indokolt indexet felépíteni, de elıfordulhat, hogy olyan oszlopra célszerő indexelni, ami egy adott táblában sem elsıdleges kulcs, sem idegen kulcs. Erre tipikus példa egy személyi nyilvántartás név szerinti indexelése. Az is igaz, hogy az OLTP adatbázisokban az indexeléssel takarékoskodni kell. Mert amíg az indextáblák alkalmazása a lekérdezést általában gyorsítja, addig a karbantartást jelentısen lassíthatja. Ennek az az oka, hogy amikor például egy új sort iktatunk be egy adattáblába, azzal együtt indexbejegyzéseknek kell keletkezni az azon táblára felépített összes indextáblában is Adatbázis definiálása az Access grafikus felületén Új adatbázist vagy egy adatbázisban új elemeket a szakaszban már említett párbeszédes felületeken is definiálhatunk. Ezek közé tartozik a Microsoft Access programmal grafikus (táblázatos) felülete. Az ezen szakaszban bemutatott példák és képernyıábrák is az Access felhasználásával készültek. Tábla definiálása A 3.5. ábrán az olvasó az Access táblatervezı felületét, és abban történetesen a fıkönyvi számlák forgalomtételeit tartalmazó tábla (táblanév: Fkvisza_forg) tervét (definícióját) látja. Ezen a felületen megadhatók a tábla oszlopainak, más szóval mezıinek a jellemzıi (mezınév, adattípus és további általános, illetve megjelenítési jellemzıi). Mivel a fókusz éppen az Fkvisza_forg tábla Számlaoldal nevő mezıjén van, az alsó füleslapokon ennek a mezınek a további jellemzıit lehet látni, illetve megadni. Például az Érvényességi szabály nevő rovatban a Számlaoldal lehetséges értékeire vonatkozó megszorítás adható meg: a = T Or = K megszorítás azt jelenti, hogy a tábla Számlaoldal mezıjében csak a T (tartozik) vagy a K (követel) érték állhat.

18 110 INFORMATIKUS SZAKMAI ISMERETEK Az Fkviszla_forg tábla értelmezése: E tábla rendeltetése, hogy a gazdasági események (az azokat képviselı bizonylatok) könyvelésekor keletkezı fıkönyvi forgalomtételeket tárolja. Tetelsorszam: Egy fıkönyvi számlára könyvelt forgalomtétel azonosítója (elsıdleges kulcsa). Idoszakkod: Annak a mérlegidıszaknak a kódja, amelyre a forgalomtétel könyvelve lett. Szamlatukorkod: A Szamlatukor-sor azonosítója, azaz idegen kulcs a Szamlatukor táblából (lásd a 3.9. ábrán), amely a létezı fıkönyvi számlaszámokat (Fkviszla_szam) tárolja. Tehát az Fkviszla_forg tábla soraiban a Szamlatukorkod hivatkozza azt a fıkönyvi számlaszámot, amelyre a sorban tárolt tétel könyvelve lett. (De akkor miért nem a fıkönyvi számlaszám áll a Szamlatukorkod helyén? Azért, mert a Szamlatukor tábla sorait a fıkönyvi számlaszám nem azonosíthatja, hiszen azonos fıkönyvi számlaszám a tábla több sorában is megjelenhet. Ugyanis ez a tábla a számlaszámokat történetileg tárolja, azaz nem csak az aktuálisam érvényes számlaszámokat, hanem a korábbi években érvényeseket is tartalmazza. Így, ha egy számlaszám valamikor érvényes volt, majd érvénytelenítették, majd ismét érvényessé vált de már a korábbitól különbözı jelentéssel, akkor ez a számlaszám szükségképpen több Szamlatukor-sorban van jelen.) Szamlaoldal: Azt mutatja, hogy a Szamlatukorkod hivatkozott számla melyik oldalára lett könyvelve a tétel összege. Értékei: T = tartozik; K = követel. Osszeg: Az adott számla adott oldalára könyvelt forgalomérték (forintban). Bizonylatkod: A Bizonylat táblában a tétel forrásbizonylatát hivatkozó idegen kulcs. Az azonos bizonylatról keletkezett tételek éppen arról ismerhetık fel, hogy mindegyikben azonos a Bizonylatkod értéke. Tételleírás: Tetszıleges emlékeztetı szöveg. TJ_tetelsorszam: Csak törlı vagy javító tételben van kitöltve, és az azzal törölt vagy javított forgalomtétel azonosítóját tartalmazza. Kapcsolat: Szintén csak törlı vagy javító tételben van kitöltve. Értékei: T = törlés; J = javítás. Megjegyzés: A számvitel szabályai szerint az egyszer már lekönyvelt tétel nem változtatható. Ha esetleg utóbb hibásnak bizonyul, akkor is az adatbázisban marad, a hiba csak további strornózó és javító tételek hozzáadásával korrigálható: Ha a hiba csak annyi, hogy egy tételt egyáltalán nem kellett volna könyvelni, akkor csak stornózni kell, azaz a tételével azonos összeggel és azonos számlára, de a számla ellenkezı oldalára vonatkozó újabb tételt kell létrehozni, ez a törlı tétel. Ha viszont másképpen kellett vona könyvelni, akkor a törlı tételen felül még olyan javító tétel(eke)t is létre kell hozni, amely(ek) már a helyes könyvelésnek megfelelı tartalommal bír(nak). Hogy egyértelmő legyen, hogy egy törlı vagy egy javító tétel melyik tételnek törlése vagy javítás, a törlı, illetve javító tétel a TJ_tetelsorszam mezıjében tartalmazza a törölt, illetve javított tétel azonosítóját, a Kapcsolat mezıjében pedig viszony típusát jelzı kódot. A 3.5. ábrán a Tetelsorszam elıtti kulcsszimbólum jelzi, hogy a Tetelsorszam képezi a tábla elsıdleges kulcsát. Egy mezı elsıdleges kulcs minıségét úgy lehet beállítani, hogy a jobb egérgombbal a mezıre kattintva, arra helyezzük a fókuszt, majd az Elsıdleges kulcs funkciógombra kattintunk. Nem csak egy-egy oszlopra vonatkozó érvényességi szabályok, hanem a tábla egészére vonatkozóak is megadhatók. Ilyen példát mutat a 3.6. ábra. Az ott látható Tábla tulajdonságai ablak a Nézet menü Tábla tulajdonságai menüparancsára kattintással jeleníthetı meg. Az ablak Érvényességi szabály mezıjébe írt feltételt itt kinagyítva megismételjük: ([TJ_Tetelsorszam] Is Null And [Kapcsolat] Is Null) Or ([TJ_Tetelsorszam] Is Not Null And [Kapcsolat] Is Not Null) A fenti feltétel azt jelenti, hogy a TJ_Tetelsorszam és a Kapcsolat mezık (oszlopok) pontosan egyszerre lehetnek üresek, illetve pontosan egyszerre lehetnek kitöltve. Ez a szabály azért nem adható meg mezıszabályként, mert nem egyetlen mezıre, hanem egy soron beüli két mezı közötti viszonyra vonatkozó feltételt foglal magában.

19 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 111 Az elıbbinél lényegesen bonyolultabb szabályok is elıfordulhatnak. Például olyanok, amelyek több esetleg különbözı táblákban lévı adatsor közötti összefüggésre vonatkoznak. Ilyen az a szabály is, hogy az egy gazdasági eseményrıl (egy bizonylatról) könyvelt követel oldali tételek együttes összege egyenlı kell legyen az ugyanarról könyvelt tartozik oldali tételek együttes összegével. Az ilyen szabályok már táblára vonatkozó érvényességi szabályban sem adhatók meg, teljesülésük ellenırzésére tárolt eljárásokat kell írni (lásd a szakaszban). A fejezet azonban ezekkel már nem foglalkozik. Elsıdleges kulcs minıség jelzése A fókusz jelzése Az aktuális oszlopra vonatkozó érvényességi szabály Elsıdleges kulcs minıség be- vagy kikapcsolásásra szolgáló funkciógomb 3.5. ábra: Tábladefiniáló (tervezı) felület Accessben 3.6. ábra: Táblára vonatkozó érvényességi szabály a Tábla tulajdonságai ablakban

20 112 INFORMATIKUS SZAKMAI ISMERETEK 3.7. ábra: A Bizonylatkód megjelenítési jellemzıinek beállítása A 3.7. ábra a Bizonylatkod mezı Megjelenítés jellemzıit mutatja. A jellemzık értelme az, hogy egy új tétel rögzítésekor a bizonylatkódot a táblába ne a felhasználónak kelljen beírni, hanem a felhasználó egy választéklistából (lásd Kombinált lista) választhassa ki. (A megjelenítés ilyen beállításának mőködés közbeni eredményét a 3.8. ábra mutatja.) A választéklista a Bizonylatvalasztek nevő lekérdezés eredményét jeleníti meg (lásd Sorforrás típusa: Tábla/lekérdezés; Sorforrás: Bizonylatvalasztek). A lista a sorforrás elsı két oszlopát mutatja (lásd Oszlopszám: 2), és a kiválasztott sorból az elsı oszlop tartalmát adja vissza (lásd Kötött oszlop: 1), és az lesz a tételben a Bizonylatkod mezı tartalma. Az oszlopszélességek, a listasorok száma és a listaszélesség a választéklista megjelenítési méreteit határozzák meg. A felhasználó közvetlenül nem írhat be bizonylatkódot, azt csak kiválaszthatja (lásd Csak listaelem: Igen) ábra: A ábrák szerint definiált Fkviszla_forg tábla mőködés közben Megjegyzés: Az Fkviszla_forg táblában a Bizonylatkód mezı valójában egy Bizonylat táblából származó idegen kulcs. De ha ez így van, akkor miért nem a Bizonylat tábla lett megadva a választéklista sorforrásaként, miért volt szükség a Bizonylatvalasztek nevő lekérdezésre? Azért, mert a felhasználó kívánsága az volt, hogy a választéklistában a Bizonylatkód-értékek csökkenı sorrendjében jelenjenek meg a bizonylatok, hiszen új tételeket általában a legutoljára felvitt bizonylat(ok)hoz kapcsolódnak. Ha a Bizonylat táblában nem ilyen a rendezettség, mert például más célból általában a növekvı (pontosabban nem csökkenı) Bizonylatkód-értékek szerinti rendezettséget feltételezünk, akkor kénytelenek vagyunk a Bizonylat tábla egy olyan lekérdezését használni

21 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 113 sorforrásként, amely a bizonylatokat a Bizonylatkód-értékek csökkenı (pontosabban nem növı) sorrendjében adja vissza. A teljes adatbázis tervezése általában sok tábla megtervezését foglalja magában, és persze meg kell határozni a táblák kapcsolatait is. Az Access kapcsolattervezı felülete a 3.9. ábrán látható. Ezen a grafikus felületen a kapcsolatot jelölı vonalak egérrel húzhatók be a táblákat jelölı dobozok közé. A vonalakat úgy kell húzni, hogy a dobozok oldalán adódó tapadási pontjaik a kapcsolómezıket mutassák. Egyes táblákat több doboz is képviselheti ebben az ablakban. Például az Fkvisza_forg tábla azért szerepel kétszer (a második szerepének neve: Fkvisza_forg_1), mert önmagára visszamutató kapcsolatot is alkot (t.i. a sztornózó/javító és a sztornózott/javított sorok közötti kapcsolat miatt). Ugyancsak kétszer szerepel a kapcsolattervezı felületen a Szamlatukor tábla is (a második szerepének neve: Szamlatukor_1), mert az két szerepben is fölérendeltje a Gyujtoleiro táblának ábra: Táblák kapcsolatait meghatározó (kapcsolattervezı) felület ACCESS-ben Egy kapcsolóvonalra duplán kattintva, vagy a kapcsolóvonalon a jobb egérgomb lenyomása után elıtőnı menübıl a Kapcsolat szerkesztése menüparancsot választva, a ábra szerinti Kapcsolatok szerkesztése ablak jelenik meg. Ha egy kapcsolatra a Kapcsolatok szerkesztése ablakban a Hivatkozás integritás megırzése be van kapcsolva, akkor a rendszer nem engedi meg, hogy egy Fkviszla_forg-sor létrehozásakor vagy módosításakor olyan értéket írjunk a kapcsolómezıbe (jelen esetben a Bizonylatkodba), amely nem létezik a Bizonylat táblában. A további két kapcsoló is csak a Hivatkozás integritás megırzése bekapcsolt állapotában használható.

22 114 INFORMATIKUS SZAKMAI ISMERETEK Ha a Kapcsolt mezık kaszkádolt frissítése be van kapcsolva, akkor abban a rendkívüli 6 esetben, amikor egy bizonylat kódja (elsıdleges kulcsa) változik, automatikusan a bizonylatról keletkezett tételekben is az új értékre módosul a Bizonylatkod tartalma. Ha a Kapcsolt mezık 7 kaszkádolt törlése be lenne kapcsolva, akkor egy bizonylat törlése esetén, automatikusan a bizonylatról keletkezett összes tétel is törlıdne. Esetünkben ez nem lenne jó, mert könyvelt tételt nem szabad törölni, ezért a ábrán ez a kapcsoló kikapcsolt állapotban van, aminek az a hatása, hogy ha egy bizonylatra már hivatkozik könyvelt tétel, akkor ennek a bizonylatnak a törlését a rendszer visszautasítja. Ezzel hozható elı az Illesztési tulajdonságok ablak. Be van kapcsolva, ezért létrehozás vagy módosítás esetén csak olyan érték írható az Fkviszla_forg tábla Bizonylatkod mezıjébe, amilyen már létezik a Bizonylat táblában. Kikapcsolva, ezért visszautasítja az olyan bizonylat törlését, amelyhez létezı ráhivatkozó tétel. Az Access automatikusan felismeri, hogy a kapcsolat típusa egy-a-többhöz ábra: A Bizonylat és az Fkviszla_forg kapcsolata a Kapcsolatok szerkesztése ablakban Az illesztés típusa a kapcsolatnak nem egy stabil tulajdonsága, mert a célnak megfelelıen átállítható. Azt szabályozza, hogy az olyan lekérdezésekben, amelyekben a két tábla együtt vesz részt, köztük a JOIN milyen típusát kell elıállítani ábra: A Bizonylat és az Fkviszla_forg kapcsolat illesztési típusa az Illesztési tulajdonságok ablakban Az elıbbiek szerint megtervezett táblákon ugyancsak az Access felületét használva különféle adatkezelési mőveleteket lehet végezni: új adatsorokat lehet bevinni, korábban bevitt adatokat meg lehet változtatni, adatsorokat ki lehet törölni, az adattartalmat le lehet kérdezni (lásd a 3.5. alfejezetben). 6 Ez azért rendkívüli, mert az elsıdleges kulcsnak stabilnak kell lenni, azaz rendesen nem változhat. 7 Ez egy hibás fordítás eredménye. Helyesen Kapcsolt rekordok kaszkádolt törlése lenne.

23 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE Ellenırzı feladatok a 3.3. alfejezethez 1. SQL nyelven definiáljon egy olyan PROJEKT táblát, amely a Projektkod (Integer), Projektnev (Varchar(50)), Projekt_kezdete (Date), Projekt_vege (Date) oszlopokat tartalmazza! (Az oszlopnevek mellett zárójelben az adattípus áll.) A tábla elsıdleges kulcsa a Projektkod. A parancsban rendelkezzen arról is, hogy a Projekt_kezdete nem lehet üres, és a Projekt_vege (ha ki van töltve) nem lehet korábbi a Projekt_kezdete értékénél. 2. SQL nyelven definiáljon egy olyan EROFORRAS táblát, amely az Eroforraskod (Integer), Eroforras_neve (Varchar(50)), Eroforrastipuskod (Integer), Standard_fajlagos- _ktsg (Money), Tulmunka_fajlagos_ktsg (Money), Vetitesi_mertekegyseg_kodja (Integer), Hasznalatonkenti_ktsg (Money) oszlopokat tartalmazza. (Az oszlopnevek mellett zárójelben az adattípus áll.) A tábla elsıdleges kulcsa az Eroforraskod. A parancsban rendelkezzen arról is, hogy az Eroforras_neve, az Eroforrastipuskod, a Standard_fajlagos_ktsg és a Vetitesi_mertekegyseg_kodja nem lehet üres, a Standard_fajlagos_ktsg csak pozitív értékő lehet, továbbá a Tulmunka_fajlagos- _ktsg (ha ki van töltve) nem lehet kisebb a Standard_fajlagos_ktsg értékénél. 3. SQL nyelven definiáljon egy olyan PROJEKTHEZ_RENDELT_EROFORRAS táblát, amely a Projektkod (Integer), Eroforraskod (Integer) és a Kapacitas (Integer) oszlopokat tartalmazza. (Az oszlopnevek mellett zárójelben az adattípus áll.) A tábla elsıdleges kulcsa a Projektkod+Eroforraskod. A parancs nyilvánítsa ki azt is, hogy a Projektkod a PROJEKT táblából, az Eroforraskod pedig az EROFORRAS táblából származó idegen kulcs. 4. Az Access grafikus tervezıfelületén definiáljon egy TEVEKENYSEG táblát, amely a Tevekenysegkod (Számláló), Tevekenyseg_neve (Szöveg), Projektkod (Szám), Tevekenyseg_idotartama (Szám), Idomertekkod (Szám), Tevekenyseg_kezdete (Dátum/Idı), Tevekenyseg_vege (Dátum/Idı), Nem_muveleti_ktsg (Pénznem) oszlopokat tartalmazza. (Az oszlopnevek mellett zárójelben az adattípus áll.) A tábla elsıdleges kulcsa a Tevekenysegkod. A definíció nyilvánítsa ki azt is, hogy a Projektkod a PROJEKT táblából származó idegen kulcs. A definíció rendelkezzen arról is, hogy a Tevekenyseg_neve, a Projektkod, a Tevekenyseg_idotartama, a Idomertekkod és a Tevekenyseg_kezdete nem lehet üres, továbbá a Tevekenyseg_vege (ha ki van töltve) nem lehet kisebb a Tevekenyseg_kezdete értékénél.

24 116 INFORMATIKUS SZAKMAI ISMERETEK 3.4 Adatkezelı SQL parancsok Adatok bevitele, törlése és módosítása SQL-ben Új adatsor bevitele (INSERT parancs) Ha az adatbázis egy tábláját egy új adatsorral akarjuk bıvíteni, azt az INSERT paranccsal tehetjük meg. Ennek egy egyszerő formája a következı: INSERT INTO táblanév [ [AS] másodnév] [ (oszlopnévlista) ] VALUES (értéklista) A parancs használatát az egyes szintaktikai egységek alakját részletes magyarázat helyett csak egy példával szemléltetjük (közülük a másodnévrıl csak késıbb, a szakaszban a SELECT parancsnál lesz szó). Új sor bevitele: A szakaszban definiált Alkalmazott táblába a következı paranccsal vihetünk be egy új alkalmazottat leíró új sort: INSERT INTO Alkalmazott (Torzsszam, Nev, Neme, Szul_datum, Osztalykod, Fizetes) VALUES (192, 'Kiss József', 'F', #1/21/1952#, 7, ) Az létrejövı új sor tartalma: Torzsszam 192, Nev 'Kiss József', Neme 'F', Szul_datum ' ', Osztalykod 7, Fizetes megjegyzés: Ha az oszlopnévlista a tábla összes oszlopát felsorolja, és éppen abban a sorrendben, mint a táblát definiáló CREATE TABLE parancs, akkor az oszlopnévlista akár el is hagyható. 2. megjegyzés: Az értéklistában látható #1/21/1952# érték a ' ' dátumnak felel meg. Adatsor fizikai törlése (DELETE parancs) Ha az adatbázis egy táblájából (fizikailag) törölni akarunk egy vagy több sort, akkor a DELETE parancsot kell alkalmazni. Ennek egy egyszerőbb alakja: DELETE FROM táblanév [ [AS] másodnév] WHERE feltétel A feltétel egy logikai kifejezés: azok a sorok törlıdnek az adott táblából, amikre a feltétel igaz értéket ad. Törlés az Alkalmazott táblából: Példaként nézzük elıbb az 1164-es törzsszámú alkalmazott sorának törlését, majd az 5-ös osztályhoz tartozó alkalmazottak sorainak törlését: DELETE FROM Alkalmazott WHERE Torzsszam = 1164 ; DELETE FROM Alkalmazott WHERE Osztalykod = 5 ;

25 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 117 Megjegyzés: A gyakorlatban tartózkodnak a fontosabb adatok fizikai törlésétıl, helyette inkább logikai törlést alkalmaznak, ami lényegében a sor módosítással (lásd a következıkben az UPDATE parancsot) történı érvénytelenítését jelenti. Például egy Alkalmazott sor logikai törlése abból állhat, hogy benne az Ervenyesseg_vege oszlop tartalmát NULL értékrıl egy konkrét idıpontra változtatják, és az adott idıpontnál késıbbi idıpontban az adatsor már érvénytelennek számít. Adatsor tartalmának módosítása (UPDATE parancs) Ha az adatbázis egy táblájában meg akarjuk változtatni egy vagy több sor tartalmát, akkor azt az UPDATE paranccsal tehetjük meg. Ennek egy egyszerőbb alakja: UPDATE táblanév [ [AS] másodnév] SET oszlopnév1 = kifejezés1 [, oszlopnév2 = kifejezés2]... WHERE feltétel Fizetésemelés: Tegyük fel, hogy a 6-os osztályhoz tartozók fizetését 5%-kal emelik azoknál az alkalmazottaknál, akiknek a fizetése még nem érte el a forintot, és az utolsó fizetésemelésük december 31-nél korábban történt (vagy még soha sem emelték a fizetésüket). Ekkor az adatbázis tartalma a következı paranccsal aktualizálható: UPDATE Alkalmazott SET Fizetes = Fizetes * 1.05 WHERE Osztalykod = 6 AND Fizetes < AND ( Utolso_fiz_emeles IS NULL OR Utolso_fiz_emeles < #12/31/2001# ) A fenti megoldásban látható #12/31/2001# dátumkonstans a ' ' dátum ACCES SQL-ben alkalmazható alakja. Az UPDATE parancsnak van olyan változata is, amelynél a módosító (új) értékeket vagy a módosítás feltételeit az aktualizált táblától különbözı táblából kell venni. Ez azonban épít a következı szakaszban tárgyalt SELECT parancsra, így elıbb azzal kell megismerkedni Adatok lekérdezése SQL-ben Lekérdezés az adatbázisból (SELECT parancs) Az adatbázisban tárolt adatok a SELECT parancs segítségével kérdezhetık le. Ezzel a paranccsal egy kicsit többet foglalkozunk, elıször egy egyszerő alakjával kezdjük: SELECT [ALL DISTINCT] mit/hova FROM honnan [WHERE feltétel] [GROUP BY csoportosítás] [HAVING csoportfeltétel] [ORDER BY rendezés] ; Ebben a mit/hova rész azt írja le, hogy mit: milyen adatokat kérdezünk le, az adat (egy mit-elem) megadható oszlopnévvel, kifejezéssel, konstanssal; hova (milyen nevő változókba, képernyıoszlopokba, képernyımezıkbe) kérjük elhelyezni az adatokat, tehát egy hova-elem mindig egy célobjektum nevét jelenti.

26 118 INFORMATIKUS SZAKMAI ISMERETEK A hova rész elmaradhat, és akkor a mit felépítése: mit-elem1 [, mit-elem2]... Itt és a késıbbi szintaktikai leírásokban is a mit-elem egy oszlop neve vagy minısített neve vagy egy kifejezés. Ha egy kifejezés oszlopra hivatkozik, azt szintén az oszlop nevével vagy minısített nevével teheti meg. (A minısített névrıl késıbb.) Ha a mit-elem egy oszlop neve (akár minısítéssel együtt), akkor a hiányzó hova-elem neve azzal lesz azonos; ha viszont a mit-elem egy kifejezés, akkor (párbeszédes felületen) a rendszer generál neki nevet. Ha a SELECT kulcsszó után a mit is és a hova is szerepel, akkor a következı alakok lehetségesek: mit-elem1 [, mit-elem2]... INTO hova-elem1 [, hova-elem2]... mit-elem1 AS hova-elem1 [, mit-elem2 AS hova-elem2]... hova-elem1 = mit-elem1 [, hova-elem2 = mit-elem2]... A harmadik eset csak speciális SQL változatokban, általában programnyelvbe beágyazott változatban fordul elı. A honnan egy vagy több honnan-elem vesszıvel elválasztott felsorolása lehet: honnan-elem1 [, honnan-elem2]... Ebben a honnan-elem az alábbi változatok egyike lehet: forrás neve [ [AS] másodnév] JOIN-kifejezés (al-select). A forrás lehet: tábla vagy view (ennek fogalmát késıbb tárgyaljuk a szakaszban) vagy (csak az Access esetében) egy korábban definiált és névvel elmentett lekérdezés. A másodnévre vonatkozó tudnivalók: A másodnév felépítésére ugyanazok a szabályok vonatkoznak, mint általában az adatbázisobjektumok nevének felépítésére. Ha másodnevet alkalmazunk, akkor a parancs további részében (például egy tábla oszlopainak minısített nevében) a forrás (a tábla) csak a másodnévvel hivatkozható. A másodnév alkalmazása elkerülhetetlen, ha egy SELECT parancs vagy másmilyen SQL parancs valamely forrást többszörösen több szerepben is használ (lásd késıbb a táblázat szerinti kimenetet produkáló lekérdezést), mert akkor a forrás különbözı szerepei csak a különbözı másodnevekkel különböztethetık meg. A forrásokkal összefüggéssel a mit felépítésérıl még el kell mondani néhány további tudnivalót: Ha a lekérdezésnek egyetlen forrása van, és a mit a forrás összes oszlopa (abban a sorrendben, amilyenben a forrás oszlopait definiáltuk), akkor a mit-elem1 [, mitelem2]... lista egyetlen *-gal helyettesíthetı. Az oszlop minısített neve: F.O alakú, amelyben F a forrás neve vagy a forrás másodneve, az O pedig az oszlop neve. Ha a lekérdezés több forrásból dolgozik, és valamely mit-elem olyan oszlopot hivatkozik, amely több forrásban is jelen van, akkor ez a mit-elem csak minısített oszlopnév lehet. Ha a lekérdezés több forrásból dolgozik, és a mit tartalmazza az egyik forrás összes oszlopát (egy tömbben és abban a sorrendben, amilyenben a forrás oszlopait definiáltuk), akkor a mit-lista ezen része egy F.*-gal helyettesíthetı, amelyben F a forrás neve vagy a forrás másodneve.

27 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 119 A JOIN-kifejezés és az al-select eseteket késıbb tárgyaljuk a szakaszban. A feltétel egy logikai kifejezés, azaz egy igaz vagy hamis értéket eredményezı kifejezés, amellyel szőkíthetı a visszakeresendı adatsorok halmaza. A csoportosítást, a csoportfeltételt és a rendezést a késıbbiekben konkrét példákhoz kötve mutatjuk be. A 2-es osztályhoz tartozó alkalmazottak minden adatának lekérdezése a szakaszban definiált Alkalmazott táblából (az összes oszlop felsorolása a * jellel helyettesíthetı): SELECT * FROM Alkalmazott WHERE Osztalykod = 2 ; Csak a Fizetes oszlop értékére vagyunk kiváncsiak (háromféle megoldás az ALL és a DISTINCT értelmezése): SELECT ALL Fizetes FROM Alkalmazott; SELECT DISTINCT Fizetes FROM Alkalmazott; SELECT Fizetes FROM Alkalmazott; Az utóbbi példa elsı megoldás esetén a kimeneti sorok száma azonos az alkalmazottak számával; tehát ha 5 olyan alkalmazott van, akinek Ft a fizetése, akkor ez az összeg 5 sorban fog ismételten megjelenni. A második megoldás esetén a kimeneti sorok száma annyi, ahány különbözı fizetés összeg létezik az Alkalmazott táblában; tehát az elıbb említett Ft a kimeneten csak egy sorban jelenik meg. A harmadik megoldás egyenértékő az elsıvel, mert ahol az ALL opció értelmezhetı, és nem alkalmazták a DISTINCT opciót, ott automatikusan az ALL van érvényben. Hány alkalmazott tartozik a 2-es osztályhoz? SELECT COUNT(*) FROM Alkalmazott WHERE Osztalykod = 2; Osztály Alkalmazottak száma táblázat: A következı lekérdezési példa kimenete Hány alkalmazott tartozik az egyes osztályokhoz külön-külön? A kimenetet a táblázat szerinti formában kell elıállítani. A kimenet sorai az alkalmazottak száma szerint csökkenı (nem növı) sorrendben, azonos alkalmazott szám mellett pedig az osztálykódok növekvı sorrendjében jelenjenek meg! SELECT Osztalykod AS [Osztály], COUNT(*) AS [Alkalmazottak száma] FROM Alkalmazott GROUP BY Osztalykod ORDER BY COUNT(*) DESC, Osztalykod ASC; A GROUP BY csoportosítással elıírhatjuk, hogy nem külön-külön az egyes forrássorokról, hanem azok csoportjairól kérünk aggregált adatokat. A fenti megoldásban a sorokat Osztalykod szerint csoportosítottuk, és az aggregált érték a csoportba tartozó sorok száma volt, amit a COUNT() függvénnyel lehet elıállítani. Az ORDER BY záradékban a DESC szó a csökkenı (nem növı descendig) rendezettséget jelenti, ennek ellenkezıje az ASC (ascending) szóval kérhetı, de az utóbbinak felel meg az is ha, az ASC és DESC egyikét sem tüntetjük fel. 1. megjegyzés a legutóbbi példához: A COUNT( ) függvényben a zárójelek között oszlopnév vagy oszlopsorszám állhat. Például lehetséges a COUNT(Utolso_fiz_emeles) kifejezésben az Utolso_fiz_emeles argumentum annyiban befolyásolja az eredményt, hogy a csoportba tartozó sorok közül csak azok számlálódnak meg, amelyekben az

28 120 INFORMATIKUS SZAKMAI ISMERETEK Utolso_fiz_emeles nem üres. A COUNT(*) úgy mőködik, mintha a * helyén az összes oszlopot felsoroltuk volna, azaz a csoporton belül megszámolja az összes olyan sort, amelyben legalább egyik oszlop nem üres, tehát végeredményben a csoport összes sorát számításba veszi, hiszen az összes oszlop között biztosan van kötelezıen kitöltendı azaz nem üres oszlop. 2. megjegyzés a legutóbbi példához: Ebben a SELECT parancsban a mit mellett látható a hova egység is. Mit (a kért érték hivatkozás oszlopnévvel vagy kifejezéssel) Osztalykod COUNT(*) Hova (annak az oszlopnak a fejcíme, amelyben a képernyın a kért érték látszani fog) Osztály Alkalmazottak száma 3. megjegyzés a legutóbbi példához: Ha egy SELECT parancsban alkalmaztuk a GROUP BY záradékot, a SELECT kulcsszó után mit szerepben tisztán csak olyan oszlopok nevei állhatnak, amelyek a GROUP BY záradékban is szerepelnek. Például nem megengedett a SELECT Osztalykod AS [Osztály], COUNT(*) AS [Alkalmazottak száma], Fizetes AS [Fizetés] FROM Alkalmazott GROUP BY Osztalykod ORDER BY COUNT(*) DESC, Osztalykod ASC parancs, mert a GROUP BY záradékban nem szerepel a Fizetes. Viszont a következı parancs már hibátlan: SELECT Osztalykod AS [Osztály], COUNT(*) AS [Alkalmazottak száma], AVG(Fizetes) AS [Fizetés] FROM Alkalmazott GROUP BY Osztalykod ORDER BY COUNT(*) DESC, Osztalykod ASC. Ugyanis itt a Fizetes oszlop nem tisztán, hanem az átlagot képezı AVG( ) függvény argumentumában áll. Osztály Nık átlagfizetése táblázat: A következı lekérdezési példa kimenete Mekkora a nık átlagfizetése az egyes osztályokon? A kimenetet a táblázat szerinti formában kell elıállítani. Csak azok az osztályok érdekelnek minket, amelyeknél a nık átlagfizetése Ft felett van. SELECT Osztalykod AS [Osztály], AVG(Fizetés) AS [Nık átlagfizetése] FROM Alkalmazott WHERE Neme= N /* Feltételezük, hogy nık kódja N. */ GROUP BY Osztalykod HAVING AVG(Fizetés) > ; Mint a fenti megoldás mutatja, csoportosítás esetén a HAVING csoportfeltétel is alkalmazható, ami a sima WHERE feltétellel ellentétben csak az aggregálás után értékelhetı ki, azaz nem az alapadatsorok, hanem a kapott csoportok (aggregátumsorok) halmazát szőkíti. A legutóbbi két példában látott COUNT() és AVG() aggregáló függvényeken kívül

29 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 121 gyakran használatosak még: SUM(kifejezés) összegzés, MIN(kifejezés) minimális érték, MAX(kifejezés) maximális érték Összetettebb feladatok megoldása SQL-ben Ebben a szakaszban kerítünk sort olyan összetettebb feladatok tárgyalására, amelyek más SQL parancsokba beágyazott SELECT parancsokat (al-select-eket), JOIN mőveleteket, virtuális táblákat (view-kat), bonyolultabb logikai mőveleteket, illetve halmazmőveleteket igényelnek; vagy a megoldásukhoz azonos forrást több szerepben is fel kell használni. Beágyazott SELECT parancsok (al-select-ek) Itt ismételten megoldjuk a szakasz legutolsó feladatát, de ezúttal úgy, hogy a lekérdezés forrása a FROM záradékba beágyazott al-select lesz. Mekkora a nık átlagfizetése az egyes osztályokon? A kimenetet a táblázat szerinti formában kell elıállítani. Csak azok az osztályok érdekelnek minket, amelyeknél a nık átlagfizetése Ft felett van. SELECT * FROM ( SELECT Osztalykod AS [Osztály], AVG(Fizetes) AS [Nık átlagfizetése] FROM Alkalmazott WHERE Neme='N' GROUP BY Osztalykod ) WHERE [Nık átlagfizetése] > ; A fenti megoldás mőködését úgy kell elképzelni, hogy a belsı SELECT eredményébıl létrejön egy ideiglenes csak a külsı SELECT végrehajtási ideje alatt élı munkatábla Osztály és [Nık átlagfizetése] nevő oszlopokkal, és a külsı SELECT-nek ez lesz a forrása. Mivel a külsı SELECT már nem sorcsoportokat dolgoz fel, hanem az említett munkatábla sorait egyenként, benne a HAVING [Nık átlagfizetése] > feltétel helyett WHERE [Nık átlagfizetése] > feltételnek kell állni. SELECT parancsot nem csak a FROM záradékba lehet beágyazni, amint azt a következı példában látni fogjuk. Osztály Törzsszám Név Fizetés táblázat: A következı lekérdezési példa kimenete Minden osztályról listáztassuk azon dolgozók törzsszámát, nevét és fizetését, akiknek a fizetése magasabb az osztályuk átlagfizetésénél! A kimenetet a táblázat szerinti formában kell elıállítani. A kimenet sorai az Osztalykod szerint növı, azon belül a Fizetes szerint csökkenı (nem növı) sorrendben jelenjenek meg! SELECT A.Osztalykod AS [Osztály], A.Torzsszam AS [Törzsszám], A.Nev AS [Név], A.Fizetes AS [Fizetés] FROM Alkalmazott AS A WHERE A.Fizetes > ( SELECT AVG(B.Fizetés) FROM Alkalmazott AS B WHERE B.Osztalykod = A.Osztalykod ) ORDER BY A.Osztalykod ASC, A.Fizetes DESC

30 122 INFORMATIKUS SZAKMAI ISMERETEK A fenti megoldás az eddigiekhez képest több újdonságot is mutat: Itt történetesen a külsı SELECT WHERE feltételébe ágyaztuk be a soron lévı alkalmazott osztályához tartozó átlagfizetést kiszámító SELECT parancsot. A másik újdonság, hogy egy lekérdezés azonos táblát több szerepben is használ. Itt az Alkalmazott táblát egyik szerepben a külsı SELECT, a másik szerepben pedig a belsı SELECT használta, ráadásul a belsı SELECT az Alkalmazott tábla elsı szerepe szerint aktuális sorából vett Osztalykod értékére és a második szerepe szerint aktuális sorából vett Osztalykod értékére is hivatkozik. Mint az látható, azonos tábla két szerepe csak másodnevekkel (itt A és B) különböztethetı meg. Források összekapcsolása (INNER JOIN, LEFT JOIN, RIGHT JOIN) Az adatforrások összekapcsolásának legegyszerőbb módja, hogy a FROM záradékban több forrást sorolunk fel, és az összekapcsolásuk módját a WHERE záradékban adjuk meg, mint a következı példában. Iktatószám Készítı neve táblázat: A következı lekérdezési példa kimenete Iratok kilistázása a készítı ügyintézı nevével együtt: Vegyük a szakaszban definiált Irat táblát, és listáztassuk ki az Ugyszam = 324 azonosítójú ügyhöz készített összes kimenı iratot a készítı ügyintézı nevével együtt. A kimenetet a táblázat szerinti formában kell elıállítani. Elsı megoldás: SELECT Iktatoszam AS [Iktatószám], Nev AS [Készítı neve] FROM Irat, Alkalmazott WHERE Ugyszam = 324 AND Keszitette_torzsszam = Torzsszam A példa fenti megoldásában a WHERE záradékban a Keszitette_torzsszam = Torzsszam feltétel adja meg, hogy minden Irat-sorhoz azt az az Alkalmazott-sort kell kapcsolni, amelyben Torzsszam értéke egyenlı az Irat-sorban lévı Keszitette_torzsszam értékével. Az adatforrások összekapcsolására, valamivel több lehetıséget ad a források közötti JOIN mővelet valamelyik változatának alkalmazása. Az elıbbi példa elıbbi megoldásával egyenértékő az alábbi az Irat és az Alkalmazott közötti INNER JOIN mővelettel operáló második megoldás. Második megoldás (példa JOIN-kifejezésre, történetesen az INNER JOIN összekapcsolásra): SELECT Iktatoszam AS [Iktatószám], Nev AS [Készítı neve] FROM Irat INNER JOIN Alkalmazott ON Keszitette_torzsszam = Torzsszam WHERE Ugyszam = 324 A második megoldásban a kapcsolófeltétel a WHERE záradék helyett a JOIN mővelet része lett (annak ON záradékába ment át). A táblakapcsolások esetén (beleértve a több forrás JOIN mővelet nélküli felsorolásának esetét is) a háttérben rejtetten mindig létrejön egy munkatábla, és tulajdonképpen az a lekérdezés közvetlen forrása. A JOIN mővelet három esetére e munkatábla képzési szabályait a és a ábrák mutatják be.

31 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 123 T1 T2 T1 INNER JOIN T2 ON T1.B = T2.B A B B C T1.A T1.B T2.B T2.C a1 b9 b1 c3 a3 b1 b1 c3 a3 b1 b2 c2 a4 b2 b2 c2 a4 b2 b3 c5 a7 b1 b1 c3 a7 b1 b4 c1 a8 b1 b1 c3 a8 b1 a9 b ábra: A T1 és a T2 források és azok INNER JOIN-jaként elıállt munkatábla T1 LEFT JOIN T2 ON T1.B = T2.B T1 RIGHT JOIN T2 ON T1.B = T2.B T1.A T1.B T2.B T2.C T1.A T1.B T2.B T2.C a1 b a3 b1 b1 c3 a3 b1 b1 c3 a4 b2 b2 c2 a4 b2 b2 c2 a7 b1 b1 c3 a7 b1 b1 c3 a8 b1 b1 c3 a8 b1 b1 c b3 c5 a9 b b4 c ábra: A T1 és a T2 források LEFT JOIN-ja, illetve RIGHT JOIN-ja A T1 és T2 források INNER JOIN-jaként létrejövı munkatábla a ábrán látható. Ebbıl kitőnik, hogy az INNER JOIN kimenetében az ON feltétel szerint párosítható T1-, T2- sorok összekapcsolásai szerepelnek. A T1 és T2 források LEFT JOIN-jaként létrejövı munkatáblában (a ábrán bal oldalt) az INNER JOIN-nal elıállított sorokon felül a T1 forrás azon sorai is szerepelnek, amelyeknek nincs az ON feltételt kielégítı párja a T2 forrásban. A munkatábla ilyen soraiban a T2-bıl származó oszlopok üresek (NULL értékőek). A T1 és T2 források RIGHT JOIN-jaként létrejövı munkatáblában (a ábrán jobb oldalt) az INNER JOIN-nal elıállított sorokon felül a T2 forrás azon sorai is szerepelnek, amelyeknek nincs az ON feltételt kielégítı párja a T1 forrásban. A munkatábla ilyen soraiban a T1-bıl származó oszlopok üresek (NULL értékőek). Azon ügyintézık kilistázása, akik még nem készítettek iratot: Kihasználjuk a RIGHT JOIN-nal elıállított munkatábla tulajdonságait. SELECT Nev AS [Még nem készített iratot] FROM Irat RIGHT JOIN Alkalmazott ON Keszitette_torzsszam = Torzsszam WHERE Iktatoszam IS NULL A fenti a megoldás magyarázata: Azok az alkalmazottak nem készítettek még iratot, amelyek adatsorának nincs a Keszitette_torzsszam = Torzsszam feltételt kielégítı párja az Irat táblában. A lekérdezés közvetlen forrását képezı munkatábla a RIGHT JOIN miatt az Alkalmazott tábla minden sorát tartalmazza, azokat is, amelyeknek nincs párja az Irat táblában, és a munkatábla ezen sorai arról ismerhetık fel, hogy benne az

32 124 INFORMATIKUS SZAKMAI ISMERETEK Iratból származó oszlopok (így az Iktatoszam oszlop is) üres (azaz NULL értékő). Tehát az Iktatoszam IS NULL feltétel éppen ezeket választja ki. Logikai értéket elıállító halmazmőveletek az SQL-ben A bonyolultabb lekérdezések (vagy más SQL parancsok) WHERE záradékában nagyon hasznosak lehetnek azok az SQL-ben is alkalmazható halmazmőveletek, amelyek a halmaz tartalmától függıen igaz / hamis logikai értéket állítanak elı: Halmazmővelet x IN (halmaz) x NOT IN (halmaz) x =!= < > <= >= ANY (halmaz) x =!= < > <= >= ALL (halmaz) EXISTS (halmaz) NOT EXISTS (halmaz) Magyarázat Igaz értéket ad vissza, ha az x eleme a halmaznak. Igaz értéket ad vissza, ha az x NEM eleme a halmaznak. Igaz értéket ad vissza, ha az x és a halmaz valamely eleme között teljesül az adott hasonlítási reláció. Az x = ANY (halmaz) alak egyenértékő az x IN (halmaz) mővelettel. A NOT(x = ANY(halmaz)) alak egyenértékő az x NOT IN (halmaz) mővelettel. Figyelem! Az x!= ANY (halmaz) alak nem egyenértékő a NOT(x = ANY(halmaz)) alakkal. Igaz értéket ad vissza, ha az x és a halmaz minden eleme között teljesül az adott hasonlítási reláció. Az x!= ALL (halmaz) alak egyenértékő az x NOT IN (halmaz) mővelettel, illetve a NOT(x = ANY(halmaz)) mővelettel;. viszont NEM egyenértékő a NOT( x = ALL (halmaz)) alakkal. A NOT( x = ALL (halmaz)) alak egyenértékő az x!= ANY(halmaz)) alakkal. Igaz, ha a halmaznak van legalább egy eleme. Igaz, ha a halmaz üres. Az ANY és az ALL mőveletek sablonjában a jel alternatívan választható lehetıségeket határol el egymástól. A!= a nem egyenlı hasonlító mővelet jele, az Accessben helyette a <> jel alkalmazható. Az elıbbi táblázatban adott halmazmőveletek argumentuma beágyazott SELECT paranccsal elıállított halmaz is lehet. Ennek felhasználásával legutolsó lekérdezési feladatra itt további három megoldást adunk. Azon ügyintézık kilistázása, akik még nem készítettek iratot: Kihasználjuk a NOT EXISTS halmazmővelet tulajdonságait. SELECT Nev AS [Még nem készített iratot] FROM Alkalmazott WHERE NOT EXIST ( SELECT * FROM Irat WHERE Keszitette_torzsszam = Torzsszam ) Azon ügyintézık kilistázása, akik még nem készítettek iratot: Kihasználjuk a NOT IN halmazmővelet tulajdonságait. SELECT Nev AS [Még nem készített iratot] FROM Alkalmazott WHERE Torzsszam NOT IN ( SELECT Keszitette_torzsszam FROM Irat )

33 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 125 Azon ügyintézık kilistázása, akik még nem készítettek iratot: Kihasználjuk a!= ALL halmazmővelet tulajdonságait. SELECT Nev AS [Még nem készített iratot] FROM Alkalmazott WHERE Torzsszam <> ALL ( SELECT Keszitette_torzsszam FROM Irat ) Megjegyzés: Az Accesstıl különbözı környezetben a Torzsszam <> ALL rész helyett a Torzsszam!= ALL alkalmazandó. Virtuális táblák definiálása (CREATE VIEW) és használata A következı példa megoldásához szükség lesz a view fogalmára. A view egy virtuális tábla, ami a tényleges táblák tartalmából ideiglenesen csak a view felhasználásának idejére áll elı. Egy view ugyanúgy használható a SELECT parancsokban, mint a rendes táblák. A view felépítése és tartalma a CREATE VIEW paranccsal specifikálható: CREATE VIEW view neve (oszlopnév [, oszlopnév] ) AS elıállító SELECT parancs View-k használatával megkönnyíthetı a bonyolultabb lekérdezések parancsának megírása, illetve a view-val elıkészített lekérdezések általában hatékonyabban (rövidebb válaszidıvel) hajtódnak végre. A legtöbb kimenı iratot készítı ügyintézık közül ki kel íratni az elsı 5 helyezettet. A kimenetet a táblázat szerinti formában kell elıállítani. A kimeneti sorok rendezettek legyenek a készített iratok darabszáma szerint csökkenı (nem növı) sorrendben! Ezt a feladatot két lépésben oldjuk meg. Elıbb definiálunk egy olyan Teljesitmeny view-t, amelynek felépítését a táblázat mutatja: A Teljesitmenyben az összes ügyintézı megjelenik, aki legalább egy iratot készített, nemcsak az elsı 5 helyezett. A második lépésben ebbıl a view-ból állapítjuk meg az elsı 5 helyezettet. A második lépés SELECT parancsa kétféle szerepben is használja a Teljesitmeny view-t. A külsı SELECT végigmegy a view-ban lévı összes ügyintézın, a belsı SELECT pedig azt vizsgálja, hogy hány olyan alkalmazott van, aki több iratot készített, mint a külsı SELECT-ben soron levı ügyintézı. (A megoldás tekintettel van a holtversenyre, amely szerint akár 10 alkalmazott is beletartozhat az elsı 5 helyezettbe.) CREATE VIEW Teljesitmeny (Keszitette_torzsszam, "Készített iratok darabszáma") AS SELECT Keszitette_torzsszam, COUNT(*) FROM Irat WHERE Bejovo_kimeno = KI GROUP BY Keszitette_torzsszam; SELECT Nev AS "Készítı neve", T1."Készített iratok darabszáma" FROM Teljesitmeny AS T1, Alkalmazott WHERE Keszitette_torzsszam = Torzsszam AND 5 > ( SELECT COUNT(*) FROM Teljesitmeny AS T2 WHERE T2."Készített iratok darabszáma" > T1."Készített iratok darabszáma" ) ORDER BY T1."Készített iratok darabszáma" DESC; Készítı neve Készített iratok darabszáma táblázat: A fenti lekérdezési példa kimenete

34 126 INFORMATIKUS SZAKMAI ISMERETEK Keszitette_torzsszam Készített iratok darabszáma táblázat: A lekérdezési példában használt Teljesitmeny view kimenete Az Access nem támogatja a view alkalmazását, ezért az elıbbi feladat megoldásában nem is az Access, hanem az SQL99 szabvány formai szabályait követtük az olyan több szóból álló adatnevek esetében, mint a "Készített iratok darabszáma". (Az Accessben ugyanennek így kell kinézni: [Készített iratok darabszáma].) Az Access a view-t azzal helyettesíti, hogy megengedi, a lekérdezés forrása egy másik lekérdezés eredménye legyen, azaz az Accessben a SELECT parancs FROM záradékában nem csak táblák nevére, hanem elızetesen definiált lekérdezések nevére is lehet hivatkozni. Ez lényegében egyenértékő a view használatával. Tehát Accessben a fenti példa megoldása sem próbálható ki, de ahhoz nagyon közelálló megoldás adható; íme: Az elıbbi feladat megoldásának Accessben is mőködı változata: Elsı lépésben definiálni kell egy lekérdezést, amely lényegében az elıbbi megoldás view-jának felel meg: SELECT Keszitette_torzsszam, COUNT(*) AS [Készített iratok darabszáma] FROM Irat WHERE Bejovo_kimeno = KI GROUP BY Keszitette_torzsszam; Ha ezt a lekérdezést Teljesitmeny névvel elmentjük, akkor az az Accessben ugyanúgy használható, mint más adatbáziskezelık esetében a view. Tehát a megoldás második fele (a helyezési sorrendet elıállító SELECT parancs) csaknem változatlan: csak a "Készítı neve", és a "Készített iratok darabszáma" neveket kell a [Készítı neve], és a [Készített iratok darabszáma] alakokra lecserélni. Azonos szintő SELECT parancsok összekapcsolása (UNION, INTERSECT és MINUS) Eddig két példát láttunk olyan összetett SELECT parancsra, amely valamely részébe beágyazott másik SELECT parancsot tartalmaz. Azonban összetett lekérdezések nemcsak beágyazással, hanem azonos szintő SELECT parancsok (pontosabban azok kimenetei) UNION (egyesítés), INTERSECT (metszet) vagy MINUS (különbség) mőveletekkel való összekapcsolásával is lehetséges. Törzsszám Név táblázat: Kimeneti forma a következı három példához Példa az UNION halmazmőveletre: Az összes olyan ügyintézı lekérdezése, aki vagy intézkedett egy bejövı irattal kapcsolatban, vagy készített egy kimenı iratot. SELECT DISTINCT U.Intezkedo_torzsszam AS Törzsszám, A.Nev AS Név FROM Alkalmazott AS A, Irat AS U WHERE U.Intezkedo_torzsszam = A.Torzsszam UNION SELECT DISTINCT U.Keszitette_torzsszam AS Törzsszám, A.Nev AS Név FROM Alkalmazott AS A, Irat AS U WHERE U.Keszitette_torzsszam = A.Torzsszam; ORDER BY Törzsszám

35 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 127 Példa az INTERSECT halmazmőveletre: Az összes olyan ügyintézı lekérdezése, aki mindkét említett tevékenységet végezte már valamelyik irattal. SELECT DISTINCT U.Intezkedo_torzsszam AS "Törzsszám", A.Nev AS "Név" FROM Alkalmazott AS A, Irat AS U WHERE U.Intezkedo_torzsszam = A.Torzsszam INTERSECT SELECT DISTINCT U.Keszitette_torzsszam AS "Törzsszám", A.Nev AS "Név" FROM Alkalmazott AS A, Irat AS U WHERE U.Keszitette_torzsszam = A.Torzsszam; ORDER BY "Törzsszám" Példa a MINUS halmazmőveletre: Az összes olyan ügyintézı lekérdezése, aki intézkedett már egy bejövı irattal kapcsolatban, de még nem készített kimenı iratot. SELECT DISTINCT U.Intezkedo_torzsszam AS "Törzsszám", A.Nev AS "Név" FROM Alkalmazott AS A, Irat AS U WHERE U.Intezkedo_torzsszam = A.Torzsszam MINUS SELECT DISTINCT U.Keszitette_torzsszam AS "Törzsszám", A.Nev AS "Név" FROM Alkalmazott AS A, Irat AS U WHERE U.Keszitette_torzsszam = A.Torzsszam; ORDER BY "Törzsszám" Megjegyzés: Az Access az INTERSECT és a MINUS mőveleteket nem támogatja, így abban csak az UNION mővelet próbálható ki. Ez az oka annak is, hogy az utóbbi két a Törzsszám és a Név adatnevek "Törzsszám" és "Név" alakban állnak, ugyanis az Accesstıl különbözı környezetekben az angol ábécén kívüli ékezetes betőket tartalmazó adatneveket ugyanúgy "" zárójelek közé kell tenni, mint a több szóból álló adatneveket. Más parancsokba beágyazott SELECT parancsok A SELECT parancs beágyazható a DELETE vagy az UPDATE parancsok WHERE záradékába is, továbbá az INSERT parancsnak van egy olyan változata, amely a céltáblába beírandó sorokat SELECT mővelettel egy másik táblából veszi: INSERT INTO táblanév [ [AS] másodnév] [(oszlopnév [, oszlopnév ] )] forrássorokat elıállító SELECT parancs INSERT parancsba beágyazott SELECT parancs: Az Alkalmazott táblába írjunk be új sorokat, melyeket Belepo táblából veszünk. (Feltételezzük, hogy a Belepo tábla szerkezete azonos az Alkalmazott tábláéval.) INSERT INTO Alkalmazott SELECT * FROM Belepo Az UPDATE parancs hasonló változatában az új értékek vagy a módosítási feltételek a beágyazott SELECT mővelettel egy másik táblából vehetık: UPDATE aktualizált tábla neve [ [AS] másodnév1] SET oszlopnév1 = ( SELECT FROM forrás tábla neve [ [AS] másodnév2] WHERE feltétel1 ) WHERE feltétel2

36 128 INFORMATIKUS SZAKMAI ISMERETEK UPDATE parancsba beágyazott SELECT parancs: Az Alkalmazott táblában azok fizetése módosul, akiknek van adatsoruk az Ujfizetes táblában. (Feltételezzük, hogy az Ujfizetes tábla a Torzsszam és a Fizetes oszlopokat tartalmazza.) UPDATE Alkalmazott A SET Fizetes = (SELECT UF.Fizetes FROM Ujfizetes UF WHERE A.Torzsszam = UF.Torzsszam) Megjegyzés: Az ACCESS az UPDATE parancsnak ezt a változatát nem támogatja, abban nem próbálható ki Ellenırzı feladatok a 3.4. alfejezethez A következı feladatok megoldásához az alábbi szerkezető egyedtípusokat (táblákat) kell felhasználni. SZÁMLATÜKÖR (Számlatükörkód, Fkvi_számlaszám, Szla_érvkezd, Szla_érvvége, Számlanév, Számlatípuskód, Gyüjtıszint) FKVISZLA_FORGALOM (Tételsorszám, Idıszakkód, Számlatükörkód, Számlaoldal, Összeg, Bizonylatkód) BIZONYLAT (Bizonylatkód, Tranzakció_megnevezés, Könyvelésdátum, Bizonylatszám) SZÁMLAOLDAL_ELİJEL (Számlatípuskód + Számlaoldal, Elıjel) Megjegyzés: Az Elıjel értékei 1 és 1. GYŐJTİLEÍRÓ (Győjtıszámla_kód + Alszámla_kód + Gyüjtıhöz_érvkezd, Gyüjtıhöz_érvvége) Megjegyzés: A Győjtıszámla_kód és az Alszámla_kód szerepnevei a Számlatükörkódnak. A Gyüjtıhöz_érvvége üres is lehet. 1. Pótolja az alábbi CREATE VIEW parancs hiányzó részeit úgy, hogy az eredménye tartalmazza a megfelelı Könyvelésdátum és Fkvi_számlaszám oszlopokat is, továbbá a Számlaoldal és az Összeg helyett a megfelelı elıjellel ellátott Elıjeles_összeg álljon benne. A megfelelı elıjelet a SZÁMLAOLDAL_ELİJEL tartalma alapján lehet megállapítani. CREATE VIEW "Kiegészített_elıjeles_forgalom" ("Tételsorszám", "Idıszakkód", "Számlatükörkód", "Elıjeles_összeg", "Bizonylatkód", "Könyvelésdátum", "Fkvi_számlaszám") AS SELECT "Tételsorszám", "Idıszakkód", "Számlatükörkód",, F."Bizonylatkód", "Könyvelésdátum", "Fkvi_számlaszám") FROM FKVISZLA_FORGALOM F, "SZÁMLATÜKÖR" S, BIZONYLAT B, E WHERE S. = F. AND AND AND E. = S. E. = F. B. = F.

37 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 129 Megjegyzés: Ez a parancs az Accessben nem próbálható ki. Ez magyarázza például a Tételsorszám adatnév helyett a "Tételsorszám" alakú adatnevet is. Az olvasóra bízzuk, hogy az ezen feladat és a következı feladatok Accessben való kipróbálhatósága érdekében milyen lekérdezéssel helyettesíti a fenti view-t. 2. Az elızı alfeladatban adott Kiegészített_elıjeles_forgalom view felhasználásával írja meg a számlaosztály-egyenlegek lekérdezését egy adott (mérleg)idıszakra vonatkozóan (Idıszakkód = [Adott idıszak]). Kimenet: Számlaosztály Egyenleg SELECT AS Számlaosztály, AS Egyenleg FROM WHERE 3. Pótolja az alábbi SELECT parancs hiányzó részeit úgy, hogy annak eredménye a győjtıszámlák egyenlegeinek egy adott (mérleg)idıszakra vonatkozó (Idıszakkód = [Adott idıszak]) listája legyen! A lekérdezés az 1. feladatban adott Kiegészített_elıjeles_forgalom view felhasználásával történjen! A győjtési szabályokat (adott érvényességi intervallummal melyik győjtıszámlára mely alszámlákról kell egyenlegezni) a GYŐJTİLEÍRÓ tábla tartalmazza. Adott Kiegészített_elıjeles_forgalom-sorra olyan szabálysorok érvényesek, amelyek Könyvelésdátuma a szabály érvényességi intervallumába esik. Kimenet: Győjtıszámla száma Egyenleg SELECT AS [Győjtıszámla száma], AS Egyenleg FROM GYŐJTİLEÍRÓ G, F, S WHERE F.Idıszakkód = Adott_idıszakód AND S. = G. AND F. = G. AND Győjtıhöz_érvkezd <= F. AND ( F. <= Győjtıhöz_érvvége OR ) 4. Hol és hogyan változik az elızı alfeladat megoldása, ha a Gyüjtıhöz_érvvége mindig ki van töltve úgy, hogy azon (érvényes) sorokban, amelyeknél az érvényesség vége még nem ismert, nagyon nagy dátumot (pl ) tartalmaz?

38 130 INFORMATIKUS SZAKMAI ISMERETEK 3.5 Adatkezelés az Access grafikus felületén Adatok bevitele, törlése és módosítása a grafikus felületen A párbeszédes adatbáziskezelı felületeknek mint az Access grafikus felületének az a legfıbb elınye, hogy azok is tudják használni, akik nem akarják vagy nem tudják megtanulni az SQL-t. Azonban az egész 3. fejezet az Accesst csak olyan könnyen hozzáférhetı segédeszköznek tekinti, amely lehetıséget ad az SQL kipróbálására. Így ez a szakasz is csak olyan mértékben foglalkozik az Access grafikus felületén való adatkezelés ismertetésével, amennyi ahhoz szükséges, hogy az olvasó könnyebben feltölthesse megfelelı adatokkal az SQL parancsok kipróbálásához szükséges táblákat. Bármely tábla megnyitható a táblaböngészıbıl többféle módon is, így például a tábla kijelölése utána a Megnyitás gombra kattintással (lásd a ábrán) ábra: A Bizonylat tábla megnyitása a táblaböngészıbıl Egy táblába új sort a tábla végén (utolsó sorként) lehet bevinni. (Lásd egy új bizonylatsor bevitelét a Bizonylat táblába a ábrán.) Ha a tábladefinícióban adott szabályok nem tiltják, akkor bármely táblasorra kattintva annak adattartalma módosítható (átírható), illetve a törlı gombra kattintással a sor eltávolítható a táblából. A ábrán arra is példát látunk, hogy a Bizonylat táblában is kezdeményezhetı egy bizonylathoz tartozó forgalomtételek rögzítése az Fkviszla_forg táblába.

39 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 131 Törlı gomb. Az éppen létrehozott vagy szerkesztés alatt lévı sor jelzése ábra: Új sor rögzítése a Bizonylat táblába Az új bizonylathoz új tétel létrehozása. Az éppen létrehozott bizonylat. A bizonylathoz tartozó tételeket megnyitó, illetve bezáró gomb Legördülı választéklista a tétel számlatükörkódjának (közvetve a fıkönyvi számlaszámának) kiválasztása céljából ábra: A 25-ös kódú bizonylathoz új tétel rögzítése az Fkviszla_forg táblába

40 132 INFORMATIKUS SZAKMAI ISMERETEK Adatok lekérdezése a grafikus felületen Ez a szakasz is olyanoknak szól, akiknek az SQL megtanulása gondot okoz, illetve egyszerőbb lekérdezéseket kevesebb munkával szeretnének megoldani, mint amennyire SQL alkalmazásával szükség lehet. A teljesség igénye nélkül néhány példa megoldásával csupán ízelítıt adunk az Access grafikus lekérdezésdefiniáló felületének használatáról. Emlékeztetünk rá, hogy egy új lekérdezés létrehozásának kezdeményezése a szakaszban leírt és a 3.1. ábrán mutatott módon történhet. (Amúgy még ezen az úton is lehet valamennyire SQL-t tanulni: A felhasználó a grafikus felületen definiált lekérdezést megnézheti az SQL nézetben is, így utólag megtudhatja, hogy az adott feladatot SQL-ben hogyan kellett volna megoldani.) Mindegyik példa a szakaszban a 3.9. ábrán mutatott táblák valamelyikére (esetleg több tábla együttesére) vonatkozik ábra: A Szamlatukor felépítése Az itt következı elsı feladatban a Szamlatukor táblát használjuk forrásként. Ebben az Fkviszla_szam jelenti a fıkönyvi számlaszámot, a Szamla_ervkezd jelenti a Szamlatukor-sor érvényességének kezdetét, a Szamla_ervvege jelenti a Szamlatukor-sor érvényességének végét. (A még érvényes sorok érvényességének igazi vége általában még ismeretlen. Ilyenkor egy nagyon nagy dátum, áll a Szamla_ervvege mezıben.) A számlaosztályt a fıkönyvi számlaszám elsı számjegye mutatja. Ki fogjuk használni azt a tényt is, hogy a hogy a fıkönyvi számlaszám (bár számjegyekbıl áll) mégis szöveg adattípusú. 1. feladat: A Szamlatukor táblából kérdezze le a 4-es számlaosztályba tartozó fıkönyvi számlaszámok közül azokat, amelyek án érvényesek! A kimeneten fıkönyvi számlaszámokat a Szamlatukor táblában jellemzı összes oszlop jelenjen meg. Most a lekérdezés létrehozásának kezdeményezésekor szakasz 3.2. ábra szerinti Tábla megjelenítése ablakban hozzáadásra ki kell választani a Szamlatukor táblát ábra: Az 1. feladat 1. megoldása Magyarázat az 1. megoldáshoz: Az 1. oszlopban azt adtuk meg, hogy a kimeneten a Szamlatukor-sor minden oszlopa jelenjen meg (Szamlatukor.* és pipa a jelölı négyzetben). A további három oszlopban nincs bekapcsolva a megjelenítés, tehát ezek csak feltételeket definiálnak. A második oszlop Fkviszla_szam Like '4*' feltételének értelme: azokat a számlaszámokat keressük, amelyek 4-essel kezdıdnek. (Itt használtuk ki,

41 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 133 hogy a fıkönyvi számlaszám szöveg típusú adat, mert a Like mővelet csak szöveg adattípusra alkalmazható.) A 3. és a 4. oszlopkban lévı feltételek: Szamla_ervkezd <=# #, illetve Szamla_ervvege >=# # A három feltétel egymással logikai ÉS (AND) kapcsolatban áll, azaz a lekérdezés azokat a sorokat találja meg, amelyekre mindhárom feltétel egyidejőleg teljesül ábra: Az 1. feladat 2. megoldása Magyarázat az 2. megoldáshoz: Ez a megoldás csak a 2. oszlopban különbözik az elıbbitıl, ezért csak az igényel magyarázatot. A Left([Fkviszla_szam];1) egy olyan függvénykifejezés, amely az Fkviszla_szam baloldali elsı karakterét (elsı számjegyét) adja vissza. (Ez a függvény is csak szöveg adattípusra alkalmazható.) Végeredményben a második oszlop a Left([Fkviszla_szam];1) = '4' feltételt tartalmazza, amelyet azok a fıkönyvi számlaszámok elégítenek ki, amelyeknek elsı számjegye 4-es. (A második oszlopba a Kif1: szöveget az Access automatikusan írta be, a felhasználónak ezzel nincs dolga. Az Access automatikusan Kif1:, Kif2:, címkéket tesz a Mezı sorban azokba az oszlopokba, ahol nem egyszerően mezınév, hanem valamilyen kifejezés áll, és a felhasználó nem tett saját címkét.) Megjegyzések: A Left(mezınév; hossz) függvény csak az Access SQL nyelvjárásában használható, más SQL nyelvjárásokban a Substring(mezınév, kezdıpozíció, hossz) vagy Substr(mezınév, kezdıpozíció, hossz) alakú függvény használatos helyette. A dátum típusú adatkonstans csak az Access grafikus felületén #eeee.hh.nn.# alakú, az Access SQL szerkesztı felületén már a #hh/nn/eeee# alakot kell alkalmazni. Más SQL nyelvjárásokban a dátum típusú adatkonstans nem ## jelek között, hanem '' jelek (aposztrófok) között áll, pl. ' ', illetve a felépítése a nemzeti sajátosságoknak megfelelıen rugalmasan választható meg. 2. feladat: A Számlatükör táblából kérdezze le azokat a Szamlatukor-sorokat, amelyekben értelmezett fıkönyvi számlaszámokra történt könyvelés án! A kimeneten a fıkönyvi számlaszám (Fkviszla_szam), és a számla megnevezése (Szamla_megnevezes) oszlopok jelenjenek meg. Gondoskodjon arról, hogy egy Szamla-tukor-sor csak egyszer jelenjen meg a kimeneten akkor is, ha az abban definiált fıkönyvi számla-számra több tétel lett könyvelve az említett napon! Most a lekérdezés definíciójához a ábra szerinti három táblát kell hozzáadni. Bár most is Szamlatukor-sorokat keresünk, nem egyedül ez a tábla képezi a lekérdezés forrását. Ugyanis annak eldöntéséhez, hogy mely számlaszámokra történt könyvelés, szükség van a könyvelt forgalomtételeket tartalmazó Fkviszla_forg táblára is. Sıt, ez is kevés, mert az, hogy mely forgalomtételeket könyvelték án, a tételekbıl nem derül ki, ugyanis csak a Bizonylatkoddal a tételhez kapcsolt Bizonylat tábla tartalmazza a Konyvelesdatumot.

42 134 INFORMATIKUS SZAKMAI ISMERETEK ábra: A 2. feladat által használt táblák ábra: A 2. feladat nem tökéletes megoldása ábra: A 2. feladat szerinti lekérdezés kimenete a megoldás javítása elıtt A ábrán látható kimenet azt mutatja, hogy a ábrán adott megoldás nem tökéletes, mert a 384-es fıkönyvi számlaszám duplán jelenik meg benne. Az SQL SELECT parancsában ilyen kimeneten javít a DISTINCT rendelkezés (lásd a szakaszban). Az Access párbeszédes felületén hasonló rendelkezés a Lekérdezés tulajdonságai ablakban tehetı meg (lásd a ábrán) az Egyedi értékek: Igen beállítással. Ez az ablak egy lekérdezés definiálása közben a ábrán mutatott módon hozható elı. A lekérdezésdefiníció javítása utáni kimenet a ábrán látható.

43 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 135 Tulajdonságok gomb ábra: A Lekérdezés tulajdonságai ablak megjelenésének kezdeményezése Igen ábra: A megoldás javítása: rendelkezés az ismétlıdések megszüntetésérıl ábra: A javított megoldás kimenete ábra: A hiányzó kapcsolatokat pótoló két kapcsolófeltétel

44 136 INFORMATIKUS SZAKMAI ISMERETEK Amikor a lekérdezés definíciójához hozzáadjuk a ábra szerinti három táblát, akkor azok az adatbázisdefinícióban adott kapcsolataikkal (lásd a szakaszban a 3.9. ábrát) együtt lesznek a lekérdezésdefiníció részei. Ez azért lényeges, mert minden ilyen kapcsolat egyenértékő egy kapcsolófeltétellel. Ha ezek a kapcsolatok nem lennének jelen a ábra szerinti felületen, akkor azokat két további feltétellel lehetne pótolni. Ez ki is próbálható, mert az említett kapcsolatokat el lehet távolítani: a jobb egérgombbal a kapcsolatra kattintás után elıugró menübıl a Törlés parancsot kell választani. A ábra mutatja azokat a plusz feltételeket, amelyek a hiányzó kapcsolatokat pótolják. Megjegyzés: A Feltétel sorban a táblaneveket és a mezıneveket azért kellett szögletes zárójelek közé tenni (pl. [Bizonylat].[Bizonylatkod]), mert ellenkezıleg ezeket az Access nem adat nevének, hanem közvetlenül (szöveg típusú) adatértéknek tekintené. A Mezı és a Tábla sorokra ez a szabály nem vonatkozik, mert ott az Access elsıdlegesen mezınevet, kimeneti oszlopnevet, illetve táblanevet (forrásnevet) feltételez. A Mezı sorban csak akkor kell [] jelek közé tenni egy mezı nevét, ha az nem magában áll, hanem egy kifejezés részét képezi, mint például a ábra második oszlopában: Left([Fkviszla_szam];1). 3. feladat: Az Fkviszla_forg táblából kérdezze le a hibátlanul könyvelt tételeket; tehát azokat, amelyek utóbb sem javítva, sem törölve nem lettek! ábra: A 3. feladat megoldása Ez a feladat egy lényeges körülményben különbözik az elızı kettıtıl. Az 1. feladat esetében egy Szamlatukor-sort kiválasztó feltétel teljesülése magában a sorban foglalt adatok (Fkviszla_szam, Szamla_ervkezd, Szamla_ervvege) eldönthetı volt. Hasonlóan a 2. feladat esetében egy bizonylat könyvelési idıpontja a Bizonylat-sorban álló Konyvelesdatum értéke. Ezzel szemben az, hogy egy forgalomtétel utóbb törlésre / javításra szorult, csak más tétel(ek)bıl, a ráhivatkozó törlı tétel létezésébıl derülhet ki. Az említett körülmény miatt a lekérdezés egyszerre használja azt a tételt, amelyikrıl el kell döntenie, hogy hibátlan-e, és a törlı tételeket. (Ugyanis abból derül ki a tétel hibátlan volta, hogy nincs ráhivatkozó törlı tétel.) Ez úgy lehetséges, ha az Fkviszla_forg táblát két szerepben is hozzáadjuk a lekérdezés definíciójához. A ábrán a kapcsolat az Fkviszla_forg tábla szerepeit képviselı dobozok egyikéhez a Tetelsorszamnál, a másikához a TJ_tetelsorszámnál tapad, azaz a törölt tételt a TJ_tetelsorszámmal ráhivatkozó (törlı/javító) tételekkel kapcsolja össze. Az is észrevehetı, hogy a kapcsolóvonal Fkviszla_forg_1 felıli vége nyílban végzıdik. Ez a látvány az illesztéstípus ábrán látható megválasztásának eredménye. (Az illesztéstípus beállítása is részét képezi a lekérdezés definíciójának.)

45 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE ábra: A 2. illesztéstípus kiválasztása Itt is igaz a szakaszban tett megállapítás, miszerint több forrás összekapcsolása esetén olyan munkatábla lesz a lekérdezés közvetlen forrása, amely valamennyi az eredeti források mindegyikének összes oszlopát tartalmazza. Esetünkben ez a munkatábla az Fkviszla_forg tábla oszlopait duplán tartalmazza: egyszer az Fkviszla_forg szerep irányából, egyszer pedig a törlı / javító tételeket szolgáltató Fkviszla_forg_1 szerep irányából. A 2-es illesztéstípus hatása az, hogy az Fkviszla_forg szerep irányából minden tétel megjelenik az említett munkatáblában, a Fkviszla_forg_1 szerep irányából azonban csak azok a tételek, amelyeknek létezik a TJ_tetelsorszámával hivatkozott párja. (Tehát ez az illesztéstípus lényegében az SQL-ben alkalmazható LEFT JOIN mőveletnek felel meg.) A ábrán látható lekérdezésdefiníció második oszlopában álló Fkviszla_forg_1.Tetelsorszam Is Null feltétel a munkatáblából éppen azokat az Fkviszla_forg-tételeket választja ki, amelyek, amelyekhez nem létezik a törlı / javító tétel. Itt látszik, hogy a 21. és a 22. sorszámú tételeket utólag (a tételek) törülték, illetve javították ábra: A 3. feladat szerinti lekérdezés eredménye A lekérdezés eredményét a ábra mutatja. Ebben a 21. és 22. tételsorszámú tételek nincsenek jelen, de nem is kell jelen lenniük, hiszen a tételek pont a 21. és 22. sorszámú tételeket törlik, illetve javítják; azaz a 21. és 22. sorszámú tételek hibásan lettek könyvelve. Még egy példa erejéig kitérünk a forrássorok csoportjából aggregált értékek lekérdezésének módjára is.

46 138 INFORMATIKUS SZAKMAI ISMERETEK 4. feladat: Számlaosztályonkén kérdezze le egy adott idıszak összes tartozik oldali forgalmát! A kimenet elvárt szerkezetét a ábra mutatja. A számlaforgalmat az Fkviszla_forg táblából lehet összegezni. Azok a tételek tartoznak azonos számlaosztályba, amelyek azonos számjeggyel kezdıdı számlaszámra lettek könyvelve. A fıkönyvi számlaszám azonban nincs jelen az Fkviszla_forg táblában, azt a Szamlatukor táblából kell venni. Tehát a (Szamlatukorkoddal összekapcsolt) Fkviszla_forg és Szamlatukor táblák adják a lekérdezés forrását. Számlaosztály Tartozik forgalom ábra: A 3. feladat szerinti lekérdezés elvárt kimenete ábra: A 4. feladat megoldása Összesítés gomb ábra: Az Összesítés sor hozzáadása a lekérdezésdefiniáló táblázathoz

47 ADATBÁZIS DEFINIÁLÁSA ÉS KEZELÉSE 139 A 4. feladat megoldása a ábrán látható. Itt a lekérdezésdefiniáló táblázat abban különbözik az elızı feladatoknál látottaktól, hogy Összesítés sor is van benne. Ilyen sor az Összesítés gombbal adható hozzá a táblázathoz (lásd a ábrán); és mindig szükség van rá, amikor nem az egyes forrássorokból, hanem a forrássorok csoportjaiból képzett értékeket akarunk megjeleníteni a kimeneten. A ábra a lekérdezésdefiníció elsı oszlopa a következıkrıl rendelkezik: Megjelenítendı adatot definiál (pipa a Megjelenítés kapcsolóban). A kimenı érték a fıkönyvi számlaszám elsı számjegye és az a Számlaosztály nevő oszlopban jelenik meg a kimeneten (lásd Számlaosztály: Left([Fkviszla_szam];1)). Ez adat (a számlaosztály) egyben a csoportosító ismérv (ezt jelzi a Group By). Tehát a kimeneten megjelenı egyegy sor a forrássorok olyan csoportjáról készül, amelyekben az Fkviszla_szam elsı jegye azonos. A második oszlop a következıkrıl rendelkezik: Megjelenítendı adatot definiál (pipa a Megjelenítés kapcsolóban). A kimenı érték az egy csoportba tartozó tételek Osszeg értékeinek összege, azaz Sum(Osszeg), és az a kimeneten a Tartozik forgalom nevő oszlopban jeleni meg. A harmadik és a negyedik oszlop nem megjelenítendı adatot, hanem szőrési feltételt definiál (nincs pipa a Megjelenítés kapcsolóban, és Where jelzés az Összesítés a sorban). A Where szó azt is jelenti, hogy a szőrési feltétel az eredeti forrássorokra vonatkozik, nem pedig a csoportokra. A harmadik oszlop értelme az Idoszakkod = [Adott idoszak] feltétel, a negyediké pedig a Szamlaoldal = 'T'. A harmadik oszlopban az [Adott idoszak] olyan paraméter neve, amelynek értékét az Access a lekérdezés futtatásakor fogja bekérni a felhasználótól a ábra szerinti ablakban. Az Access paraméternek tekinti az olyan adatnevet, amely nem azonos a források (táblák) semelyik mezıjének nevével. A lekérdezés eredménye a ábrán látható ábra: Az idıszakparaméter megadása ábra: A 4. lekérdezés eredménye Ellenırzı feladatok a 3.5. alfejezethez A szakaszban adott feladatokat oldja meg az Access grafikus lekérdezéstervezı felületén is. Az ottani 1. feladat view-ját helyettesítse megfelelı lekérdezés definiálásával!

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai SQL ALAPOK Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai BEVEZETÉS SQL: Structured Query Language Strukturált Lekérdező Nyelv Szabvány határozza meg, azonban számos nyelvjárása létezik

Részletesebben

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17 Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez

Részletesebben

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai 8. gyakorlat Structured Query Language Struktúrált lekérdező nyelv A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai DDL (Data Definition Language) adatstruktúra definiáló

Részletesebben

Bevezetés: az SQL-be

Bevezetés: az SQL-be Bevezetés: az SQL-be Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása SQL-ben, adattípusok, kulcsok megadása 02B_BevSQLsemak

Részletesebben

Adatbáziskezelés alapjai. jegyzet

Adatbáziskezelés alapjai. jegyzet Juhász Adrienn Adatbáziskezelés alapja 1 Adatbáziskezelés alapjai jegyzet Készítette: Juhász Adrienn Juhász Adrienn Adatbáziskezelés alapja 2 Fogalmak: Adatbázis: logikailag összefüggı információ vagy

Részletesebben

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2 Tartalomjegyzék Tartalomjegyzék 1 Az SQL nyelv 1 Az SQL DDL alapjai 2 Adatbázis parancsok 2 Táblaparancsok 2 A táblázat létrehozása 2 A táblázat módosítása 3 A tábla törlése 3 Indextábla létrehozása 3

Részletesebben

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 SQL 1.rész 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 SQL története, szabványok Szabvány adatbázis-kezelő nyelv: SQL SQL (angol kiejtésben

Részletesebben

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 Bevezetés az SQL-be Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása SQL-ben Kulcsok megadása (folyt.köv.7.fej.) -- még: Relációs

Részletesebben

ACCESS GYAKORLATOK. Tansegédlet a Szervezéstechnológia tárgyhoz. Dr. Gyurkó György 2010.

ACCESS GYAKORLATOK. Tansegédlet a Szervezéstechnológia tárgyhoz. Dr. Gyurkó György 2010. ACCESS GYAKORLATOK Tansegédlet a Szervezéstechnológia tárgyhoz Dr. Gyurkó György 2010. Szerzı: Dr. Gyurkó György 3 TARTALOMJEGYZÉK 1. Access Egy kis elmélet... 4 1.1 Adatbázis definiálása az Access grafikus

Részletesebben

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved. Lekérdezések az SQL SELECT utasítással Copyright 2004, Oracle. All rights reserved. Az SQL SELECT utasítás lehetıségei Vetítés Kiválasztás 1. tábla 1. tábla Összekapcsolás 1. tábla 2. tábla 1-2 Copyright

Részletesebben

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu Számonkérés 2 Papíros (90 perces) zh az utolsó gyakorlaton. Segédanyag nem használható Tematika 1. félév 3 Óra Dátum Gyakorlat 1. 2010.09.28.

Részletesebben

Adatbázis, adatbázis-kezelő

Adatbázis, adatbázis-kezelő Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv) Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv) Az SQL a relációs adatbázis-kezelő rendszerek ma legelterjedtebb szabványosított adatbáziskezelő nyelve. Az IBM dolgozta ki 1983-ban,

Részletesebben

B I T M A N B I v: T 2015.03.01 M A N

B I T M A N B I v: T 2015.03.01 M A N Adatbázis Rendszerek MSc 2. Gy: MySQL Táblák, adatok B I v: T 2015.03.01 M A N 1/41 Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítások DCL utasítások 2/41 Az SQL jellemzése Az SQL a relációs

Részletesebben

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány) Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány) 41/1 B IT v: 2017.10.30 MAN DDL Adatstruktúra definiáló utasítások DDL Data Definition Language Adatszerkezetek (elsősorban táblák) létrehozása,

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 2. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Táblák létrehozása,

Részletesebben

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai: 8. Gyakorlat SQL SQL: Structured Query Language; a relációs adatbáziskezelők szabványos, strukturált lekérdező nyelve SQL szabványok: SQL86, SQL89, SQL92, SQL99, SQL3 Az SQL utasításokat mindig pontosvessző

Részletesebben

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján Megszorítások Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.1. Kulcsok és idegen kulcsok 7.2. Attribútumra vonatkozó megszorítások 7.3. Megszorítások módosítása

Részletesebben

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Gazdasági folyamatok térbeli elemzése. 5. elıadás Gazdasági folyamatok térbeli elemzése 5. elıadás Adatbázisok* tulajdonságai Rendezett, logikailag összefüggı és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza Az adatok között

Részletesebben

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázis kezelés Delphiben. SQL lekérdezések Adatbázis kezelés Delphiben. SQL lekérdezések Structured Query Language adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: Utasítások tetszés szerint tördelhetők Utasítások végét pontosvessző zárja

Részletesebben

KÉPZÉS NEVE: Informatikai statisztikus és gazdasági tervezı TANTÁRGY CÍME: Adatbáziskezelés III. (elmélet+gyakorlat) Készítette: Kupcsikné Fitus Ilona

KÉPZÉS NEVE: Informatikai statisztikus és gazdasági tervezı TANTÁRGY CÍME: Adatbáziskezelés III. (elmélet+gyakorlat) Készítette: Kupcsikné Fitus Ilona Leonardo da Vinci Kísérleti projekt által továbbfejlesztett Szakmai program KÉPZÉS NEVE: Informatikai statisztikus és gazdasági tervezı TANTÁRGY CÍME: Adatbáziskezelés III. (elmélet+gyakorlat) Készítette:

Részletesebben

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis-lekérdezés. Az SQL nyelv. Makány György Adatbázis-lekérdezés Az SQL nyelv Makány György SQL (Structured Query Language=struktúrált lekérdező nyelv): relációs adatbázisok adatainak visszakeresésére, frissítésére, kezelésére szolgáló nyelv. Születési

Részletesebben

SQL parancsok feldolgozása

SQL parancsok feldolgozása Az SQL nyelv SQL nyelv szerepe Sequental Query Language, deklaratív nyelv Halmaz orientált megközelítés, a relációs algebra műveleteinek megvalósítására Előzménye a SEQUEL (IBM) Algoritmus szerkezeteket

Részletesebben

SQL DDL-1: táblák és megszorítások

SQL DDL-1: táblák és megszorítások SQL DDL-1: táblák és megszorítások Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása 7.1. Kulcsok és idegen kulcsok 7.2. Értékekre

Részletesebben

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT ÓBUDAI EGYETEM Neumann János Informatikai Kar Nappali Tagozat ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT NÉV: MÁK VIRÁG NEPTUN KÓD: A DOLGOZAT CÍME: Jani bácsi székadatbázisa Beadási határidő: 14. oktatási hét

Részletesebben

Az SQL adatbázisnyelv: DML

Az SQL adatbázisnyelv: DML Az SQL adatbázisnyelv: DML Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.5. Az adatbázis tartalmának módosítása (DML utasítások) INSERT, DELETE, UPDATE

Részletesebben

Választó lekérdezés létrehozása

Választó lekérdezés létrehozása Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,

Részletesebben

Relációsémák létrehozása SQL nyelvben

Relációsémák létrehozása SQL nyelvben Relációsémák létrehozása SQL nyelvben SQL (Structured Query Language) lekérdezés módosítás relációséma leírására alkalmas utasítások: attribútumnevek, attribútumok adattípusa megszorításokat is megadhatunk,

Részletesebben

1. A NÉPESSÉGNYILVÁNTARTÓ PROGRAM TELEPÍTÉSI FELTÉTELE. A

1. A NÉPESSÉGNYILVÁNTARTÓ PROGRAM TELEPÍTÉSI FELTÉTELE. A 1. A NÉPESSÉGNYILVÁNTARTÓ PROGRAM TELEPÍTÉSI FELTÉTELE. A következıkben leírt telepítési lépések, csak azokon a gépeken végezhetık el, ahol elızıleg is üzemelt már a DECÉRT rendszer, mivel a programhoz

Részletesebben

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése BEVEZETÉS Célkitűzések Az Oracle10g felépítésének, használatának alapszíntű megismerése A relációs adatbázis-kezelés elméleti és gyakorlati vonatkozásainak áttekintése Az SQL, PL/SQL nyelvek használatának

Részletesebben

Adatbázisok biztonsága

Adatbázisok biztonsága Adatbázisok biztonsága 13 1 Célkitőzések 1. Titoktartás (Secrecy): olyan felhasználó, akinek nincs joga, ne férjen hozzá az információkhoz. pl. egy diák ne láthassa más diák kreditjeit. 2. Sértetlenség

Részletesebben

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Programozás. Adatbázis-kezelés (alapok) Fodor Attila Programozás Adatbázis-kezelés (alapok) Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 22. Bevezetés Adatbáziskezelés

Részletesebben

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14 Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) 2014. október 22. 2014. október 22. Adatbázisok 1 / 14 SQL nyelv Structured Query Language Struktúrált lekérdez nyelv A

Részletesebben

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány) Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány) 23/1 B IT v: 2018.10.31 MAN DML adatokon műveletet végző utasítások DML Data Manipulation Language Rekordok (sorok) beszúrása (felvitele) Mezők

Részletesebben

Absztrakt feltöltése az ITDK 2013 konferenciára

Absztrakt feltöltése az ITDK 2013 konferenciára Absztrakt feltöltése az ITDK 2013 konferenciára 1. regisztráció A rendszer használatához elıször is regisztrációra van szükség. Ezt a felhasználó a kezdıképernyı jobb felsı sarkában lévı Bejelentkezés

Részletesebben

N Y I L A T K O Z A T

N Y I L A T K O Z A T N Y I L A T K O Z A T A COM for Web internetes számlázó alkalmazás (https://konyveles.multienergie.hu) számlázási rendjéről. 1. A számlák iktatószámainak felépítése: 1.1. Az iktatószám felépítése kimenő

Részletesebben

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31 Adatbázisok 2. gyakorlat SQL 2016. november 12. 2016. november 12. Adatbázisok 1 / 31 SQL nyelv Structured Query Language Struktúrált lekérdez nyelv A relációs adatbáziskezelés szabványos nyelve Két f

Részletesebben

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK) Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK) http://sila.hajas.elte.hu/ 5.hét: SQL áttekintés, táblák létrehozása és adatok felvitele Az előadások Ullman-Widom: Adatbázisrendszerek

Részletesebben

Az adatbázisrendszerek világa

Az adatbázisrendszerek világa Az adatbázisrendszerek világa Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 1.1. Az adatbázisrendszerek fejlődése 1.2. Az adatbázis-kezelő rendszerek áttekintése

Részletesebben

INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS FELADATOK

INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS FELADATOK INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS FELADATOK ALAPFOGALMAK...2 ACCESS ALAPOK...2 ACCESS KÉPERNYİ RÉSZEI...3 ADATBÁZIS LÉTREHOZÁSA...3 ADATTÁBLÁK...4 ÚJ TÁBLA LÉTREHOZÁSA...4 MŐVELETEK

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 3. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Tábla kapcsolatok létrehozása,

Részletesebben

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázis Rendszerek II. 8. Gyakorló környezet Adatbázis Rendszerek II. 8. Gyakorló környezet 1/24 B IT v: 2017.10.26 MAN Gyakorló környezet Géptermek 193.6.5.58:8080/apex H16_neptunkód ADMIN neptunkód 2/24 Jelszó váltás 1 2 3 4 3/24 Gyakorló környezet

Részletesebben

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok 1 Jogosultság-kezelés Egy fájlrendszer általában jogosultságokat rendel az általa kezelt objektumokhoz. Tipikusan olvasható, írható,

Részletesebben

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

FELHASZNÁLÓI LEÍRÁS a DIMSQL Integrált Számviteli Rendszer Mérleg moduljának használatához

FELHASZNÁLÓI LEÍRÁS a DIMSQL Integrált Számviteli Rendszer Mérleg moduljának használatához FELHASZNÁLÓI LEÍRÁS a DIMSQL Integrált Számviteli Rendszer Mérleg moduljának használatához www.dimenzio-kft.hu Tartalomjegyzék A. BESZÁMOLÓK... 3 I. MÉRLEG, EREDMÉNYKIMUTATÁS... 3 I. 1. Mérleg... 3 I.

Részletesebben

Adatbázis használat I. 5. gyakorlat

Adatbázis használat I. 5. gyakorlat Adatbázis használat I. 5. gyakorlat Tudnivalók Jövő hétre a normalizálást hozni vagy e- mailben beküldeni! 7. héten (= két hét múlva!) nagyzh + FF checkpoint: adattáblák feltöltése, megszorítások 2010.

Részletesebben

SAP Business One. Üzleti partnerek kezelése. Mosaic Business System Kft.; Support: +36 1 253-0526

SAP Business One. Üzleti partnerek kezelése. Mosaic Business System Kft.; Support: +36 1 253-0526 Üzleti partnerek kezelése Mosaic Business System Kft.; Support: +36 1 253-0526 Törzsadatok Keresés üzleti partner törzsadatok között Üzleti partner rögzítése Törzsadatok A legördülı mezı segítségével választhatja

Részletesebben

Útmutató a MATARKA adatbázisból való adatátvételhez

Útmutató a MATARKA adatbázisból való adatátvételhez Útmutató a MATARKA adatbázisból való adatátvételhez A MATARKA - Magyar folyóiratok tartalomjegyzékeinek kereshetı adatbázisa a következı címrıl érhetı el: http://www.matarka.hu/ A publikációs lista kinyerése

Részletesebben

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Szabó Rozalinda Oracle adattárház szakértő, oktató szabo.rozalinda@gmail.com Index tömörítés fejlődése 8.1.3-as verziótól: Basic (Prefixes) index

Részletesebben

BEVEZETÉS Az objektum fogalma

BEVEZETÉS Az objektum fogalma BEVEZETÉS Az objektum fogalma Program (1) Adat (2) Objektum Kiadványszerkesztés Word Táblázatkezelés Excel CAD AutoCad Adatbáziskezelés Access 1 Program (1) Adat (2) Objektum Adatmodell (2) A valós világ

Részletesebben

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások 1 Külső összekapcsolás Összekapcsoljuk R és S relációkat: R C S. R azon sorait,

Részletesebben

NetB@nk szolgáltatásról

NetB@nk szolgáltatásról Székhely: 6065 Lakitelek, Liget u. 2. Levelezési cím: 6000 Kecskemét, Kisfaludy u.8. Telefon: (76) 502-650 e-mail: kozpont@lakitelek.tksz.hu Kirendeltségek: Lakitelek (76) 449-135 Nyárlırinc (76) 343-015

Részletesebben

Folyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével

Folyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével Tömeges számlázás Folyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével Tömeges számlázáshoz tartozó alap beállítások Tömeges számlázási adatok megadása

Részletesebben

Internet Bank használati útmutató

Internet Bank használati útmutató Internet Bank használati útmutató Miután az Internet Bank használatára leadták igénylésüket, E-mailben illetve SMS-en fogjuk megkeresni Önt. E-mailben megkapja a Csoport, illetve a Felhasználó nevét, SMS-ben

Részletesebben

SAP Business One. Raktári tranzakciók. Mosaic Business System Kft.; Support: +36 1 253-0526

SAP Business One. Raktári tranzakciók. Mosaic Business System Kft.; Support: +36 1 253-0526 Raktári tranzakciók Mosaic Business System Kft.; Support: +36 1 253-0526 Szállítás Árubeérkezés Kimutatások Szállítólevél készítése a vevıi rendelésbıl származtatva A partner kiválasztása a Szállító vagy

Részletesebben

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla Adatbázisok-1 előadás Előadó: dr. Hajas Csilla Áttekintés az I.zh-ig Áttekintés az 1ZH-ig // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 Hol tartunk? Mit tanultunk

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján Nézetek és indexek Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 8.1. Nézettáblák 8.2. Adatok módosítása nézettáblákon keresztül 8.3. Indexek az SQL-ben 8.4. Indexek

Részletesebben

Adatbázis rendszerek SQL nyomkövetés

Adatbázis rendszerek SQL nyomkövetés Adatbázis rendszerek 1. 12. SQL nyomkövetés 1/32 B ITv: MAN 2017.10.26 Nyomkövetési feladat 2/32 Gyakorló feladatok Termék-Vásárlás-Vásárló Oktató-Tantárgy-Hallgató 3/32 Gyakorló feladat: Termék-Vásárlás-Vásárló

Részletesebben

PAS számlázó szoftver Használati útmutató

PAS számlázó szoftver Használati útmutató PAS számlázó szoftver Használati útmutató 1 Bevezetés 1.1.1 A PAS számlázó szoftver (a továbbiakban számlázó ) a magyar jogszabályoknak megfelelő számla kibocsátására alkalmas, interneten keresztül használható

Részletesebben

Szakrendelések nyitva tartásának nyilvántartása

Szakrendelések nyitva tartásának nyilvántartása Szakrendelések nyitva tartásának nyilvántartása Alapok, Munkahelyek nyitva tartás sorra kattintva megjelenik az alábbi ablak: A Lista fülön, jelöljük ki azt a munkahelyet, amelynek a nyitvatartási rendjén

Részletesebben

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.4. Relációs algebra (áttekintés) 5.1.

Részletesebben

SQL DDL-2 (aktív elemek) triggerek

SQL DDL-2 (aktív elemek) triggerek SQL DDL-2 (aktív elemek) triggerek Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.fej.: Megszorítások és triggerek 7.4. Önálló megszorítások 7.5. Triggerek

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. november 20. 10. El adás SQLite SQLite: Adatbázis kezel rendszer SQL standardokat nagyrészt követi Nagyon elterjedt, pl böngész kben is használt Nehéz olyan programnyelvet

Részletesebben

WEBPAC e-corvina. Egyszerő keresés:

WEBPAC e-corvina. Egyszerő keresés: WEBPAC e-corvina Katalógusunk tartalmazza a Dunaújvárosi Fıiskola Könyvtárában 1995-tıl megtalálható dokumentumok leírását és példányadatait. A katalógusba való belépés után a következı lehetıségek közül

Részletesebben

Chat felhasználói segédlet

Chat felhasználói segédlet Chat felhasználói segédlet A Chat indítása, regisztráció, belépés A Chatre a honlapról www.smlista.hu, vagy a http://chat.smlista.hu címrıl lehet belépni. A fıoldalon van a belépés a Chatre, ha már van

Részletesebben

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK) 9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK) http://sila.hajas.elte.hu/ Adatbázis-kezelő rendszerek áttekintése, alapfogalmak Tankönyv: 1.fejezet: Az adatbázisrendszerek világa Adatbázisok-1 (Hajas

Részletesebben

2 Access 2016 zsebkönyv

2 Access 2016 zsebkönyv 2 Access 2016 zsebkönyv BBS-INFO Kiadó, 2016. 4 Access 2016 zsebkönyv Bártfai Barnabás, 2016. Minden jog fenntartva! A könyv vagy annak oldalainak másolása, sokszorosítása csak a szerző írásbeli hozzájárulásával

Részletesebben

Földnyilvántartó szoftver 2012

Földnyilvántartó szoftver 2012 Földnyilvántartó szoftver 2012 Bérleti szerzıdés és bérelt terület nyilvántartás tulajdonos és haszonélvezı szerint. Bérleti díj alrészlet bontásban. Bérleti szerzıdés, Földnyilvántartás, Földhivatali

Részletesebben

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14 Adatbázisok 9. gyakorlat SQL: SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 14 SQL SELECT Lekérdezésre a SELECT utasítás szolgál, mely egy vagy több adattáblából egy eredménytáblát állít el

Részletesebben

3. modul - Szövegszerkesztés

3. modul - Szövegszerkesztés 3. modul - Szövegszerkesztés - 1-3. modul - Szövegszerkesztés Az alábbiakban ismertetjük a 3. modul (Szövegszerkesztés) syllabusát, amely a modulvizsga követelményrendszere. A modul célja Ezen a vizsgán

Részletesebben

1) Kontírozás megkezdését megelőző lépések a Készlet modulban. A kontírozást a Készlet a főkönyvnek egy menüpont futtatásával adja át:

1) Kontírozás megkezdését megelőző lépések a Készlet modulban. A kontírozást a Készlet a főkönyvnek egy menüpont futtatásával adja át: 1) Kontírozás megkezdését megelőző lépések a Készlet modulban 1.1 Bizonylat ellenőrzés és automatikus kontírozás A 2014 évi számviteli változások miatt a Készlet programban is szükségessé válik a kontírozás,

Részletesebben

Adatbázis-kezelés. Harmadik előadás

Adatbázis-kezelés. Harmadik előadás Adatbázis-kezelés Harmadik előadás 39 Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord

Részletesebben

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv). Az SQL nyelv SQL (Structured Query Language = Strukturált Lekérdező Nyelv). A lekérdezési funkciók mellett a nyelv több olyan elemmel is rendelkezik, amelyek más adatkezelési funkciók végrehajtására is

Részletesebben

Titkok. Oracle adatbázisok proaktív es reaktív védelmi eszközei. Mosolygó Ferenc, vezetı technológiai tanácsadó. <Insert Picture Here>

Titkok. Oracle adatbázisok proaktív es reaktív védelmi eszközei. Mosolygó Ferenc, vezetı technológiai tanácsadó. <Insert Picture Here> Titkok Belsı támadások Törvényi elıírások Oracle adatbázisok proaktív es reaktív védelmi eszközei Mosolygó Ferenc, vezetı technológiai tanácsadó Proaktív és reaktív védelem Proaktív

Részletesebben

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla 1. Az adatbázistábla létrehozása a, Ha még nem hoztunk létre egy adatbázistáblát sem, akkor a jobb egérrel a DDIC-objekt. könyvtárra kattintva, majd a Létrehozás és az Adatbázistábla menüpontokat választva

Részletesebben

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis AB1 ZH mintafeladatok 1. Töltse ki, és egészítse ki! Matematikai formalizmus arra, hogy hogyan építhetünk új relációkat a régi relációkból. Az adatoknak egy jól strukturált halmaza, amelyből információ

Részletesebben

A LEGGYAKORIBB HIBA : A GYŐJTİSZÁMLÁRA UTALÁS MÉG NEM JELENTI A KÖLTSÉGTÉRÍTÉS AUTOMATIKUS BEFIZETÉSÉT!!!

A LEGGYAKORIBB HIBA : A GYŐJTİSZÁMLÁRA UTALÁS MÉG NEM JELENTI A KÖLTSÉGTÉRÍTÉS AUTOMATIKUS BEFIZETÉSÉT!!! KÖLTSÉGTÉRÍTÉS BEFIZETÉSE A NEPTUNON 1. Amennyiben saját maga a befizetı : Elsısorban gondoskodnia kell róla, hogy a BME győjtıszámlára átutalja a megfelelı összeget. A BME győjtıszámlára bármely banknál

Részletesebben

Miért olyan fontos a minıségi pont?

Miért olyan fontos a minıségi pont? A fiókban látható konkrét minıségi pont értékek egy olyan általános számítás eredményei, ami a kulcsszó tökéletes egyezése esetére érvényesek. Miért olyan fontos a minıségi pont? A minıségi pont három

Részletesebben

ADATBÁZISOK, ADATTÁRHÁZAK

ADATBÁZISOK, ADATTÁRHÁZAK ADATBÁZISOK, ADATTÁRHÁZAK 1 Adattárolás Háttértárak Fájlok Fájlkezelő rendszer 2 Adattárolás Az adatok, információk bináris formában kerülnek tárolásra. Értelmezés kérdése, hogy egy bitsorozatnak milyen

Részletesebben

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés

Részletesebben

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték WHERE záradék (további lehetıségek) SQL specialitások, amelyek könnyen átírhatóak relációs algebrai kifejezésre (összetett kiválasztási feltételre) BETWEEN.. AND.. intervallumba tartozás IN (értékhalmaz)

Részletesebben

Adatmodellezés. 1. Fogalmi modell

Adatmodellezés. 1. Fogalmi modell Adatmodellezés MODELL: a bonyolult (és időben változó) valóság leegyszerűsített mása, egy adott vizsgálat céljából. A modellben többnyire a vizsgálat szempontjából releváns jellemzőket (tulajdonságokat)

Részletesebben

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán Hogyan tároljunk nagy mennyiségű adatot? Redundáns (ismétlődő) adatok Adattípusok konzisztenciáját nem biztosítja Nem kereshető, nehezen

Részletesebben

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok. Adatbázis I. 11. előadás Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok. 1 1. Kulcsok az SQL-ben 2. Hivatkozási épség és idegen kulcsok 3. Attribútum értékre vonatk. megszorítások

Részletesebben

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek ADATBÁZIS-KEZELÉS Adatbázis-kezelő rendszerek Adat (Data) Észlelhető, felfogható ismeret Jelsorozat Tény, közlés Valakinek vagy valaminek a jellemzője Adatbázis (Data Base, DB) Hosszú ideig évekig meglévő

Részletesebben

1) Szállítói számla kontírozásának megkezdését megelőző lépések a Tárgyi eszköz modulban

1) Szállítói számla kontírozásának megkezdését megelőző lépések a Tárgyi eszköz modulban 1) Szállítói számla kontírozásának megkezdését megelőző lépések a Tárgyi eszköz modulban Bizonylat pénzügyi ellenőrzése és kontírozása A Pénzügy modulban történő kontírozást megelőzően a Tárgyi eszköz

Részletesebben

Összegzı mérleg. METRISoft MS-UMT-01 Mérlegmőszerrel. Kezelési Segédlet

Összegzı mérleg. METRISoft MS-UMT-01 Mérlegmőszerrel. Kezelési Segédlet METRISOFT Mérleggyártó KFT : 6800 Hódmezıvásárhely Jókai u.30. Tel.: (62) 246-657 Fax: (62) 249-765 E-mail: merleg@metrisoft.hu Web: www.metrisoft.hu Utolsó módosítás: 2009.03.03 Ver.: 1.0 Érvényes: 2009.03.03-tól

Részletesebben

INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS

INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS INFORMATIKA INGYENES ELEKTRONIKUS TANANYAG ADATBÁZIS-KEZELÉS TARTALOMJEGYZÉK ALAPFOGALMAK...2 ACCESS ALAPOK...2 AZ ACCESS KÉPERNYİ RÉSZEI:...3 ADATBÁZIS MEGNYITÁSA:...3 AZ ADATTÁBLA (TÁBLA):...4 AZ ELSİDLEGES

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS 2015-2016 Adatbázis alapú alkalmazások készítése PHP-ben Adatbázis alapú alkalmazás 2 A leggyakrabban használt dinamikus alkalmazások

Részletesebben

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám Fogalmak: Adatbázis: logikailag összefüggő információ vagy adatgyőjtemény. Tábla: logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. Adatbázis sorai: (adat)rekord Adatbázis oszlopai:

Részletesebben

Kézikönyv. Határozott idejű számla könyvelése - értékesítés

Kézikönyv. Határozott idejű számla könyvelése - értékesítés Kézikönyv Határozott idejű számla könyvelése - értékesítés Tartalomjegyzék 1 ABAS-ERP UTASÍTÁS ÁTTEKINTÉS... 5 2 VEVŐ - ÜRES... 6 3 VEVŐ - MEGJELENÍTÉS [76372 PARTNER PARTNER KERESKEDŐHÁZ KFT] 7 4 ABAS-ERP

Részletesebben

A jelen fejlesztéssel párhuzamosan bővült az Adatbázis kapcsolat ablak információtartalma.

A jelen fejlesztéssel párhuzamosan bővült az Adatbázis kapcsolat ablak információtartalma. TÁJÉKOZTATÓ A CCN V2015.6 VERZIÓHOZ Változások a V2015.5 verzió kiadása után Általános információk, alapadatok 1. SQL adatbázis adatainak kijelzése SQL server Express edition esetén, ha az adatbázis által

Részletesebben

Az eszközpaletta. Felsı sor balról jobbra. Második sor balról jobbra 1/7

Az eszközpaletta. Felsı sor balról jobbra. Második sor balról jobbra 1/7 Az eszközpaletta Látható, hogy a Delphi 7.0 ablakai a Windows operációsrendszernél megszokott jellemzıkkel bírnak: címsor, ablakkezelı gombok, vezérlımenü stb. A Delphi címsora a Delphi 7 - Project1 feliratot

Részletesebben

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK Az adatbázis-kezelők elvárásai közé tartozik az, hogy legyen egy olyan adatbázis-kezelőktől független nyelv, amely az adatdefiníciós, az adatmanipulációs és a lekérdező

Részletesebben

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 3. Előadás Az SQL adatbázisnyelv (Tartalom) Az SQL története Az SQL felépítése Adattípúsok SQL utasítások 1 Sapientia - Erdélyi Magyar TudományEgyetem

Részletesebben

HATODIK FEJEZET / FÜGGİ MODELLEK / TANGRAM

HATODIK FEJEZET / FÜGGİ MODELLEK / TANGRAM HATODIK FEJEZET / FÜGGİ MODELLEK / TANGRAM CAD - CAM ALAPOK PRO ENGINEER OKTATÓANYAG FELADATKIÍRÁS A TANGRAM egy ısi kínai kirakós játék, amelynek több változata ismert. A bemutatott változatnál egy dobozban

Részletesebben

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák A Portál rendszer felületének általános bemutatása Felhasználói útmutató Támogatott böngészők Internet Explorer 9+ Firefox (legújabb verzió) Chrome (legújabb verzió) Felületek felépítése Információs kártyák

Részletesebben