Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Adatbáziskezelés 70-es évek elején jött létre a magas szintű programozási.

Hasonló előadás


Az előadások a következő témára: "TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Adatbáziskezelés 70-es évek elején jött létre a magas szintű programozási."— Előadás másolata:

1 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Adatbáziskezelés 70-es évek elején jött létre a magas szintű programozási nyelvek kialakulásával együtt, a számítógépek tömeges elterjedése következtében. Ma az un. Relációs adatmodelleket használjuk. Tehermentesíti a programozót, számos adatkezeléssel kapcsolatos feladat alól. Pl.: Konkurens hozzáférés biztosítása Jogosultság kezelés Adat védelmi szolgáltatások Hatékony fájlrendszer Redundancia mentesség biztosítása (tervezési módszer)

2 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Relációs adatmodell Az adatbázis táblákból áll A táblák sorai az összetartozó adatokat, oszlopai a tulajdonságokat határozzák meg

3 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL SQL szerverek Az utasítást szövegként kapja végrehajtja és amennyiben lekérdezés volt visszaküldi az eredménytáblát Telepítés SQLServer2005ExpressEdition SQLEXPR_ADV.EXE Jogosultság: Windows autentikáció (gépnév\IUSR_gépnév = aktuális user) Windows és SQL autentikáció

4 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL SQL nyelv DCL: Adatvezérlő nyelv Jogosultságkezelés, tárolt eljárások, triggerek, stb. DDL: Adatdefiníciós nyelv Adatbázis létrehozása, módosítása, törlése Táblák létrehozása, módosítása, törlése DML: Adatmódosító nyelv Adatok beírása, módosítása, törlése Lekérdezések

5 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Create database adatbázisnév; Adatbázis létrehozása Drop database adatbázisnév; Adatbázis törlése USE adatbázisnév; adatbázis kijelölése DDL: Adatdefiníciós nyelv Adatbázis létrehozása, törlése Táblák létrehozása Create table táblanév (oszlopnév adattípus(méret) paraméter, … oszlopnév adattípus(méret) paraméter); tábla létrehozása Pl.: CREATE TABLE dolgozo (D_azon int IDENTITY(1,1) NOT NULL primary key, D_nev nchar(40), D_szul smalldatetime, D_irsz decimal(4,0) DEFAULT(6800) CHECK (D_irsz >= 1000 and D_irsz <= 9999), D_varos nchar(25) DEFAULT(‘Hódmezővásárhely’), D_cim nchar(60));

6 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DDL: Adatdefiníciós nyelv Táblák módosítása, törlése Alter table táblanév művelet; Alter TABLE dolgozo ADD Tel1 nchar(40), Tel2 nchar(40) ; tábla módosítása Új oszlop hozzáadása Alter TABLE dolgozo DROP COLUMN Tel2; Alter TABLE dolgozo ALTER COLUMN Tel1 nchar(50); Oszlop törlése Oszlop módosítása Drop table táblanév; tábla törlése Pl.:

7 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DDL: Adatdefiníciós nyelv Index táblák létrehozása Index tipus: UNIQUE: egyedi index létrehozása. Nem lehet két rekord, melynél az indexben szereplő oszlopokban ugyanazok az adatok találhatók. CLUSTERED: fizikailag is rendezi a rekordokat. Ebből következik, hogy táblánként csak egy ilyen típusú index lehet. Ha ilyen indexet készítünk, akkor a tábla egészen addig zárolva lesz, amíg az indexelés véget nem ér. NONCLUSTERED: új indexfile keletkezik, ez az alapértelmezett. index létrehozása Oszlop módosítása Pl.: CREATE tipus INDEX indexnév ON táblanév (oszlopnév lista); CREATE INDEX nev ON dolgozo (D_Nev) paraméterek;

