Adatbázis-szerverek. Hallgatói segédlet

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

Download "Adatbázis-szerverek. Hallgatói segédlet"

Átírás

1 Adatbázis-szerverek Hallgatói segédlet (a gyakran használt Transact-SQL-utasítások összefoglalása. Az SQL Server Books Online alapján összeállította Karácsony Péter ILIAS-lap: Tartalom Tartalom... 1 Bevezető... 4 A minta (VIZSGA) adatmodell... 4 A táblák tartalma:... 5 A fejlesztőkörnyezet... 7 A kommunikációs eszköz (Transact-SQL)... 7 Először néhány fogalmat tisztázunk... 7 Rendszeradatbázisok... 7 Felhasználói adatbázisok oldal Adatbázis-szerverek - összefoglaló

2 Adatbázis-objektumok... 8 Az objektumok azonosítása:... 9 A T-SQL elemei... 9 T-SQL-utasítások csoportosítása... 9 T-SQL-utasítások végrehajtása...10 Transact-SQL (kivonat a BOL alapján)...10 DDL (adatdefiníciós nyelv) USE (adatbázis használatba vétele)...12 CREATE DATABASE (adatbázis létrehozása)...12 CREATE TABLE (tábla létrehozása)...13 ALTER TABLE (tábla módosítása)...15 DROP TABLE (tábla törlése)...16 DML (adatmanipulációs nyelv) INSERT (új sorok beillesztése)...17 UPDATE (sorok módosítása)...19 DELETE (sorok törlése)...20 DQL (adatlekérdező nyelv) SELECT (eredménytábla előállítása)...21 A WITH...21 Vezérlőszerkezetek (procedurális nyelv) DECLARE (lokális változó deklarálása)...25 SET (skalárváltozó-értékadás)...25 BEGIN... END (szekvencia) oldal Adatbázis-szerverek - összefoglaló

3 IF... ELSE (szelekció)...26 WHILE (iteráció)...27 TRY... CATCH (egyszerű hibacsapdázás)...27 RAISERROR függvény (hiba generálás)...27 PRINT (szöveges üzenet a kliensnek)...28 Adatbázisban tárolt programelemek Típusai:...29 Beépített függvények...30 Felhasználói függvények...30 CREATE FUNCTION (felhasználóifüggvény-definiálás)...30 Skalár-értékű függvény...30 In-line tábla-értékű függvény...32 Multistatement táblaértékű függvény...33 A rendszer tárolt eljárásai...38 Felhasználói tárolt eljárások...38 CREATE PROCEDURE (tárolt eljárás definiálása)...39 DML-triggerek...43 CREATE TRIGGER (DML trigger definiálása)...43 Tranzakciókezelés BEGIN TRASACTION (tranzakció indítása)...47 COMMIT TRANSACTION (tranzakció elfogadtatása)...48 ROLLBACK TRANSACTION (tranzakció visszagörgetése) oldal Adatbázis-szerverek - összefoglaló

4 Bevezető Jelen segédlet az Adatbázis-szerverek tárgy gyakorlati alkalmazásához próbál segítséget nyújtani. Konkrét fejlesztőkörnyezetben (SQL Server 2008 Express) egy konkrét probléma (Hallgatók vizsgaeredményeinek nyilvántartása egy elképzelt főiskolán) megoldására teszünk kísérletet. Az anyag a többrétegű szoftverfejlesztés adat-rétegének megvalósítását követi végig. Ehhez a (microsoftos) szerver-környezet kommunikációs eszközének (T-SQL) lehetőségeit veszi sorra. Ne feledjük, hogy az anyagunk erősen kivonatos (a szintaktikai megfogalmazások nagyon leegyszerűsítettek!), arra koncentrál, hogy a tárgy kimeneti követelménye teljesíthető legyen. A témakör teljesebb, igényesebb feldolgozásához rendelkezésre áll a szerverhez tartozó online dokumentáció (SQL Server Books Online). Az anyag feldolgozásához természetesen szükséges előző modulok (Adatbázisok, Programozás) alapos ismerete. A minta (VIZSGA) adatmodell Példánkban egy általános főiskola hallgatóinak tanulmányi eredményeit tartjuk nyilván. Az iskolával kapcsolatba kerülő személyek között szerepelnek a tanárok, és közülük kerülnek ki a hallgatók is, akik a meghirdetett szakokra jelentkeztek. 4. oldal Adatbázis-szerverek - összefoglaló

5 A hallgatók tanulmányaikat a szakoknak megfelelő tematika szerint szemeszterekre osztva végzik. A tematikában felsorolt tárgyak teljesítésének legfeljebb egy kötelezően előírt előzmény tárgy teljesítése a feltétele. A teljesítés tematika szerint meghirdetett vizsgákon történik, amelyhez a hallgató jelentkezés útján jut el. Ezekből következnek a kapcsolatok: személy hallgató o 1:1 o egy hallgató itt egyetlen szak! szak tantárgy o n:m o ezért: tematika szak és tematika tantárgy o n:1 tematika tematika o 1:m o most legfeljebb egy előzmény A többi kapcsolat értelemszerű. A táblák tartalma: MEZŐ ADATTÍPUS LEÍRÁS szak szkód char(3) azonosító szak varchar(50) a szak megnevezése szemeszter tinyint maximális szemeszter tantárgy tkód char(4) azonosító 5. oldal Adatbázis-szerverek - összefoglaló

6 elnevezés varchar(30) a tantárgy elnevezése vez_tanár int tantárgyvezető azonosítója (személyből) tematika szak char(3) a szak azonosítója tárgy char(4) a tárgy azonosítója szemeszter tinyint a tárgy szemesztere szakon belül előzmény char(4) a vizsgához (esetlegesen) szükséges tárgy azonosítója személy szkód int azonosító név varchar(50) a személy neve szül_dátum date születési dátum hallgató hkód int azonosító (kapcsolat személyhez) szak char(3) az iskolai szak kódja akt_szem tinyint a hallgató aktuális szemesztere vizsga vizsga int azonosító szak char(3) a szak azonosítója tárgy char(4) a tárgy azonosítója idő smalldatetime a vizsga időpontja tanár int az értékelő tanár azonosítója max_fő smallint maximális létszám jelentkezés hkód int hallgató azonosító vizsga int vizsga azonosító szem tinyint a hallgató aktuális szemesztere jegy tinyint érdemjegy (0 nem jelent meg) 6. oldal Adatbázis-szerverek - összefoglaló

7 A fejlesztőkörnyezet MS SQL Server 2008 Express (letölthető a Microsoft oldaláról) SQL alapú relációs adatbáziskezelő, a szerver oldal. Installálása nem jelenthet gondot. Számunkra komponensei közül (egyelőre) csak a motor (Database Engine) szükséges. SQL Server Management Studio (letölthető a Microsoft oldaláról) egy már jól megszokott objektumorientált vizuális szerkesztőfelület, a kliens-oldal. Számunkra szükséges használata rövid idő alatt elsajátítható. SQL Server Books Online (BOL a 2008 R2-höz letölthető a Microsoft oldaláról) egy mint a neve is utal rá teljes felhasználói dokumentáció. Használata elengedhetetlen. Jelen segédlet is ez alapján készült, ennek egy igen nagyvonalú, a számunkra feltétlenül szükséges elemek kivonatos része. Használata egyértelmű. A kommunikációs eszköz (Transact-SQL) A már jól ismert szabvány SQL kiegészítve procedurális nyelvi elemekkel. Anyagunkban csupán a fejlesztéshez szükséges alapvető elemeket vesszük sorba, nem foglalkozunk a rendszeradminisztrátor és a rendszergazda tevékenységeivel. Először néhány fogalmat tisztázunk Az SQL Server: (számunkra) adatbázisokból áll. Rendszeradatbázisok Master a tulajdonképpeni rendszerkatalógus metaadatokkal 7. oldal Adatbázis-szerverek - összefoglaló

8 Modell minta, amely alapján a felhasználói adatbázis szerkezete kialakul Msdb a szerver felügyelet ütemezéséhez szükséges (nem foglalkozunk vele) Tempdb ideiglenes objektumok kezelését biztosítja Felhasználói adatbázisok Név a rendszertervünk alapján létrehozott adatbázis Adatbázis-objektumok Ezek összességét tekintjük adatbázisnak tábla (table) az adatok tárolására szolgál, a modell relációiból keletkezik nézet (view) virtuális tábla, tárolt select. Adatbiztonsági illetve feldolgozás hatékonysági szerepe van. index (index) logikai (fizikai) rendezése a táblának, nézetnek. Feldolgozás hatékonysági szerepe van. függvény (function) - programozási egység tárolt eljárás (procedure) programozási egység az üzleti logika megvalósításához. trigger (trigger) speciális eljárás, amely végrehajtását események váltják ki. megszorítás (constraint) adatintegritás megőrzésének egyik eszköze. Az objektumok úgynevezett sémákba (schema) vannak rendezve. A séma egy konténernek tekinthető, amely adatbázis objektumokat tartalmaz. Nagy méretű (sok tábla) adatbázis esetén célszerű a használata, jelen anyagunkban nem foglalkozunk vele. Az alapértelmezett séma (automatikusan létrejön) a dbo nevet kapja. 8. oldal Adatbázis-szerverek - összefoglaló

9 Az objektumok azonosítása: <Szerver_név>.<adatbázis_név>.<séma_név>.<objektumnév> Alapértelmezett értékek: szerver - lokális adatbázis - kiválasztott séma - a kapcsolathoz rendelt (esetünkben dbo) konstans változó függvény operátor kifejezés utasítás A T-SQL elemei Bármely egyéb programozási környezetben megszokott fogalmak. Részletesen később. T-SQL-utasítások csoportosítása DDL (adat definíció) adatbázis objektumok előállítása, karbantartása (CREATE, ALTER, DROP) DML (adat manipuláció) adatok tárolása, módosítása, törlése (INSERT, UPDATE, DELETE) DQL (adat lekérdező) eredmény tábla előállítása (SELECT ) TCL (tranzakció vezérlő) tranzakció kezelés (COMMIT, ROLLBACK) 9. oldal Adatbázis-szerverek - összefoglaló

10 Vezérlőszerkezetek az egyéb procedurális környezetben megismert lehetőségek (deklaráció, szekvencia, szelekció, iteráció) T-SQL-utasítások végrehajtása Végrehajtási egység a köteg (batch), amely T-SQL-utasítások sorozata. Minden köteget egységként értelmez az adatbázismotor, egységként hajtja végre. A kötegeket szkriptekben helyezhetjük el. Az sqlszkript egy szövegfájl alapértelmezett.sql kiterjesztéssel. A szkriptben az egyes kötegeket a utasítással zárjuk. (A nem T-SQL-parancs!) Egyelőre két lehetőségünk van a szkriptek futtatására (végrehajtására): SQLCMD (rendszer-segédprogram) paraméterezését lásd: BOL. Management Studio new query hatására megnyíló kódszerkesztő. A szerkesztőben megírt szkriptet az execute eszközgombbal hajtatjuk végre. Természetesen szinte minden előállítható vizuális eszközök segítségével is a felületen (és természetesen ezekből megfelelő szkriptek generálhatóak), ezen anyag ezzel nem foglalkozik. Az ismerkedés során ez utóbbi a javasolt. Az anyag későbbi részeiben példaként megadott kódok szkriptként értelmezendők. Transact-SQL (kivonat a BOL alapján) Jelölési konvenciók (igyekszem betartani): UPPERCASE Transact-SQL-kulcsszó 10. oldal Adatbázis-szerverek - összefoglaló

11 italic bold underline Szimbólum (azonosító). Szöveg, amit kötelezően így kell megadni. Elhagyás esetén alapértelmezett érték. (vertical bar) Választható értékek elválasztása. [ ] (brackets) Opcionális szintaktikus elem. { } (braces) Szükséges szintaktikus elem. [,...n] [...n] Megelőző elem ismétlése vesszővel elválasztva. Megelőző elem ismétlése szóközzel elválasztva. ; Transact-SQL-utasítás végénét jelzi (nem szükséges, sőt...) <label> ::= Elnevezett szintaktikus blokk. Kifejtése később megtalálható. Megjegyzések elhelyezése a kódban: -- sorvégi megjegyzés /* többsoros megjegyzés (blokk)... [...] */ DDL (adatdefiníciós nyelv) Alapvetően három parancs (létrehozás, módosítás, törlés) tartozik ide az összes adatbázis objektumra vonatkozóan. Itt most csupán a már 11. oldal Adatbázis-szerverek - összefoglaló

12 ismert objektumok (táblák) kezelését tekintjük át. A többire (függvény, eljárás,) később kerül sor. Nem ebbe a kategóriába tartozik, viszont meg kell említeni az aktuális adatbáziskiválasztás utasítását. (Emlékszünk, az SQL utasításai mindig az aktuális (nyitott) adatbázison operálnak.) USE (adatbázis használatba vétele) A megadott nevű adatbázis lesz az aktuális. Minden további utasítás ezen fog végrehajtódni. USE ab_név CREATE DATABASE (adatbázis létrehozása) A megadott nevű felhasználói adatbázist létrehozza az esetlegesen megadott helyen és méretekkel. Két fizikai állomány keletkezik: adatterület, naplófájl. CREATE DATABASE db_név [ ON [ PRIMARY ]([ NAME=log_név, FILENAME='fiz_név' ]) [, SIZE=méret ] [, MAXSIZE={max_ méret UNLIMITED } ] [, FILEGROWTH=növekmény ] ] [ LOG ON (NAME=log_név, FILENAME='fiz_név'] ) [, SIZE=méret ] [, MAXSIZE={max_ méret UNLIMITED } ] [, FILEGROWTH=növekmény ] ] [ COLLATE collation_név ] ] 12. oldal Adatbázis-szerverek - összefoglaló

