03. C Sharp Adatbaziskezeles

Embed Size (px)

Citation preview

03. AdatbziskezelsAdatbzisokAz adatbzisokban a f adathordoz a tbla. Ez egy ktdimenzis mtrix, amelynek a sorai tartalmazzk a az informcikat. Pl. a vevk (Customers) tblja:

A pldban minden vevnek vannak attribtumai (tulajdonsgai). A kpen a tblban: CustomerID, CompanyName, ContactName, stb. Ezek a mtrix oszlopai. Egy sor az egy vevrl szl informcikat tartalmazza. Egy adatbzis llhat tbb tblbl (nhnytl nhny ezerig). A tblk legtbbszr kapcsoldnak egymshoz. Ezek a kapcsolatok a relcik. Az ADO (ActiveX Data Object) egy .net technolgia, amelyik lehetv teszi a munkt klnbz formtum adatbzisokkal. Rsze a .NET Framework krnyezetnek, ami nagyszm elre elksztett osztly beptsvel valsul meg. Plda hat lpsben: Ehhez fel kell hasznlni az internetrl letlttt adatbzist - C:\BAZIS\NWIND.MDB. Ltre kell hozni egy Windows Application tpus j projektumot. 1. Elszr hozz kell adni az adatforrst (Data Source) a projektumhoz. Ez tulajdonkppen kapcsolat a hasznlni kvnt adatbzishoz. Klnbz tpus adatbzist lehet hasznlni, de ekkor tpustl fggen telepteni kell a megfelel meghajtt (driver), de mindig alkalmazhat a Microsoft Access s az SQL Server. A Data menbl ki kell vlasztani az Add New Data Source ttelt. Ezzel elindul a Data Source Configuration varzsl. Az els ablakbl "Choose a Data Source Type" vlaszd ki a DataBaset, s utna Next. 2. Ebben a prbeszdben hozz kell adni a kapcsolatot (Connection) az adatbzis fel, s ki kell vlasztani a megfelel tpus adatbzist. Kattints a New Connection gombra. Kinylik az Add Connection prbeszd.Az alaprtelmezett a Microsoft Sql Server. Ennek megvltoztatshoz kattints a Change gombra.

1

A Change Data Source prbeszd sorn vlaszd ki a Microsoft Access Database File, s utna OK.

3. Visszakerlnk az elz prbeszdbe, ahol a Browse gombra kell kattintani, hogy megtalljuk a keresett adatbzist. Kvetkezik az OK, s ezltal ltrejn a kapcsolat az Nwind.mdb adatbzissal, majd Next a kvetkez lps fel. Ezutn mg egy No vlasz kvetkezik, hogy ne msoljuk t az adatbzist a projektum mappjba.

4. A kvetkez lps a "Save connection string...", amelynek ebben a pillanatban nincs jelentsge, s ezrt kvetkezik a Next. 5. Ebben a lpsben "Choose your database objects" ki kell vlasztani egy vagy tbb tblt, amelyekkel dolgozni akarsz. Ehhez a + mellett be kell jegyezni a tblt. Vlaszd ki a Customers tblt. Vgl pedig Finish amivel befejezzk az adatforrs kivlasztst.

2

6. A kijellt adatforrs adatainak kirsa a kpernyre. A tblzatok kirsra legtbbszr a DataGridView vezrlt alkalmazzk, amelyik az eszkztr Data szakaszban tallhat. A Properties ablakban a DataSource tulajdonsg arra szolgl, hogy a vezrlt sszekssk az adatforrssal, s gy a vgrehajts sorn megjelenthetek legyenek a bzis adatai. Nyisd ki a lenyl ment a DataSource tulajdonsg mellett. Lthat, hogy hozzaddtak mg ms objektumok is, s a DataGridView vezrlben az egyes oszlopok fejlceiban megjelennek a Customers tbla attributumai.

Az alkalmazs elindtsa utn megkapjuk az adatbzisbl kivlasztott adatokat egy tblzat formjban:

A fut alkalmazs sok elre beptett funkcit tartalmaz (vzszinte s fggleges scroll, sorbaraks adott mez szerint, ha a fejlc megfelel mezjre kattintunk. Az adatbzisok adataihoz val hozzfrshez ismerni kell az erre a clra kifejlesztett nyelvet. Ez az SQL (Structured Query Language) struktrlt lekrdezsi nyelv. Ez a nyelv nagyon kis mrtkben fgg az adatbzis tpustl.

A tbla elsdleges kulcsa (Primary Key PK)Mindegyik tblnak van egy fontos objektuma ez az elsdleges kulcsa (Primary Key PK). Ez lehet egy vagy tbb oszlop, amelynek az a feladat, hogy egyrtelmen azonostsa a tbla egy oszlopt. Pl. ha az egyetemi hallgatk adatait akarjuk egy tblba foglalni, a legmegfelelbb elsdleges kulcs a hallgatk indexnek a szma. Nem lenne clszer a vezetknevet s a nevet vlasztani erre a clra, mert elfordulhatnak ugyanolyan nev egynek. Nha egy rtk nem elegened az egyrtelm azonostshoz. Pl. ha a Szerbia sszes egyetemi hallgatjnak adatait akarnnk bevinni egy tblba, csak az index szma nem lenne elegend. Hozz 3

kellene adni a vros s az egyetem nevt is. Az gy kialaktott elsdleges kulcsot nevezik mg kompozit vagy sszetett elsdleges kulcsnak. Mirt fontos az elsdleges kulcs? Ha meg akarjuk nzni, mdostani vagy trlni az adatokat, akkor ezt nem tehetnnk meg pontosan ha nem lenne elsdleges kulcs. Nha a tblnak nincs olyan oszlopa, amely alapjn egyrtelmen meg lehetne hatrozni a tbla sorait (nem lehet megfelelel elsdleges kulcsot definilni). Ebben az esetben mestersgesen hozz kell adni mg egy oszlopot a tblhoz, amelyik legtbbszr numerikus, s amelybe az adatbzis legtbbszr sajt magtl nvekv sorrendben berja a szmokat. Adatbzistl fggen ezt az oszlopot Autonumber, Identity nek nevezik.

A tblban lv adattpusokAz alapvet adattpusok: Szveges adatok alfanumerikus szveg. Egsz tpus numerikus adatok pozitv s negatv egsz szmok. Lebegpontos numerikus adatok Dtum tpus adatok Klnleges adattpusok nagy kapacits szveg mezk, kpek, hangok, fldrajzi adatok (koordintk), stb.

Az SQL alapjaiDML (Data Manipulation Language), adatmozgatsra szolgl utastsok. Ide tartoznak az adatok bemutatsra, hozzadsra, vltoztatsra s trlsre vonatkoz utastsok. DDL (Data Definition Language). Ennek a segtsgvel lehet ltrehozni, vltoztatni s trlni az adatbzis objektumait. Ezekkel lehet tblt ltrehozni, meghatrozni az adatok nevt s tpust, elsdleges kulcsot definilni, stb. DCL (eng. Data Control Language) segtsgvel meghatrozhat, hogy melyik felhasznl mit csinlhat az adatokkal. Pl. nmelyik felhasznl csak nzheti az adatokat, mg msok meg is vltoztathatjk ket.

Az adatok bemutatsaAz adatok bemutathatk a SELECT utasts segtsgvel. A SELECT utasts szintaxisa: SELECT az_oszlop_neve FROM a_tbla_neve Az oszlopok nevt vesszvel kell sztvlasztani, a FROM utn kell berni a tbla nevt. A felsorolt oszlopneveknek lteznik kell a tblban, klnben hiba trtnik. A Northwind adatbzisban ltezik a Customers tbla, amely tartalmazza a vevk adatait a kvetkez oszlopokban: CustomerID (vev sifra), CompanyName (cg nv), City (helysg), stb. Ha ezeket az oszlopokat ki akarjuk olvasni a Customers tblbl, a SELECT lekrdezs a kvetkez: SELECT CustomerID, CompanyName, City FROM Customers (A kis- s nagy betk kztt nincs klnbsg, de ratlan szably, hogy az SQL parancsokat nagy betvel rjuk). Ennek az utastsnak az eredmnye:

4

Ha a tbla sszes oszlopt ki akarnnk ratni, akkor a SELECT utastst a kvetkezkppen kell felrni: SELECT * FROM Customers

ly mdon gyorsan megtudhatjuk a tbla oszlopainak a nevt. A gyakorlatban gyakran szksg van r, hogy az adatokat meghatrozott sorrendben brzoljuk. Ez megtehet egy vagy tbb oszlop szerint. Ha az adatokat vros nv szerint szeretnnk sorba rakni, mgpedig A-tl kezdve, akkor hasznlhatjuk az ORDER BY bvtmnyt: SELECT CustomerID, CompanyName, City FROM Customers ORDER BY City ASC

5

ASC Ascending (nvekv sorrend), DESC Descending (cskken soorend). ltalban az adatbzisok tbbsgben az ASC az alaprtelmezett rtk, s nem kell kln felrni. Pl. rjunk egy olyan adat lekrst, amely sorba rak kt oszlop alapjn: City s CompanyName, mgpedig a City szerint nvekv, a CompanyName szerint pedig cskken sorrendben. SELECT City, CompanyName FROM Customers ORDER BY City ASC, CompanyName DESC

A gyakorlatban ltalban nincs szksg a tbla sszes adatra. Ezrt alkalmazhat a fggleges s vzszintes szr. A fggleges szr azt jelenti, hogy nem ratjuk ki egy tbla sszes oszlopt, hanem csak azokat, amelyekre szksgnk van. Pl. ha csak a vev kdjt s a cg nevt akarjuk kiratni, akkor a SELECT utastsban csak a szksges mezket kell felsorolni. A vzszintes szr azt jelenti, hogy nem akarjuk a tbla sszes sort kiratni. Pl. csak egy adott vroshoz tartoz vevket akarjuk ltni. Ez a WHERE utastssal rhet el, amelynek segtsgvel definilhatjuk a kvnt kritriumokat (hasonlt az if utastshoz). Tbb kritrium is kombinlhat ha sszktjk ket az OR s AND opertorokkal. Ha ltni akarjuk az sszes Londoni vevt, a lekrdezs a kvetkez: SELECT CustomerID, CompanyName, City FROM Customers WHERE City = 'London' A WHERE utn kvetkezik a felttel. A 'London' aposztrofusok kztt azt jelenti, hogy a City mez tartalma szveges (alfanumerikus). Ez minden adatbzis tpus esetn gy van.

6

Ha pl. a Londoni s Berlini vevk is rdekelnek bennnket, akkor sszetett felttelre van szksgnk, akkor sszetett felttelre van szksg, mgpedig az OR (vagy) opertorra a felttelben. SELECT CustomerID, CompanyName, City FROM Customers WHERE City = 'London' OR City = 'Berlin'

Krds: ha az elz pldban az OR opertor helyett AND opertort hasznlnk, mi lenne az eredmny? Vlasz: nem kapnnk egy ttelt sem, mert egy vev sem lehet egyidben Londonbl is s Berlinbl is. A WHERE s ORDER BY utastsok (klauzulk) gyakran kombinldnak. Ebben az esetnen fontos betartani az utastsok sorrendjt a lekrdezs sorn: SELECT ... FROM ... WHERE ... ORDER BY ... Pldul:

Ilyen mdon ltrehozhatk tetszlegesen sszetett felttelek tbb OR s/vagy AND opertor segtsgvel azzal, hogy figyelembe kell veni, hogy az AND magasabb priorits, mint az OR. Hogy kell helyesen rtelmezni az albbi kritriumot: ... WHERE City = 'London' AND CustomerID = 'ALFKI' OR Country = 'Italy' Mivel az AND prioritsa magasabb, a fenti felttelt a kvetkezkppen kell olvasni: ... WHERE (City = 'London' AND CustomerID = 'ALFKI') OR Country = 'Italy' Zrjelek alkalmazsval a megvltoztathatk a prioritsok, a boole algebra szablyai szerint. 7

Ha meg akarunk mutatni adatokat, a kritriumban megadottak nlkl, akkor hasznlhatjuk a NOT tagads (negci) opertort. Pl. ha ltni akarjuk az sszes vevt a londoniak kivtelvel: SELECT CustomerID, CompanyName, City FROM Customers WHERE NOT City = 'London' Van mg egy hasznos rvidts. Ha ugyanarra a mezre tbb OR opertorral sszekttt felttel van, akkor hasznlhatjuk az IN oprtort. Pl. ltni akarnnk az sszes vevt a kvetkez vrosokbl London, Berlin, Madrid s Pariz, felttelt rvidtve gy rhatnnk fel: SELECT ContactName, CustomerID, CompanyName, City FROM Customers WHERE City IN ('London', 'Berlin', 'Madrid', 'Paris')

Ha a felttelben szerepl mezk numerikusak, a felttelt ugyangy kell rni, mint eddig azzal, hogy a mez rtkt nem kell aposztrofusok kz rni. Pl. szeretnnk ltni az sszes olyan termket, amelyek ra (UnitPrice) nagyobb, mint 50, s az eredmny sorba akarjuk rakni ennek a meznek az alapjn. SELECT ProductID, ProductName, UnitPrice FROM Products WHERE UnitPrice> 50 ORDER BY UnitPrice

Az IN opertorhoz hasonlan van mg egy fle rvidtett rsmdja a feltteleknek. Ha ltni akarjuk azokat a termkeket, amelyek ra 50 s 100 kztt (belertve ezeket az rtkeket is) szablyos a kvetkez rsmd:

8

SELECT ProductID, ProductName, UnitPrice FROM Products WHERE UnitPrice >= 50 AND UnitPrice = opertor a "nagyobb vagy egyenl"-t, a