8 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DDL: Adatdefiníciós nyelv Index táblák létrehozása, törlése tábla módosítása Alter TABLE dolgozo DROP COLUMN Tel2; Alter TABLE dolgozo ALTER COLUMN Tel1 nchar(50); Oszlop törlése Oszlop módosítása Drop index táblanév.indexnév; index törlése Pl.: A WITH kulcsszó után különböző kapcsolókat adhatunk meg. A PADINDEX kapcsoló határozza meg, hogy egy index belső csomópontjai hány sort tartalmazzanak. Ez nem lehet kevesebb, mint két sor. A PADINDEX kapcsoló használatának a FILLFACTOR kapcsolóval együtt van értelme, mivel az abban megadott százalékarányt használja. A FILLFACTOR kapcsolóval állíthatjuk be, hogy az SQL Server mennyi helyet hagyjon fent az indexlapokon a még várható sorok számára. Azoknál a tábláknál növelheti a teljesítményt, amelyekbe gyakran szúrunk be adatokat. A FILFFACTOR utáni szám azt határozza meg, hogy az indexlapok hány százalékát kell szabadon hagyni. A kisebb érték azoknál a tábláknál használható, amelybe még biztosan több adat kerül. Olyan tábláknál, ahol az adatok nem változnak, a kapcsoló értékét akár 100-ra is állíthatjuk. Az IGNORE_DUP_KEY kapcsoló azt határozza meg, hogy az egyedi index készítésekor (UNIQUE) hogyan viselkedjen az SQL Server, amikor két olyan rekordot talál, melyeknek az indexelt mezőkben lévő adataik megegyeznek. Ha ezt a kapcsolót megadjuk, akkor nem kapunk hibaüzenetet. A SORTED_DATA használatával a CLUSTERED indexek esetén növelhetjük meg az index elkészítésének hatékonyságát. Akkor adjuk meg, ha biztosak vagyunk benne, hogy az indexelendő adatok már az indexnek megfelelő fizikai sorrendben vannak. Az SQL Server ellenőrizni fogja, hogy az adatok tényleg a helyes sorrendben vannak-e, és ha nem, akkor hibaüzenetet küld. Ellenkező esetben a kapcsoló használata jelentősen meggyorsítja az index elkészítését, hiszen az SQL Servernek nem kell rendeznie az adatokat, és ehhez kevesebb helyre is lesz szüksége. A SORTED_DATA_REORG kapcsoló a nem CLUSTERED típusú index esetén is fizikailag sorba rendezi az adatokat az indexnek megfelelően, és eközben csökkenti az adatok töredezettségét is, miáltal jelentősen javul a teljesítmény. Az IGNORE_DUP_ROW kapcsoló a nem egyedi indexszel (UNIQUE), de a CLUSTERED opcióval elkészített indexeknél használható. Ha az index elkészítése közben kettőződött adatokat talál az indexelt mezőkben, akkor törli a kettőzött értékeket, majd hibaüzenetet küld. A ROLLBACK-kel a törölt adatokat visszaállíthatjuk. Ha az ALLOW_DUP_ROW kapcsolót használjuk nem egyedi, CLUSTERED indexek esetén, a kettőzött adatok megengedettek lesznek. Értelemszerűen az IGNORE_DUP_ROW kapcsolóval nem használható együtt. Ha már volt előzőleg létrehozott CLUSTERED index, akkor a DROP_EXISTING kapcsolóval töröltethetjük, majd újra létrehozhatjuk azt. Az összes többi index is frissítésre kerül. A STATISTICS_NORECOMPUTE kapcsolóval kikapcsolhatjuk az elosztási statisztikák frissítését. Ezt a beállítást az UPDATE STATISTICS paranccsal vonhatjuk vissza. Az ON kulcsszó után megadhatjuk azt a fájlcsoportot, amelyet az index számára szeretnénk kijelölni. Ezzel a nem CLUSTERED indexek teljesítményét lehet javítani. CLUSTERED index esetén nem csak az index, hanem az összes adat is átkerül a megadott fájlcsoportba.

9 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatok beírása, módosítása Adatbeírás adatmódosítás Pl.: INSERT INTO táblanév (oszlopnév-litsa) VALUES (értlék-lista); INSERT INTO dolgozo (D_Nev,D_szul,D_Irsz,D_varos,D_cim) VALUES ('Kis Péter',' ',6800, 'Hódmezõvásárhely', 'Kaszap u 21 2/5'); UPDATE táblanév SET oszlop1= új érték, oszlop2 = új érték WHERE feltétel; UPDATE dolgozo SET D_irsz= 6600, D_varos = 'Szentes' WHERE D_Nev = 'Kis Péter'; Pl.:

10 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatok törlése Adattörlés Pl.: DELETE FROM táblanév WHERE (feltétel); DELETE FROM dolgozo WHERE D_Nev = 'Kis Péter';

11 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés SELECT...oszlop kiválasztása FROM...tábla-nevek megadása [WHERE...]sorok kiválasztása [GROUP BY... csoportosítás [HAVING...] ]csoportok közötti választás [ORDER BY...]E-tábla rendezése

12 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés

13 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL 1.Kik a partnereink? 2.Mely partnerek budapestiek? 3.Mely partnerek vidékiek?(partnernévre rendezve) 4.Kinek nincs telefonja? 5.Ki hatodik kerületi? 6.Mely “C” –vel kezdődő budapesti partnernek a telefonját nem tudjuk? 7.Ki az, aki gödöllői vagy egri és nevében van “i” ? 8.Milyen különböző nevű cikkeink vannak? 9.Mennyi a cikkek összértéke? 10.Mennyi az 5000 és 10000Ft közötti cikkek összértéke? 11.Hány cikkünk van és mennyibe kerül a legolcsóbb és a legdrágább cikk? 12.Hány különböző nevű cikkünk van? 13.Az egyes számlákon milyen cikkeket vettek? 14.A budapesti partnereink milyen cikkeket vettek? 15.Melyik cikkcsoportban van tíznél kevesebb cikk? 16.Mennyi az egyes számlák végösszege? 17.Mely számlákon szerepel kettőnél több cikk? 18.Melyik a legdrágább cikk? 19.Mely cikkekből nem vásároltak? 20.Mely partner vásárolt az átlagosnál többért a tárgyévben? 21.Hány partner neve szerepel az ábécé egyes betűivel? 22.Cikkcsoportonként melyik termék a legolcsóbb? 23.Emeljük meg a “COAT” cikkcsoportban levő cikkek árát 10%-kal! 24.Mentsük ki a budapesti partnereinket egy külön táblába! 25.Tegyük ki egri partnereinket is ebbe a táblába! 26.Mely partnerek fizettek “készpénz”-zel is és “átutalás”-sal is? 27.Mely partnerek fizettek csak 1-es fizetési móddal (készpénz)? 28.Mely partnerek vásároltak csupán egyszer? 29.Melyik partner nem vásárolt az utóbbi fél évben semmit?

14 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés SELECT PartNev FROM Partner; 1.Kik a partnereink? 2.Mely partnerek budapestiek? SELECT PartNev, Varos FROM Partner WHERE Varos = 'Budapest' 3.Mely partnerek vidékiek? (partnernévre rendezve) SELECT PartNev, Varos FROM Partner WHERE Varos <> 'Budapest' ORDER BY PartNev;

15 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés SELECT PartNev, Tel1, Tel2 FROM Partner WHERE (Tel1 IS NULL) AND (Tel2 IS NULL) 4.Kinek nincs telefonja? Az üres cella semmivel sem egyenlő és semmitől sem különböző, ezért speciális értékelést alkalmazunk: Tel1 is null igaz, ha Tel1 üres Tel1 is not null igaz, ha Tel1 nem üres

16 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés SELECT PartNev, Irszam FROM Partner WHERE Irszam LIKE '106%' 5.Ki hatodik kerületi? A feltételekben helyettesítő karaktereket is használhatunk, de csak a LIKE operátor alkalmazásával. % tetszőleges számú karaktert helyettesíthet _ egy karaktert helyettesíthet A helyettesítő karakterekből többet is elhelyezhetünk egy feltételben p.: Név LIKE’C%’ C betűvel kezdődő nevek Név LIKE’%C%’ C betűt tartalmazó nevek

17 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés SELECT DISTINCT Cikknev FROM Cikk; 6.Mely “C” –vel kezdődő budapesti partnernek a telefonját nem tudjuk? 7.Ki az, aki gödöllői vagy egri és nevében van “i” ? A SELECT után megadott DISTINCT kulcsszó a duplikált sorok szűrésére szolgál. 8.Milyen különböző nevű cikkeink vannak?