13 Példa create_db.sql -- master a renszerkatalógus USE master /* létrehozzuk a példáinkban használt vizsga adatbázist egy megadott elérési úton */ CREATE DATABASE vizsga ON PRIMARY (NAME=vizsga, FILENAME='E:\sqls2008r2\adat\vizsga.mdf') LOG ON (NAME=vizsga_log, FILENAME='E:\sqls2008r2\adat\vizsga.ldf') CREATE TABLE (tábla létrehozása) Megadott névvel létrehoz egy adattáblát a megadott oszlopokkal, illetve alapvető megszorításokkal, mint kulcs (PRIMARY KEY, UNI- QUE), idegen kulcs (FOREIGN KEY), sorszintű feltétel (CHECK). Lehetőség van ideiglenes tábla létrehozására (a tábla neve #-al kezdődik), amely láthatósága és élettartama az őt létrehozó kapcsolat (session). CREATE TABLE tábla_név ( { <oszlop_definíció> [<tábla_megszorítás>] } [,...n ] ) <oszlop_definíció>: oszlop_név <adat_típus> [ NULL NOT NULL ] [ [ DEFAULT (konstants) ] [ IDENTITY [ (kezdőérték, növekmény) ] ] ] 13. oldal Adatbázis-szerverek - összefoglaló

14 <tábla_megszorítás>: CONSTRAINT név { { PRIMARY KEY UNIQUE } (oszlop [ ASC DESC ] [,...n ] ) FOREIGN KEY (oszlop [,...n ] ) REFERENCES hivatkozott_tábla [ ( hiv_oszlop [,...n ] ) ] CHECK ( logikai_kif ) } Gyakrabban használt adattípusok: CHAR(n),VARCHAR(n MAX) NCHAR(n),NVARCHAR(n MAX) DATE,DATETIME,SMALLDATETIME,TIME DECIMAL(pontosság,skála) FLOAT(n),REAL INT,BIGINT,SMAL- LINT,TINYINT Példa: create_table.sql /* a rendszer három tábláját hozzuk létre, kapcsolataikkal együtt */ USE vizsga CREATE TABLE szak ( szkód char(3) NOT NULL, szak varchar(50) NOT NULL, szemeszter tinyint NOT NULL, CONSTRAINT PK_szak PRIMARY KEY (szkód ASC)) 14. oldal Adatbázis-szerverek - összefoglaló

15 CREATE TABLE személy( szkód int IDENTITY(1,1) NOT NULL, név varchar(50) NOT NULL, szül_dátum date NOT NULL, CONSTRAINT PK_személy PRIMARY KEY(szkód)) CREATE TABLE hallgató( hkód int NOT NULL, szak char(3) NOT NULL, akt_szem tinyint NOT NULL DEFAULT (1), CONSTRAINT PK_hallgató PRIMARY KEY (hkód), CONSTRAINT FK_hallgató_szak FOREIGN KEY(szak) REFERENCES szak (szkód), CONSTRAINT FK_hallgató_személy FOREIGN KEY(hkód) REFERENCES személy (szkód) ) ALTER TABLE (tábla módosítása) Meglévő oszlop módosítása, törlése illetve új oszlop hozzáadása. Ugyancsak ez az utasítás szolgál táblamegszorítás hozzáadására és törlésére. ALTER TABLE tábla_név { ALTER COLUMN <oszlop_definíció> ADD { 15. oldal Adatbázis-szerverek - összefoglaló

16 } <oszlop_definíció> < tábla_megszorítás> } [,...n ] DROP { [ CONSTRAINT ] constraint_ név COLUMN oszlop_név } [,...n ] Példa: alter.sql /* módosítjuk a szak tábla szemeszter oszlopát úgy, hogy alapértelmezett értéke 6 legyen, lehetséges értéke pedig 1 és 8 közé eshet */ USE vizsga ALTER TABLE szak ADD CONSTRAINT DF_szak_szemeszter DEFAULT (6) FOR szemeszter, CONSTRAINT CK_szak_szemeszter CHECK (szemeszter>=1 AND szemeszter<=8) DROP TABLE (tábla törlése) A megadott táblá(ka)t törli azadatbázisból DROP TABLE tábla_név [,...n ] Feladat: 16. oldal Adatbázis-szerverek - összefoglaló

17 Hozza létre a többi táblát, kapcsolatokkal, egyszerű megszorításokkal! Készítsen diagramot, amely az összes táblát tartalmazza és ellenőrizze a kapcsolatokat! DML (adatmanipulációs nyelv) A valóság változásának követéséhez szükséges, jól ismert három parancs tartozik a körbe. Az érdeklődők a nyelvi leírásban utána nézhetnek a specialitásoknak, ezek adott probléma megoldása esetén szebb megoldásokat eredményezhetnek. Arra azonban szükségünk lesz, hogy a végrehajtás módját kissé megvizsgáljuk. Mindhárom utasítást (insert, update, delete) a motor tranzakcióként (később részletezzük) hajtja végre, és e tranzakció során két logikai táblát hoz létre az előtti illetve az utána állapotnak megfelelően, melyek hivatkozhatóak az utasítás OUTPUT cikkelyében (l. BOL), valamint az érintett táblára alkalmazott trigger (később) végrehajtása során. A két tábla: INSERTED az utasítás által létrehozott új adattartalmú sorokat tartalmazza (delete esetén üres) DELETED az utasítás által megszűntetett adattartamú sorokat tartalmazza (insert esetén üres) INSERT (új sorok beillesztése) Új adatsor(ok) beillesztése az adott adattáblába. Az értékek felsorolásán kívül lehetőségünk van egy eredménytábla soraival történő feltöltésre is. Opcionálisan a végrehajtás eredményét tárolhatjuk másik 17. oldal Adatbázis-szerverek - összefoglaló

18 táblában (OUTPUT). Az OUTPUT kifejezéseiben hivatkozhatunk az INSERTED táblára is. INSERT [INTO] tábla_név [ ( oszlop, ) ] [ OUTPUT kif, [ INTO tábla_név ] ] { VALUES ( { DEFAULT NULL kif } [, n ]) [, n] <eredmény tábla> DEFAULT VALUES } Példa: insert.sql /* írjunk mintasorokat az előzőleg létrehozott táblákba */ USE vizsga INSERT INTO szak VALUES ('IKN','Informatikus közgazdász',6) INSERT INTO szak VALUES ('IKT','Informatikus közgazdász táv',6), ('MIN','Mûszaki informatikus',7), ('MIT','Mûszaki informatikus táv',7) INSERT INTO személy VALUES ('Ábel Ábel',' '), ('Ábel Ágota',' '), 18. oldal Adatbázis-szerverek - összefoglaló

19 ('Ábel Attila',' '), ('Ábel Benjamin',' ') /* az összes személyt vegyük fel távos műszakinak */ INSERT INTO hallgató (hkód,szak) SELECT szkód,'mit' FROM személy UPDATE (sorok módosítása) Adatok módosítása az adott adattáblában. Az oszlopok új értékeinek kifejezésében hivatkozhatunk a FROM által előállított eredménytábla oszlopaira. Opcionálisan a végrehajtás eredményét tárolhatjuk másik táblában (OUTPUT). Az OUTPUT kifejezéseiben hivatkozhatunk az INSERTED és a DELETED táblákra is. UPDATE tábla_név SET { oszlop = { kif DEFAULT NULL } } [, ] [ OUTPUT kif, [ INTO tábla_név ] ] [ FROM tábla_név, ] [ WHERE { <feltétel> } ] Példa: update.sql /* az összes első szemeszteres hallgatónkat tegyük át a következő (második) szemeszterbe */ USE vizsga 19. oldal Adatbázis-szerverek - összefoglaló

20 UPDATE hallgató SET akt_szem=akt_szem+1 WHERE akt_szem=1 DELETE (sorok törlése) Adatsor(ok) törlése az adott adattáblában. A törlendő sorok meghatározásánál hivatkozhatunk a FROM által előállított eredménytábla oszlopaira. Opcionálisan a végrehajtás eredményét tárolhatjuk másik táblában (OUTPUT). Az OUTPUT kifejezéseiben hivatkozhatunk a DELETED táblára is. DELETE tábla_név [ OUTPUT kif, [ INTO tábla_név ] ] [ FROM tábla_név, ] [ WHERE { <feltétel> } ] Feladat: Töltse fel megfelelő mintasorokkal a táblákat (Használja a vizuális felületet is)! DQL (adatlekérdező nyelv) Tulajdonképpen nem kellene külön foglalkoznunk vele, hiszen az Adatbázisok tárgy keretében mindenki alaposan elsajátította az ide tartozó egyetlen utasítás (SELECT) használatát. Az ott megismert szabvány nyújtotta lehetőségek elegendőek egy általános probléma megoldásához. Anyagunkban csupán még egyszer összefoglaljuk e lehetőségeket, röviden kitérve néhány újra. Ne feledjük, hogy ez a 20. oldal Adatbázis-szerverek - összefoglaló

21 (szinte) egyetlen lehetőségünk adatok, információk kinyerésére az adatbázisból, ezért biztos használata elengedhetetlen a fejlesztés során. SELECT (eredménytábla előállítása) Az adatbázisban tárolt adatok alapján egy új un. eredmény tábla létrehozása. Ez lehet csupán egy feldolgozás részeredménye, amelyre a feldolgozás során lehet szükségünk, de természetesen a fejlesztendő rendszertől elvárható hasznos információ is ilyen formában áll elő. [ WITH <common_table_expression>] SELECT <select_lista> [ INTO új_tábla ] [ FROM <tábla_forrás> ] [ WHERE <kiválasztási_feltétel> ] [ [ GROUP BY <csoportosítási_szempont> ] [ HAVING <kiválasztási_feltétel>] ] [ ORDER BY <sorrend_kif> [ ASC DESC ] ] Az egyetlen új szintaktikai egység a WITH cikkely. Segítségével olyan eredmény táblákat definiálhatunk, amelyekre a tényleges SELECTben mint adattáblákra hivatkozhatunk. Szerepe gyakorlatilag megegyezik a VIEW lehetőségeivel, ám e táblákra csak az adott utasításban hivatkozhatunk. Jelentősége abban áll, hogy rekurziót tudunk programozni a segítségével, ám ezzel jelen anyagunk nem foglalkozik (l. BOL). A WITH WITH <common_table_expression> [,...n ] ] <common_table_expression>::= 21. oldal Adatbázis-szerverek - összefoglaló

22 tábla_név [ (oszlop_név [,...n ] ) ] AS ( <eredmény_tábla_definíció> ) Példa: cte1.sql /* példaként szerepelhet a megszámolt elemek legnagyobbikának kiválasztása, amely az egyes szabvány szerint két lépés. Mely szakra járnak legtöbben? */ USE vizsga WITH szakként (szak,fõ) AS (SELECT szak,count(*) FROM hallgató GROUP BY szak) SELECT szak FROM szakként WHERE fõ=(select MAX(fõ) FROM szakként) A SELECT cikkely újdonsága, hogy önmagában is állhat, ez esetben értékadásként szerepel. Használható benne a TOP opció, amely az eredménytábla sorainak korlátozása. SELECT [ ALL DISTINCT ] [ TOP ( kif ) [ PERCENT ] [ WITH TIES ] ] <select_list> <select_list> ::= { [tábla_név.]* <SQL_kif> [ [ AS ] oszlop_alias ] } column_alias = expression } [,...n ] 22. oldal Adatbázis-szerverek - összefoglaló

23 Az INTO cikkely szerepe már ismert, az eredménytáblát egy új adattáblában helyezi el. A FROM cikkely újdonsága a táblák illesztésének (kapcsolat) lehetősége (JOIN). Ennek előnye, hogy a feltételek nem terhelik a későbbi WHERE cikkelyt. A különféle illesztések (CROSS, INNER, OUTER) közül csak a leggyakrabban használt, ezért az alapértelmezett INNERt fogjuk használni. [ FROM { < forrás_tábla> } [,...n ] ] < forrás_tábla > ::= { tábla _név [ [ AS ] tábla _alias ] <illesztett_tábla> } < illesztett_tábla > ::= [ ( ] < forrás_tábla > JOIN < forrás_tábla > ON <kapcsolat_feltétel> [ ) ] Példa: join1.sql /* A személy, hallgató és szak táblák hagyományos illesztése */ USE vizsga SELECT név,szak.szak FROM szak,hallgató,személy WHERE hkód=személy.szkód AND hallgató.szak=szak.szkód -- ugyanez a JOIN lehetõségével SELECT név,szak.szak FROM személy JOIN hallgató ON hkód=szkód JOIN szak ON hallgató.szak=szak.szkód 23. oldal Adatbázis-szerverek - összefoglaló