18 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, összesítő függvények SELECT SUM(EgysegAr) AS összérték FROM Cikk; SUM(oszlopnév)összeg (csak szám) AVG(oszlopnév)átlag (csak szám) MIN(oszlopnév)minimum érték MAX(oszlopnév)maximum érték COUNT(*)sorok száma COUNT(oszlopnév) nem null cellák darabszáma 9.Mennyi a cikkek összértéke? Egy lekérdezésben több összesítő függvényt is alkalmazhatunk, az összesítő függvényekkel műveleteket is végezhetünk, de alaphelyzetben (csoportosítás nélkül) más oszlopokat nem jeleníthetünk meg

19 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, összesítő függvények SELECT SUM(EgysegAr) AS összérték FROM dbo.Cikk WHERE (EgysegAr BETWEEN 5000 AND 10000) 10.Mennyi az 5000 és 10000Ft közötti cikkek összértéke?

20 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, összesítő függvények SELECT COUNT(*) AS db, MIN(EgysegAr) AS legolcsóbb, MAX(EgysegAr) AS legdrágább FROM Cikk 11.Hány cikkünk van és mennyibe kerül a legolcsóbb és a legdrágább cikk?

21 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, összesítő függvények SELECT COUNT(DISTINCT Cikknev) AS db FROM Cikk 12.Hány különböző nevű cikkünk van? MIN(distinct oszlopnév)minimum érték MAX(distinct oszlopnév)maximum érték COUNT(distinct oszlopnév) nem null különböző cellák

22 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 13.Az egyes számlákon milyen cikkeket vettek? Számlaszám szerint rendezve kívánjuk megjeleníteni a számlaszámot és a cikkszámot és a cikknevet. Két táblát kell használnunk.

23 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk INNER JOIN SzamlaTetel ON Cikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam Az INNER JOIN: csak az illezkedő rekordokat jeleníti meg 13.Az egyes számlákon milyen cikkeket vettek? View segítségével: SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk, SzamlaTetel WhereCikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam VAGY SQL segítségével:

24 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk LEFT OUTER JOIN SzamlaTetel ON Cikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam Az LEFT OUTER JOIN: a CIKK tábla összes rekordja és a Számlatétel illeszkedő értékei jellennek meg SQL segítségével: SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk RIGHT OUTER JOIN SzamlaTetel ON Cikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam Az RIGHT OUTER JOIN: a Számlatétel tábla összes rekordja és a CIKK illeszkedő értékei jellennek meg

25 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECTPartNev, Cikk.Cikkszam, Cikknev FROM Szamla, Partner, SzamlaTetel, Cikk WHERE Szamla.PartAzon = Partner.PartAzon and Szamla.SzamlaSzam = SzamlaTetel.SzamlaSzam and SzamlaTetel.Cikkszam = Cikk.Cikkszam and (dbo.Partner.Varos = 'Budapest') 14.A budapesti partnereink milyen cikkeket vettek? View segítségével:

26 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, csoportosítás SELECT COUNT(*) AS Expr1, Cikkcsoport FROM dbo.Cikk GROUP BY Cikkcsoport HAVING (COUNT(*) < 10) Az INNER JOIN: csak az illezkedő rekordokat jeleníti meg 15.Melyik cikkcsoportban van tíznél kevesebb cikk? View segítségével: SQL segítségével:

27 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk INNER JOIN SzamlaTetel ON Cikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam Az INNER JOIN: csak az illezkedő rekordokat jeleníti meg 16.Mennyi az egyes számlák végösszege? View segítségével: SQL segítségével:

28 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT SzamlaSzam, Cikknev, Cikk.Cikkszam FROM Cikk INNER JOIN SzamlaTetel ON Cikk.Cikkszam = SzamlaTetel.Cikkszam ORDER BY SzamlaSzam Az INNER JOIN: csak az illeszkedő rekordokat jeleníti meg 17.Mely számlákon szerepel kettőnél több cikk? View segítségével: SQL segítségével:

29 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 18.Melyik a legdrágább cikk? Select top 1 Cikkszam, cikknev From cikk order by egysegar desc Csökkenő sorrendbe rendezzük és csak az első értéket Jelenítjük meg. Megoldható a feladat belső selectel is: Select Cikkszam, cikknev From cikk where egysegar = (Select max(egysegar) from cikk)

30 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 19.Mely cikkekből nem vásároltak? SELECT Cikknev, cikkszam FROM Cikk Where cikkszam not in (Select cikkszam from szamlatetel)

31 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 20.Mely partner vásárolt az átlagosnál többért a tárgyévben? (A megoldást két részre bontjuk) Select Partnev, Ft From [20a] Where Ft >(Select AVG(Ft) from [20a]) Select Partnev, sum(menny*egysegar*(1+AFAErtek)) as Ft From szamlatetel, szamla, partner Where partner.partazon= szamla.partazon and szamla.szamlaszam=szamlatetel.szamlaszam Group by partner.partazon, partnev Elmentjük a lekérdezést 20a néven Megjegyzés: mivel szabályosan a táblaneveknek betűvel kell kezdődni, a szögletes zárójellel jelezzük, hogy a 20a táblanév

32 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 21.Hány partner neve szerepel az ábécé egyes betűivel? (Az oszlopnevekben függvényeket is használhatunk) Select Left(Partnev,1) as betű, count(*) as db From Partner Group by Left(Partnev,1);

33 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 22.Cikkcsoportonként melyik termék a legolcsóbb? Select cikkcsoport, cikknev, cikkszam, egysegar From cikk C1 Where egysegar = (Select min(egysegar) from cikk C2 where C1. cikkcsoport=C2.cikkcsoport) A belső select hivatkozik a külső selectben lévő táblára, ezért minden sorra külön kiértékelődik. Minden sornál az aktuális cikkcsoport legolcsóbb árát adja a belső select.

34 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv UPDATE Cikk SET EgysegAr = EgysegAr*1.1 WHERE Cikkcsoport='COAT'; 23.Emeljük meg a “COAT” cikkcsoportban levő cikkek árát 10%-kal! 24. Mentsük ki a budapesti partnereinket egy külön táblába! 25. Tegyük ki egri partnereinket is ebbe a táblába! SELECT Partner.* INTO bud FROM Partner WHERE Varos='budapest'; INSERT INTO bud (partnev, irszam, Varos, UtcaHsz, Tel1, Tel2) SELECT partnev, irszam, Varos, UtcaHsz, Tel1, Tel2 FROM Partner WHERE Varos='eger';

35 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 26. Mely partnerek fizettek “készpénz”-zel is és “átutalás”-sal is? Select distinct Partnev from partner, szamla where partner.partazon in (Select partazon from szamla where FizmAzon=1) and partner.partazon=Szamla.partazon and FizmAzon=2;

36 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 27.Mely partnerek fizettek csak 1-es fizetési móddal (készpénz)? Select distinct Partnev from partner, szamla where partner.partazon not in (Select partazon from szamla where FizmAzon<>1) and partner.partazon=Szamla.partazon and FizmAzon=1;

37 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 28.Mely partnerek vásároltak csupán egyszer? Select PartNev, COUNT(*) as vásárolt from partner, szamla where partner.partazon=Szamla.partazon Group by Partner.partazon, PartNev Having Count(*) = 1;

38 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 29.Melyik partner nem vásárolt az óta semmit? Select PartNev from partner where partazon not in (Select partazon from szamla Where SzlaDat > ' ')

39 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata Select m_szám, round(óraszám,0)*óradíj as összeg from munka Integer, money, real, float

40 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT neve, név, m1.óraszám FROM munka AS m1 INNER JOIN megrendelõ ON m1.megrendelõ = dbo.megrendelõ.azonosító INNER JOIN dolgozó ON m1.vezetõ = dolgozó.kód WHERE m1.óraszám = (SELECT MAX(óraszám) FROM dbo.munka AS m2 WHERE m1.vezetõ = m2.vezetõ)

41 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata SELECT sum(óraszám), count(*) FROM munka, dolgozó, csoport WHERE dolgozó.kód=vezetõ and neve='Nagy Péter' and munka.m_szám=csoport.m_szám 21