24 A többi cikkely (WHERE, GROUP, HAVING, ORDER ) lehetőségeivel nem foglalkozunk. Tökéletesen elegendő számunkra a szabvány szerint jól begyakorolt technika. Feladat: Készítsen lekérdezéseket, amelyek szükségesek lehetnek az üzleti logika megvalósítása során! Vezérlőszerkezetek (procedurális nyelv) Ha az eddig tárgyalt utasításokat nem önmagukban, szingli parancsként szeretnénk végrehajtatni, hanem utasítások sorával tudjuk csak megfogalmazni a szükséges feladatot a nyelv procedurális egységeit kell használnunk. Erre különböző lehetőségeink vannak: Köteg (batch) T-SQL utasítások csoportja, amelyet a szerver egységként hajt végre Tárolt eljárás (stored procedure) T-SQL utasítások csoportja, amely az adatbázis része. A szerver előfordítja. Lehetőséget ad paraméterezésre, és eredményt produkál a kliens felé. Trigger Speciális tárolt eljárás, amely események bekövetkeztével hajtódik végre. Szkript T-SQL utasítások csoportja, amelyek egy fájlban tárolódnak. Kötegekből áll. A T-SQL ezek megvalósításához a következő elemeket biztosítja: 24. oldal Adatbázis-szerverek - összefoglaló

25 Válozók - A procedurális környezetben megszokott programelemek új típusokkal kiegészítve. A nyelv csak lokális változókat kezel. Vezérlőelemek A procedurális környezetben megszokott programelemek (szekvencia, szelekció, iteráció). Hibakezelés Egyszerűbb végrehajtási hibák kezelésére; ebben a fejezetben az ehhez rendelkezésre álló utasításokat veszszük sorra. DECLARE (lokális változó deklarálása) A T-SQL csak deklarált típusos lokális változókat kezel, melyeknek hatóköre az aktuális procedurális egység (köteg, függvény, eljárás, trigger). Értékadásban és SQL kifejezésben hivatkozhatunk rájuk. Deklarálhatjuk kezdőértékkel, ha nem tesszük, NULL értéket vesz fel. Lehetőség van tábla változó létrehozására is, ezen az érvényességi körben táblaműveleteket hajthatunk végre. DECLARE [AS] típus [ = value ] } [,...n] változó_név [AS] <tábla_definíció> } < tábla_definíció > ::= TABLE ( { <oszlop_definíció> [<tábla_megszorítás>} [,... ] ) SET (skalárváltozó-értékadás) Skaláris változónak tudunk vele típusának megfelelő értéket adni. A kifejezés lehet egyértékű belső SELECT is. = kifejezés Használható helyette a SELECT utasítás is (kevésbé ajánlott): 25. oldal Adatbázis-szerverek - összefoglaló

26 SELECT = kifejezés } [,...n ] Példa: változó1.sql /* deklarálunk, értéket adunk */ USE vizsga INT CHAR(2) ='FÕ' COUNT(*) FROM hallgató) BEGIN... END (szekvencia) T-SQL utasítások logikai egységbe (utasításblokk) foglalása. Szükséges, amikor szintaktikusan csupán egyetlen utasításnak van helye. Az utasításblokkok egymásba ágyazhatóak. BEGIN { sql_utasítás utasítás_blokk } END IF... ELSE (szelekció) A szokványos egy illetve kétágú szelekció. Amennyiben valamelyik ág több utasítást tartalmaz utasításblokként (BEGIN... END) kell megadni. Ha a feltétel SELECT-et tartalmaz, azt zárójelezni kell (belső select). IF logikai_kif 26. oldal Adatbázis-szerverek - összefoglaló

27 { sql_utasítás utasítás_blokk } [ ELSE { sql_utasítás utasítás_blokk }] WHILE (iteráció) Az igazi (elöl tesztelős) ciklus. Sajnos tartalmazza a két fölösleges vezérlést (elhagyás, ismétlés). Amennyiben utasítást tartalmaz, utasításblokként (BEGIN... END) kell megadni. WHILE logikai_kif { sql_utasítás utasítás_blokk BREAK CONTINUE } TRY... CATCH (egyszerű hibacsapdázás) Amennyiben a TRY ágban végrehajtási hiba (pl. megszorítás sértés, program okozta megszakítás,...) lép fel, úgy a CATCH ág hajtódik végre. Ha nem volt hiba, akkor a CATCH nem kerül végrehajtásra. BEGIN TRY { sql_utasítás utasítás_blokk } END TRY BEGIN CATCH { sql_utasítás utasítás_blokk } END CATCH RAISERROR függvény (hiba generálás) Tetszőleges szövegű felhasználói hibaüzenet generálása és hibafeldolgozási tevékenység kezdeményezése. 27. oldal Adatbázis-szerverek - összefoglaló

28 Különböző szintű (0-10 üzenet, hiba) hibaesemény előidézése, egy státuszértékkel (0-255) kiegészítve. Tízes szint fölött kiváltja a CATCH feltételt. RAISERROR ( { } {,szint,státusz } ) PRINT (szöveges üzenet a kliensnek) Leginkább csak tesztelési lehetőség. Szöveges üzenet. szöveg_kif Példa: vezérlőszerk.sql /* egy primitív péda a vezérlõ szerkezetek használatára */ INT,@o INT BEGIN BEGIN BREAK END END 28. oldal Adatbázis-szerverek - összefoglaló

29 Feladat: Készítsen szkripteket, amelyekben az előző feladatban megvalósított lekérdezések feltételében (WHERE) lokális változókra hivatkozik! Adatbázisban tárolt programelemek Procedurális program egységei. Végrehajtásukról az adatbázis-motor gondoskodik. Alkalmazásuk szükséges az üzleti logika programozásához, valamint az adatbiztonság és adatintegrációs épség biztosításához. Típusai: Függvény Adatbázis-szintű programelem; az egyéb környezetekben megszokott feladattal. Paraméterezhető, és visszatérési értéket produkál. Hivatkozása T-SQL-kifejezésben lehetséges. A formális aktuális paraméterek számának meg kell egyeznie. o Beépített a definiált T-SQL része o Felhasználói a felhasználó által definiált, nem tartalmazhat DDL és DML utasításokat Tárolt eljárás - Adatbázis szintű programelem. A függvény kiterjesztése. Hivatkozása T-SQL utasítással történik. o Rendszerbeli a definiált T-SQL része o Felhasználói a felhasználó által definiált, tartalmazhat (bizonyos) DDL és DML utasításokat Trigger (számunkra) adattábla-szintű programelem. Eljárásként működik, de hivatkozását adatbázisesemény váltja ki. 29. oldal Adatbázis-szerverek - összefoglaló