42 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 22 SELECT top 1 neve, név, convert(VARCHAR(25),ind_kelt,102) from csoport, dolgozó, munka, megrendelõ where dolgozó.kód=csoport.kód and csoport.m_szám=munka.m_szám and megrendelõ=azonosító and belép_éve=(Select min(belép_éve) from dolgozó) order by ind_kelt

43 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 23 SELECT top 1 NÉV,ind_kelt From munka m1, megrendelõ where megrendelõ=azonosító and ind_kelt=(Select max(ind_kelt) from munka m2where m1.megrendelõ=m2.megrendelõ) order by ind_kelt SELECT d1.neve, d2.neve, cs1.m_szám From dolgozó d1, dolgozó d2, csoport cs1, csoport cs2 Where d1.kód=cs1.kód and d2.kód=cs2.kód and cs1.m_szám=cs2.m_szám and d1.kód < d2.kód Order by d1.neve, d2.neve 24

44 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DML: Adatmódosító nyelv Adatatlekérdezés, táblák kapcsolata 25 select d1.neve as dolgozó, d2.neve as nem_fõnöke from dolgozó d1, dolgozó d2 where d2.kód not in (Select vezetõ from munka, csoport where munka.m_szám=csoport.m_szám and d1.kód=csoport.kód) and d1.kód<>d2.kód;

45 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Tárolt eljárás CREATE PROCEDURE proba_SP AS BEGIN SELECT * FROM Partner END CREATE PROCEDURE beszur_sp char(30)) AS BEGIN insert into partner (PartNev, Irszam, select * from partner END Exec beszur_sp 'Kis Péter', '6800', 'Hódmezõvásárhely' Exec proba_SP

46 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Tárolt eljárás CREATE PROCEDURE ha_sp char(30)) AS BEGIN if not exists (Select * from partner where Partnev BEGIN insert into partner (PartNev, Irszam, print'bejegyezve' END else print 'Már létezik' END Exec beszur_sp 'Kiss Péter', '6800', 'Hódmezõvásárhely'

47 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Tárolt eljárás CREATE PROCEDURE ciklus AS BEGIN int begin print 'Az x még mindig kisebb ötnél' select end END Exec ciklus

48 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Triggerek Triggereket általában az alkalmazás sajátosságaiból fakadó szabályosságok beépítésére alkalmazunk. Triggereket akkor is használunk, ha a kívánt megszorításokat a dekleratív eszközeinkel nem tudjuk megvalósítani. A triggerek a szabályok és az egyéb hivatkozási ellenőrzések után futnak le, ezért ha ezek nem teljesülnek, akkor végre sem hajtódik. Amennyiben a trigger hibás, nem fut le, a művelet sem kerül végrehajtásra. CREATE TRIGGER trigger neve ON tábla név FOR {INSERT, UPDATE, DELETE} [WIDTH ENCIPTRION] As sql utasítások

49 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Triggerek Új táblát hozunk létre (logol) Új triggert hozunk létre CREATE TRIGGER log ON Partner FOR INSERT, UPDATE As insert into logol VALUES (getdate(), Host_name(), suser_name()) Módosítunk a partner táblán és a bejegyzés magától létrejön

50 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Triggerek Triggerekkel megakadájozhatjuk egy művelet végrehajtását is. Műveletvégzéskor az inserted ill. a deleted tábla visszavonható módon tartalmazza az elvégzésre váró művelet rekordjait

51 TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL DCL: Adatvezérlő nyelv Triggerek Delete triggereket általában akkor használjuk, ha egy rekord törlésekor más rekordokat is törölni kell vagy ha a törlés hivatkozási integritást sért. CREATE TRIGGER cikktorles ON Cikk FOR delete As char(8) from deleted = 'COAT' begin ROLLBACK TRAN RAISERROR ('Nem törölhetõ, mert COAT',16,10) end


Letölteni ppt "TARTALOM Adatbázis Relációs adatbázis SQL szerverek SQL nyelv felépítése DDL DML DCL Adatbáziskezelés 70-es évek elején jött létre a magas szintű programozási."

Hasonló előadás


Google Hirdetések