30 Beépített függvények A legkülönfélébb általános igényeket kielégítő gyűjtemény. Ide tartoznak a jól ismert aggregáló függvények, konverziós és adattípus függvények, metaadat-függvények, s így tovább... Tanulmányozásuk elengedhetetlen a fejlesztés során. (Megismerésükhöz javasolt az SSMS-ben a Databases->vizsga->Programmability->Functions- >System Functions mappa alapos vizsgálata a BOL-nal kiegészítve.) Hivatkozásuk sajnos eléggé zavaros: lehet hagyományos (SUBSTRING(...)), változó-szerű (@@ERROR), utasítás-szerű (CASE). Felhasználói függvények A felhasználó által definiált objektum. A DDL-ben megismert három utasítással (CREATE, ALTER, DROP) tartható karban, amelyeket általában szkriptként adunk meg. Tetszőleges T- SQL utasításokat tartalmazhat, kivéve az adattáblákra vonatkozó DDL és DML utasításokat. CREATE FUNCTION (felhasználóifüggvény-definiálás) Két típust különböztetünk meg, skalár- és tábla-értékűt a függvény értéke szerint. A tábla-értékű újabb két kategóriába sorolható: ún. inline (egysoros), illetve több-utasításos. Ennek megfelelően kissé változik a definíciós szintaktika. Skalár-értékű függvény (Mondhatjuk, hogy a hagyományos forma): CREATE FUNCTION függvény_név ( [ [ AS ] adat_típus 30. oldal Adatbázis-szerverek - összefoglaló

31 [ = default ] } [,...n ] ] ) RETURNS return_adat_típus BEGIN T-SQL_utasítás [ n] RETURN skalár_kifejezés END Példa: skalár_fv.sql /* technikailag célszerû az ALTER helyett is CREATE használata, mivel a szkript így mindíg az utolsó verziót tartalmazza. A megoldáshoz használjuk az "OBJECT_ID(objektum_név)" rendszer függvényt, amely az objektum azonosítóját eredményezi vagy üres értéket, ha az adott nevû objektum nem létezik */ USE vizsga IF OBJECT_ID ('szakon_hallgató') IS NOT NULL DROP FUNCTION szakon_hallgató /* célszerû a függvényrõl néhány információt a szkriptben elhelyezni */ -- adott szakon, [évfolyamon] nyilvántartott hallgatók száma -- szak : a szak kódja (kötelezõ) -- szemeszter : a szemeszter értéke, DEFAULT esetben összes CREATE FUNCTION szakon_hallgató( 31. oldal Adatbázis-szerverek - összefoglaló

32 @szak TINYINT =NULL) RETURNS INT BEGIN INT IS NULL COUNT(*) FROM hallgató WHERE ELSE COUNT(*) FROM hallgató WHERE AND END /* célszerû a tesztelést tartalmazó sorokat kommentként elhelyezni a szkriptbe */ --SELECT dbo.szakon_hallgató('mit',1) --SELECT dbo.szakon_hallgató('mit',default) In-line tábla-értékű függvény (Nem más, mint egy paraméterezett nézet): CREATE FUNCTION függvény_name ( [ [ AS ] adat_típus [ = default ] } [,...n ] ] ) RETURNS TABLE 32. oldal Adatbázis-szerverek - összefoglaló

33 RETURN [ ( ] select_utasítás [ ) ] Példa: in-line_fv.sql USE vizsga IF OBJECT_ID ('szakos_hallgatók') IS NOT NULL DROP FUNCTION szakos_hallgatók -- adott szakon és szemeszteren nyilvántartott hallgatók -- szak : a szak kódja -- szemeszter : a szemeszter értéke CREATE FUNCTION szakos_hallgatók(@szak TINYINT) RETURNS TABLE RETURN (SELECT hkód,név FROM hallgató JOIN személy ON hkód=szkód WHERE szak=@szak AND akt_szem=@szemeszter) --SELECT * FROM dbo.szakos_hallgatók('mit',1) --SELECT * FROM dbo.szakos_hallgatók('mit',2) Multistatement táblaértékű függvény (A lokális táblá(k)ra használhatók a DML-utasítások): CREATE FUNCTION függvény_name ( [ [ AS ] adat_típus [ = default ] } [,...n ] 33. oldal Adatbázis-szerverek - összefoglaló

34 ] ) TABLE <tábla_definíció> BEGIN T-SQL_utasítás [ n] RETURN END Példa: tábla_fv.sql /* a függvény alkalmazásához természetesen szükség van az összes táblára, megfelelõ mintasorokkal (ezt soha sem tudjuk megúszni!) */ USE vizsga IF OBJECT_ID ('nincs_jegye') IS NOT NULL DROP FUNCTION nincs_jegye -- adott hallgatónak(hkód) mely tárgyakból nincs még jegye -- h : hallgató kódja -- eredmény : tárgykódokat tartalmazó tábla CREATE FUNCTION nincs_jegye(@h INT) TABLE (t CHAR(4)) AS BEGIN CHAR(3) TINYINT 34. oldal Adatbázis-szerverek - összefoglaló

35 END -- SET helyett most célszerûbb a SELECT értékadásként FROM hallgató WHERE hkód=@h SELECT t.tárgy FROM jelentkezés j JOIN vizsga v ON j.vizsga=v.vizsga AND j.hkód=@h AND jegy>1 RIGHT JOIN tematika t ON t.tárgy=v.tárgy AND t.szak=v.szak AND t.szak=@szak WHERE t.szak=@szak AND AND j.hkód IS NULL RETURN --SELECT * FROM dbo.nincs_jegye(3) -- --változtassuk a környezetet --UPDATE hallgató SET akt_szem=5 WHERE hkód= változnia kell az eredménynek --SELECT * FROM dbo.nincs_jegye(3) Ezzel a technikával már sokkal komolyabb tábla megszorításokat (CHECK) tudunk definiálni, hiszen a logikai kifejezésben hivatkozhatunk felhasználói függvényekre is. Például a vizsgára jelentkezők száma nem haladhatja meg a maximális létszámot. 35. oldal Adatbázis-szerverek - összefoglaló

36 Példa: függvény_check1.sql USE vizsga -- adott vizsgára jelentkezett hallgatók száma -- v : vizsga azonosító -- eredmény : jelentezettek száma CREATE FUNCTION jelentkezett (@v INT) RETURNS SMALLINT BEGIN RETURN (SELECT COUNT(*) FROM jelentkezés WHERE vizsga=@v) END ALTER TABLE vizsga ADD CONSTRAINT CK_max_fõ CHECK (max_fõ>=dbo.jelentkezett(vizsga)) Teszteljük. Ne feledjük, hogy ez a megszorítás csak a max_fő oszlop változtatásánál fog érvénybe lépni. A hivatkozási épség megőrzéséhez az új jelentkezés üzleti logika megfogalmazásánál is lesz teendőnk. Másik példánkban a tematika megadásánál ellenőrizzük, hogy megfelelő előzmény tárgyat adtunk-e meg. Példa: függvény_check2.sql USE vizsga IF OBJECT_ID ('jó_elõzmény') IS NOT NULL DROP FUNCTION jó_elõzmény 36. oldal Adatbázis-szerverek - összefoglaló

37 -- létezõ elõzmény tárgy keresése -- szak : az új tematika szak -- elõzmény : az új tematika elõzmény tárgya -- szemeszter : az új tematika szemesztere -- eredmény : 1 megfelelõ, 0 nem CREATE FUNCTION jó_elõzmény (@szak CHAR(3),@elõzmény CHAR(4),@szemeszter TINYINT) RETURNS BIT BEGIN BIT =1 IS NOT NULL IF EXISTS (SELECT * FROM tematika WHERE szak=@szak AND tárgy=@elõzmény AND szemeszter<=@szemeszter) ELSE END ALTER TABLE tematika ADD CONSTRAINT CK_tematika 37. oldal Adatbázis-szerverek - összefoglaló

38 CHECK (dbo.jó_elõzmény(szak,elõzmény,szemeszter)=1) -- teszteljük! Ne feledjük, hogy ez sem tökéletes megoldás, hiszen a rekurzív problémákat nem kezeli. Feladat: Tökéletesítse a példákban szereplő függvényeket, találjon ki újakat, amelyek hasznosak lehetnek az üzleti logika megvalósítása, és az adatintegritási feltételek megőrzése során! A rendszer tárolt eljárásai A legkülönfélébb speciális rendszerinformációk előállítását biztosítják. A felhasználói rendszer fejlesztésében (a mi szintünkön) nincs szükség rájuk, ezért jelen anyag nem foglalkozik velük (Kíváncsi érdeklődőknek javasolt az SSMS-ben a Databases->vizsga->Programmability->Stored Procedures->System Stored Procedures mappa vizsgálata, a BOL-nal kiegészítve.) Felhasználói tárolt eljárások A kliens-szerver-technika végrehajtási egységei. Az adatrétegbe integrált üzleti logika megvalósításának eszköze. Az egyéb fejlesztői környezetekben megszokott programozási egység. Paraméterezhető, paraméterei között szerepelhet output paraméter is. A kliens számára üzeneteket továbbíthat. 38. oldal Adatbázis-szerverek - összefoglaló

39 Tartalmazhatja a legtöbb T-SQL utasítást, beleértve a legtöbb DDLés a DML-utasításokat is. Lehetőség van újabb eljárás meghívására (32 szint), valamint egész típusú visszatérési kódot produkál (RETURN). Végrehajtása önálló utasítás (EXECUTE) segítségével történik. A formális aktuális paramétercsere lehet név szerinti és sorszám szerinti is. Utóbbi esetben a paraméterek számának meg kell egyeznie. Az eljárásokban definiált ideiglenes táblák láthatósága és élettartama a létrehozó eljárásra korlátozódik. CREATE PROCEDURE (tárolt eljárás definiálása) CREATE PROCEDURE procedúra_név [ adat_típus } [ = default ] [OUTPUT ] ] [,...n ] AS { T-SQL_utasítás [;][...n ] } EXECUTE (eljárás végrehajtása) { EXEC EXECUTE } { = ] { eljárás_név } [ = ] { [ OUTPUT ] [ DEFAULT ] } ] [,...n ] 39. oldal Adatbázis-szerverek - összefoglaló

40 Példa: proc1.sql /* rendszerünkben az új hallgató felvétele két táblában is tevékenységet igényel. Új sor a személy-ben és a hallgatóban. Természetesen az üzleti logika alapján ez egyetlen tevékenység. A megoldást a tárolt eljárás jelenti */ USE vizsga IF OBJECT_ID ('új_hallgató') IS NOT NULL DROP PROC új_hallgató CREATE PROCEDURE INT OUTPUT AS int =0 --visszatérési érték INSERT személy VALUES(@név,@szül) /* IDENT_CURRENT rendszerfüggvény adott tábla aktuális azonosítóját addja értékül */ INSERT hallgató (hkód,szak) VALUES(@újkód,@szak) 40. oldal Adatbázis-szerverek - összefoglaló

41 /* INT INT 'Új OUTPUT SELECT */ Ugyanez primitív hibakezeléssel. A visszatérési kódot használhatjuk hibajelzésre. TRY CATCH-szerkezet segítségével csapdázzuk a hibaesetet, rendszerfüggvény adja az utolsó utasítás által kiváltott hiba kódját. (Hibaüzenetek a sys.messages rendszernézetben.) Példa: proc_try.sql /* rendszerünkben az új hallgató felvétele két táblában is tevékenységet igényel. Új sor a személy-ben és a hallgatóban. Természetesen az üzleti logika alapján ez egyetlen tevékenység. A megoldást a tárolt eljárás jelenti. */ USE vizsga IF OBJECT_ID ('új_hallgató') IS NOT NULL DROP PROC új_hallgató CREATE PROCEDURE új_hallgató 41. oldal Adatbázis-szerverek - összefoglaló

42 INT OUTPUT int =0 --hibátlan működés BEGIN TRY INSERT személy INSERT hallgató (hkód,szak) END TRY BEGIN CATCH SET END CATCH /* INT INT 'Új OUTPUT AS AS hibakód */ Feladat: 42. oldal Adatbázis-szerverek - összefoglaló

43 Tökéletesítse a példákban szereplő eljárásokat, próbálkozzon egyszerűbb üzleti logikai elemek (funkciók) megvalósításával! (Gondoljon arra, mire lesz szüksége a felhasználói felületen.) DML-triggerek Speciális tárolt eljárások tábla-hatókörben. Nem paraméterezhetőek, végrehajtásuk automatikusan DML-utasítások hatására történik. Hasznosak az üzleti logika programozásában, valamint a hivatkozási épség biztosításában. Végrehajtásuk során az aktuális adatmódosítás előtti (DELETED tábla) és utáni (INSERTED tábla) értékekre hivatkozhatunk. A végrehajtott módosítások helyett (INSTEAD OF), vagy után (AFTER) hajtódnak végre. Mivel a DML-utasítások tranzakcióként hajtódnak végre, lehetőséget biztosítanak akár a tranzakció visszagörgetésére is. CREATE TRIGGER (DML trigger definiálása) CREATE TRIGGER trigger_név ON tábla_név { AFTER INSTEAD OF } { [ INSERT ] [, ] [ UPDATE ] [, ] [ DELETE ] } AS { T-SQL_utasítás [ ; ] [,...n ] } Tipikus alkalmazása lehet, amikor a default értéket nem tudjuk konstansként megadni. Rendszerünkben például a vizsgára való jelentkezésnél a hallgató aktuális szemeszterét. Példa: trigger_default.sql USE vizsga IF OBJECT_ID ('új_jelentkezés') IS NOT NULL DROP TRIGGER új_jelentkezés 43. oldal Adatbázis-szerverek - összefoglaló

44 /* DEFAULT-al nem kezelhető, ezért az aktuális szemesztert TRIGGERREL adjuk meg */ CREATE TRIGGER új_jelentkezés ON jelentkezés AFTER INSERT AS UPDATE jelentkezés SET szem=(select akt_szem FROM hallgató WHERE hallgató.hkód=j.hkód) FROM inserted i JOIN jelentkezés j ON j.hkód=i.hkód AND j.vizsga=i.vizsga /* -- teszt: -- egyetlen INSERT INSERT jelentkezés (hkód,vizsga) VALUES(1,2) SELECT * FROM hallgató WHERE hkód=1 SELECT * from jelentkezés WHERE hkód=1 AND vizsga=2 -- több INSERT 44. oldal Adatbázis-szerverek - összefoglaló

45 INSERT jelentkezés (hkód,vizsga) SELECT hkód,2 FROM hallgató WHERE szak='min' AND akt_szem=1 SELECT * from jelentkezés WHERE vizsga=2 */ Másik tipikus alkalmazás a nalpózás. Tároljuk, ki, mikor mit változtatott az adattábla tartalmán. Példaalkalmazásunkban ilyen a jelentkezés (jegy) változtatása. Példa: trigger_napló.sql USE vizsga IF OBJECT_ID ('jelentkezés_napló') IS NOT NULL DROP TRIGGER jelentkezés_napló -- "naplózzuk" a jelentkezésekben a jegy változását -- kell egy napló tábla: IF OBJECT_ID ('vizsga_napló') IS NOT NULL DROP TABLE vizsga_napló CREATE TABLE vizsga_napló( hkód INT NULL, vizsga INT NULL, régi TINYINT NULL, 45. oldal Adatbázis-szerverek - összefoglaló

46 új TINYINT NULL, idő DATETIME NOT NULL CONSTRAINT DF_vizsga_napló_idő DEFAULT (GETDATE()), -- aktuális idő user_név NVARCHAR(50) NOT NULL CONSTRAINT DF_vizsga_napló_user_név DEFAULT (SUSER_NAME()), -- aktuális user azon INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_vizsga_napló PRIMARY KEY ) -- és kell egy TRIGGER CREATE TRIGGER jelentkezés_napló ON jelentkezés AFTER INSERT,DELETE,UPDATE AS tinyint IF EXISTS (SELECT * FROM inserted) FROM inserted i IF EXISTS (SELECT * FROM FROM deleted d IS NULL IS NULL 46. oldal Adatbázis-szerverek - összefoglaló

47 Feladat: INSERT vizsga_napló (hkód,vizsga,régi,új) VALUES A példában szereplő trigger csak egyetlen műveletre működik, csoportos jelentkezés, törlés esetén nem működik. JAVÍTSA!!! Tranzakciókezelés Előfordul (igen gyakran), hogy bizonyos utasításokat egységként kell végrehajtani (vagy az összeset, vagy egyiket sem). A megoldást a tranzakciókezelés nyújtja. A tranzakció során az adatmódosítások tulajdonképpen logikai szinten hajtódnak végre. A fizikai megvalósítás a tranzakció elfogadásakor történik. A tranzakciókezelés gondoskodik az erőforrások kezeléséről. Ne feledjük, hogy minden DML-utasítás tranzakcióként hajtódik végre (implicit tranzakció). A fejlesztő által indított tranzakciókat nevezzük explicitnek. A tranzakciók egymásba ágyazhatóak, a szintek követéséhez a rendszer változót használja. BEGIN TRASACTION (tranzakció indítása) BEGIN { TRAN TRANSACTION } Új tranzakciós szint inkrementálódik. DML-utasítás hatására ugyanez történik (implicit tranzakció). 47. oldal Adatbázis-szerverek - összefoglaló

48 COMMIT TRANSACTION (tranzakció elfogadtatása) COMMIT { TRAN TRANSACTION } A tranzakciós szintet (@@TRANCOUNT) csökkenti. Amennyiben elérte a 0. szintet, az adatmódosítások fizikai szinten megtörténnek, a lekötött erőforrások felszabadulnak. Nullás szinten kiadott COMMIT hibát eredményez. ROLLBACK TRANSACTION (tranzakció visszagörgetése) Minden logikai adatmódosítást elenged a legfelsőbb tranzakciós szintig, fizikai módosítás nem értékét 0-ra állítja, az erőforrásokat felszabadítja. DML-triggerben kiadott ROLL- BACK hatása ugyanez. A ROLLBACK hatására hibaesemény nem következik be. Példa: sp_ujhallg_tr.sql /* az új hallgató eljárás korrekt hibakezeléssel */ USE vizsga IF OBJECT_ID ('új_hallgató') IS NOT NULL DROP PROC új_hallgató CREATE PROCEDURE INT OUTPUT 48. oldal Adatbázis-szerverek - összefoglaló

49 AS int BEGIN TRANSACTION BEGIN TRY INSERT személy INSERT hallgató (hkód,szak) COMMIT TRANSACTION END TRY BEGIN CATCH SET ROLLBACK TRANSACTION END CATCH --END -- teszt /* INT INT 'Új OUTPUT SELECT go 49. oldal Adatbázis-szerverek - összefoglaló

50 SELECT TOP 3 * FROM személy ORDER BY 1 DESC SELECT TOP 3 * FROM hallgató ORDER BY 1 DESC -- próbáljuk meg hibákkal! */ Másik példánkban megszorítás kezelésre használunk triggerben alkalmazott ROLLBACK-et. (Nagyon csúnya megoldás, de működik.) Példa: tranzakció_trigger.sql USE vizsga CREATE TRIGGER létszám ON jelentkezés AFTER insert AS IF (SELECT COUNT(*) FROM jelentkezés j JOIN inserted i ON j.vizsga=i.vizsga) >(SELECT max_fõ FROM vizsga v JOIN inserted i ON v.vizsga=i.vizsga) ROLLBACK TRANSACTION Feladat: Próbálgassa a lehetőségeket mind az adatmodell mind pedig az üzleti modell megvalósításhoz szükséges elemekként. Készítse el a vizsga feladatok megoldásait. 50. oldal Adatbázis-szerverek - összefoglaló

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

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY / MONEY 8

Részletesebben

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE TINIINT 1 byte 12 SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY

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

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

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

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

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

Vizuális programozás gyakorlat

Vizuális programozás gyakorlat Vizuális programozás gyakorlat A gyakorlat célja az entitás modell készítésének és az MS SQLEXPRESS használatának gyakorlása. A gyakorlat során egy könyvtári szoftver adatmodelljét tervezzük meg, valamint

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

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

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

Tranzakciókezelés PL/SQL-ben

Tranzakciókezelés PL/SQL-ben Tranzakciókezelés PL/SQL-ben ACID tulajdonságok: Tranzakció Atomosság, Konzisztencia, Izoláció, Tartósság A tranzakció állhat: - Több DML utasításból - Egy DDL utasításból A tranzakció kezdete az első

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

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

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

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

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ázisok elmélete 10. előadás

Adatbázisok elmélete 10. előadás Adatbázisok elmélete 10. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2004 ADATBÁZISOK ELMÉLETE

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

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

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

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

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

Adatbázisok elmélete 9. előadás

Adatbázisok elmélete 9. előadás Adatbázisok elmélete 9. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE

Részletesebben

Adatbázisok elmélete 9. előadás

Adatbázisok elmélete 9. előadás Adatbázisok elmélete 9. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE

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

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

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I 1 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

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

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

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT ADATBÁZISOK 9-10. gyakorlat: SQL 2. rész SELECT SELECT utasítás általános alakja SELECT [DISTINCT] oszloplista FROM táblanévlista [WHERE feltétel] [GROUP BY oszloplista [HAVING feltétel] ] [ORDER BY oszloplista];

Részletesebben

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák A SELECT UTASÍTÁS ÁLTALÁNOS ALAKJA (ISM.) SELECT [DISTINCT] megjelenítendő oszlopok FROM táblá(k direkt szorzata) [WHERE feltétel]

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

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

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

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

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. RDBMS alapok: miből áll az SQL Server adatbázis? 1

1. RDBMS alapok: miből áll az SQL Server adatbázis? 1 Köszönetnyilvánítás Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibaigazító p2p.wrox.com xix xxi xxii

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

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

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

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

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

Adatbázis-kezelés, információs-rendszerek

Adatbázis-kezelés, információs-rendszerek Adatbázis-kezelés, információs-rendszerek 3. Ea: Eskúel (2011) Structured Query Language v: 2011.09.05 Szűcs Miklós - ME, ÁIT. 1.o Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítás DCL utasítások

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

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

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) ); Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) ); CREATE TABLE `dihunor`.`csapat` ( `ID` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'A csapat azonositoja',

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

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áziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet 1 2 Adatbáziskezelő-szerver Általában dedikált szerver Optimalizált háttértár konfiguráció Csak OS + adatbázis-kezelő szoftver Teljes memória az adatbázisoké Fő funkciók: Adatok rendezett tárolása a háttértárolón

Részletesebben

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS 2.ELŐADÁS A VB programozási nyelv Az Excel programozása 2 A VB programozási nyelv Adattípusok Adatok kezelése Vezérlőszerkezetek Adattípusok és műveletek Egész adattípusok

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS Lénárt Balázs tanársegéd TANTERV, SZOFTVER, IRODALOM Hét Dátum Előadó Előadások Időpont: szerda 8:30-10:00, helye: LFSZÁMG Dátum Gyakvezető 1. 9. 11. Tokodi Adatbázis

Részletesebben

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal. Adatbázis létrehozása Adatleíró műveletek CREATE DATABASE "tan1" WITH ENCODING= LATIN2 ; vagy parancssorból a terminál alatt $ createdb tan1 E=latin2 Kapcsolódás az adatbázishoz $ psql tan1 Adattábla létrehozása

Részletesebben

Haladó DBMS ismeretek 1

Haladó DBMS ismeretek 1 Haladó DBMS ismeretek 1 Hasznos információk A tantárgy weboldala: it.inf.unideb.hu/honlap/halado_oracle1 Oracle Junior képzés Gyakorlatok és a neptun Gyakorlat követelmények Ajánlott irodalom Juhász István

Részletesebben

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére SQL PÉLDATÁR készült a PTE TTK Iskolai informatika III. kurzus teljesítésére PTE TTK Czimmermann Gergely MA matematika informatika tanár szakos hallgató 2017 Tartalomjegyzék 1. Adatleíró műveletek... 3

Részletesebben

Készítette: Szabóné Nacsa Rozália

Készítette: Szabóné Nacsa Rozália Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu 1 Structured Query Language (Struktúrált lekérdező nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány 2 DIAKOK dkód vnév knév 1001 Kiss János

Részletesebben

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN B IT v: 2016.02.10 MAN SQL felületek Hatékony: SQL parancsok kiadására Eredmények megtekintésére Nehézkes: Nagyobb volumenű, rutintevékenységek

Részletesebben

A könyv tartalomjegyzéke

A könyv tartalomjegyzéke A könyv tartalomjegyzéke Elıszó Bevezetés Adatbázis-kezelı rendszerek Adatmodellezés Alapfogalmak Egyedhalmaz, egyed Kapcsolat, kapcsolat-elıfordulás, kapcsolat típusa Tulajdonság, tulajdonságérték, értékhalmaz

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

Adatbázisok* tulajdonságai

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

Részletesebben

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ Lénárt Balázs tanársegéd TANTERV Hét Dátum Előadó Előadások Időpont: szerda 8:30-10:00, helye: LFSZÁMG Dátum Gyakvezető 1. 9. 11. Tokodi Adatbázis kezelés

Részletesebben

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán Adatbázis rendszerek Molnár Bence Szerkesztette: Koppányi Zoltán A mai órán A mai órán SQL (és ami mögötte van) Mi lesz a ZH-ban? SQL Történet 1970-es évek eleje IBM SEQUEL (Structured English QUery Languge)

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

LBRA6i integrált rendszer

LBRA6i integrált rendszer LBRA6i integrált rendszer LIBRA 6i logolás és a log megtekintése Készítette: Libra Szoftver Zrt. Létrehozás dátuma: 2005.12.15. Utolsó módosítás: 2014.10.30. Referencia szám: LIBRA6i_UZEM_V_1.5 Verzió:

Részletesebben

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

Adatbázis Rendszerek II. 2. Gyakorló környezet Adatbázis Rendszerek II. 2. Gyakorló környezet 37/1 B IT v: 2017.02.11 MAN Gyakorló környezet Géptermek 37/2 Jelszó váltás 1 2 3 4 37/3 Gyakorló környezet II. apex.oracle.com/en/ 37/4 A regisztrációs folyamat

Részletesebben

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei 1. Mi az elsődleges következménye a gyenge logikai redundanciának? inkonzisztencia veszélye felesleges tárfoglalás feltételes függés 2. Az olyan tulajdonság az egyeden belül, amelynek bármely előfordulása

Részletesebben

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk. OO PDO PDO VS MYSQLi VS MYSQL ================================================================================ A PHP mysql metódusai elavultak, helyette lehet hazsnálni a MYSQLi metódusokat, amelyek szinte

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

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

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

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

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 04. 08. 10. Előadás Ami kimearad múlthéten Ha már megvan a KeyListener vagy MouseListener osztályunk a következõ módon tudjuk hozzárendelni egy JFrame vagy JPanel-hez: Ami

Részletesebben

Adatbázis rendszerek I Kovács LászlL szló Az SQL nyelv speciális elemei SQL szabványok Több bb-lépcs pcsős s folyamat a fejlődése alap DDL, DML, DQL, tranzakció,index 1986: ANSI SQL 1987: ISO SQL 1989:

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

SQLServer. DB Recovery modes

SQLServer. DB Recovery modes SQLServer 13. téma Szöveges állományok kezelése XML DB Recovery modes A DML műveletek hatékonyságának fontos eleme a naplózás módozata: - FULL Recovery mode: minden elemi művelet naplózódik költséges,

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

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán Adatbázis rendszerek Molnár Bence Szerkesztette: Koppányi Zoltán A mai órán A mai órán Házi tapasztalatok SQL (és ami mögötte van) Házi tapasztalatok Házi tapasztalatok Házik besorolása megtörtént Oktatói

Részletesebben

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat 2012.03.05.

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat 2012.03.05. 1 2 Adatbáziskezelı-szerver Általában dedikált szerver Optimalizált háttértár konfiguráció Csak OS + adatbázis-kezelő szoftver Teljes memória az adatbázisoké Fő funkciók: Adatok rendezett tárolása a háttértárolón

Részletesebben

PL/SQL (folytatás) Kurzorok, függvények, eljárások

PL/SQL (folytatás) Kurzorok, függvények, eljárások PL/SQL (folytatás) Kurzorok, függvények, eljárások Kurzorok Adattábla soronkénti feldolgozására szolgál A memóriában egy munkaterületen tárolódik a kurzorhoz tartozó tábla A kurzor az eredményhalmazban

Részletesebben

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL Témavezető: Dr. Bajalinov Erik Tudományos főmunkatárs Készítette: Juhász Gergely József Informatikatanári

Részletesebben

Elemi alkalmazások fejlesztése IV.

Elemi alkalmazások fejlesztése IV. Structured Query Language (Struktúrált lekérdez ı nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány né Nacsa Rozália nacsa@inf.elte.hu Fejlesztı : MySQLAB weboldal: www.mysql.com MySQL installálása.

Részletesebben

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

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK) Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK) http://sila.hajas.elte.hu/ 5.ea: SQL áttekintés SQL DML, DDL Az előadások Ullman-Widom: Adatbázisrendszerek Alapvetés alapján készültek, forrás: http://infolab.stanford.edu/~ullman/dscb.html

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

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

ADATBÁZIS RENDSZEREK I BEADANDÓ

ADATBÁZIS RENDSZEREK I BEADANDÓ ADATBÁZIS RENDSZEREK I BEADANDÓ n é v : H u zynets Erik n e p t un: BJ8BDJ t a n k ö r: G2-BGI G y a k. v ezető: Smid László G y a k. időpontja: Szerda 16-18 Feladat megfogalmazása Beadandóm főként számítógépes

Részletesebben

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos PASzSz Kilencedik témakör: Lazarus-Firebird Készítette: Dr. Kotsis Domokos Az SQLdb fülön IBConnection Kapcsolat A Data Access fülön Az SQLdb fülön... Select 1. Az SQLQuery lezárása. (Active := false,

Részletesebben

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet 26/1 B IT v: 2018.02.21 MAN Gyakorló környezet apex.oracle.com/en/ 26/2 A regisztrációs folyamat 26/3 26/4 26/5 26/6 26/7 26/8 26/9 26/10 26/11 Feladatok

Részletesebben

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN B IT v: 2016.03.04 MAN Passzív adatbázisok negatívumai Példa: VIR rendszer egyik adatbázis összegyűjti a termelési adatokat, egy másik erre épül

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

Adatbázisok 1 2013-14 tavaszi félév Vizsgatételsor

Adatbázisok 1 2013-14 tavaszi félév Vizsgatételsor Adatbázisok 1 2013-14 tavaszi félév Vizsgatételsor 1. Relációs adatmodell alapjai Adatmodell: Az adatmodell egy jelölésmód egy adatbázis adatszerkezetének a leírására, beleértve az adatra vonatkozó megszorításokat

Részletesebben

2012.05.11. Adatbázisok I A relációs algebra

2012.05.11. Adatbázisok I A relációs algebra Adatbázisok I A relációs algebra 2 3 4 1 Feladatok Tantárgy tkód cím kredit oktató Oktató oktkód név tanszék fizetés Feladatok 1. Az átlagos kreditpontszám: Γ avg(kredit) (Tantárgy) 2. A Matematika tanszéken

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

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

Adatbázis tartalmának módosítása

Adatbázis tartalmának módosítása Adatbázis tartalmának módosítása Tankönyv 6.5. Változtatások az adatbázisban A módosító utasítások nem adnak vissza eredményt, mint a lekérdezések, hanem az adatbázis tartalmát változtatják meg. 3-féle

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

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