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

1 Az Oracle SQL 1. Az első lépések. 2 Történelem 1. •E. F. Codd, 1970: relációs adatmodell ("A Relational Model of Data for Large Shared Data Banks",

Hasonló előadás


Az előadások a következő témára: "1 Az Oracle SQL 1. Az első lépések. 2 Történelem 1. •E. F. Codd, 1970: relációs adatmodell ("A Relational Model of Data for Large Shared Data Banks","— Előadás másolata:

1 1 Az Oracle SQL 1. Az első lépések

2 2 Történelem 1. •E. F. Codd, 1970: relációs adatmodell ("A Relational Model of Data for Large Shared Data Banks", Communications of the ACM) •P. Chen, 1976: kiterjeszti a kulcsok halmazelméleti leírásával •IBM, 1976: adatbázisgép tervének közzététele –Alapja az „R” adatbázis –Kidolgozói Codd és Chen

3 3 Célkitűzések IBM-nél •A tárolás módja és a logikai adatszerkezet független legyen egymástól •Külön adatbázisnyelv, ami szabványosítja –az adatszerkezet definiálását –az adatok kezelését –az adatok biztonságára vonatkozó előírásokat •Az adatkezelő utasítások az „adatbevitel - módosítás - törlés” logikáját követik, a fizikai műveleteket elrejtik •Munkájuk eredménye a SEQUEL nyelv (Structured English Query Language) –tervezői: D. D. Chamberlin, R. F. Boyce

4 4 Történelem 2. •A SEQUEL név később SQL-re rövidül •Hosszú csend, nincs jelentős fejlesztés az IBM-nél (védik a piacon lévő termékeiket?) •Relational Software, 1979: az SQL első, kereskedelemben hozzáférhető megvalósítása •Új cégek jelennek meg saját relációs adatbáziskezelővel és SQL-lel: –1983: Oracle (adatbáziskezelőjük: Oracle) –1984: Relational Co. (adatbáziskezelőjük: Informix)

5 5 Történelem 3. •1986: ANSI szabvány az SQL alaputasításaira (SQL-86, vagy SQL-1) •1987: ISO szabvány az SQL alaputasításaira (SQL-87) •Új cégek, növekvő verseny, az IBM is erősít •1989: második ISO szabvány az SQL-re, újabb területeket szabványosít (SQL-89) •1992: harmadik ISO szabvány az SQL-re (SQL-92, vagy SQL-2)

6 6 Történelem 4. •1996: a tárolt eljárások és függvények szabványosítása •1999: ISO szabvány (SQL-1999, vagy SQL-3) •2003: ISO szabvány (SQL-2003) •2006: ISO szabvány (SQL-2006) •A szabványok kompromisszumok, csak a meglévő gyakorlatot szentesítik! Minden megvalósítás tartalmaz eltéréseket!

7 7 Illik tudni... •Az Oracle egy cég neve, 1983-ban alakult •Többféle programtermékük is van •Ezek közül a legismertebb az Oracle adatbázis-kezelő •Különböző operációs rendszerekre létezik •Az idők során több verziója is elkészült •Mi az Oracle 9i-t használjuk

8 8 Ismerkedési lehetőségek •Kipróbálás céljából a teljes rendszer letölthető ingyenesen az Oracle honlapjáról (www.oracle.com) •A teljes (angol nyelvű) dokumentáció elérhető az Interneten több helyen is •Nálunk a címe: •Az Oracle Press és az O’Reilly könyvei

9 9 A „gyári” dokumentáció fontosabb könyvei •Error Messages •Master Glossary •Master Index •SQL Reference •SQL*Plus User’s Guide and Reference

10 10 Az SQL nyelv bemutatása

11 11 Az SQL jelentősége Az Oracle adatbázis csak SQL nyelvű utasításokkal érhető el!

12 12 Az SQL nyelv fontosabb formai jellemzői •A kulcsszavakban nincs különbség a kis- és nagybetű között –select, Select, SELECT egyenértékű •Az utasítások végén pontosvessző van •Az utasítások szabadon széttörhetők több sorra

13 13 Az utasítások szerkezete •Követik a beszélt nyelv logikáját, kiolvasva értelmes, kerek angol mondatokat kapunk •Az utasítások szakaszokra (záradék, clause) oszthatók –minden szakaszt jellemző kulcsszó vezet be –az egyes szakaszok pontosítják az utasítás tárgyát és a végrehajtás feltételeit

14 14 Példa SQL utasításra SELECT vevokod, nev1, telefon FROM vevok WHERE nev1 LIKE ‘K%’ ORDER BY nev1, vevokod; alaputasítás WHERE- szakasz: válogatás ORDER BY szakasz: a rendezés megadása

15 15 Az utasítások fajtái •Adatdefiníciós: CREATE, ALTER, DROP –DDL, data definition language •Adatkezelési: SELECT, INSERT, UPDATE, DELETE –DML, data manipulation language •Adatbiztonsági: GRANT, REVOKE –DCL, data control language •Kiegészítő utasítások az egyes megvalósításokban –a tárolás előírása –az adatmentés és a visszatöltés elvégzése –a működés körülményeinek beállítása

16 16 Create •Adatbázis objektum létrehozása •CREATE TABLE Szamla ( Szamlaszam NUMERIC(24), Tulajdonos VARCHAR(60), Nyitas DATE, Allapot VARCHAR(1), PRIMARY KEY (Szamlaszam) );

17 17 Alter •Adatbázis-objektum módosítása •ALTER TABLE Szamla MODIFY Szamlaszam VARCHAR(26);

18 18 DROP •Egy adatbázisbeli objektum (index) megszüntetése •DROP INDEX Szamla_1; •Egy adatbázisbeli objektum (tábla) megszüntetése •DROP TABLE egy_tabla;

19 19 COMMENT •Megjegyzést fűz egy adatbázis- objektumhoz •COMMENT ON TABLE Szamla IS 'Ügyfelek bankszámlaszámai'; COMMENT ON COLUMN Szamla.Allapot IS 'Számla állapota: "N" – Normál, "D" – Törölve';

20 20 Select •leggyakrabban használt utasítás •inkább deklaratívnak tekinthető, mint procedurálisnak •az adatok egy halmazát válogatja ki •a halmaz általában szekvenciálisan olvasható •különleges jelzés, EOF – End of File BOF – Beginning of File

21 21 Select •akiknek egynél több aktív bankszámlája van •SELECT COUNT(*), Tulajdonos FROM Szamla WHERE Allapot = 'N' GROUP BY Tulajdonos HAVING COUNT(*) > 1 ORDER BY Tulajdonos

22 22 Több Select •Az eredményhalmaz oszlopait kell itt felsorolni •SELECT Vevo.Nev, (SELECT SUM(Osszeg) FROM Rendeles WHERE VevoID = Vevo.ID) RendelesOsszeg

23 23 Összetett Select •a legnagyobb árbevételű munkáinkat •SELECT munka_szám FROM munka WHERE óraszám*óradíj = ( SELECT max(óraszám*óradíj) FROM munka );

24 24 Select/from •mely adatbázis-táblákból szeretnénk összegyűjteni az adatokat ? •SELECT * FROM Beteg, Kezeles

25 25 Select/from •minden beteghez csak a hozzá tartozó kezelést •SELECT * FROM Beteg KEY JOIN Kezeles •definiált külső kulcs a Kezeles tábláról a Beteg táblára !!!! •Az orcle ezt nem támogatja, még akkor sem, ha van külső kulcs

26 26 Select/Where •A Boole-algebra kifejezései használhatók, OR, AND és NOT operátorokkalBoole-algebra

27 27 Select/Where •Szűrési feltételeket fogalmaz meg = szűkíti az eredmény halmazt •SELECT * FROM Beteg, Kezeles WHERE Beteg.ID = Kezeles.BetegID AND Kezeles.Datum = CURRENT DATE

28 28 Select/ GROUP BY •Egyes sorok összevonását, csoportosítását írja elő az eredménytáblában •SELECT COUNT(*), Tulajdonos FROM Szamla WHERE Allapot = 'N' GROUP BY Tulajdonos •Csoportosítás a tulajdonos alapján, COUNT(*) egy-egy csoport sorainak számát adja vissza, az összevonás előtt

29 29 Select/Having •Szűrés a csoportosítás utáni eredményhalmazra •SELECT COUNT(*), Tulajdonos FROM Szamla WHERE Allapot = 'N' GROUP BY Tulajdonos HAVING COUNT(*) > 1 •csak azok a csoportok jelennek meg, amelyek egynél több sorból lettek összevonva

30 30 Select/Order By •az eredményhalmaz rendezését adja meg SELECT * FROM Beteg ORDER BY Szuletes DESC születési dátum szerint sorba rendezve, elöl a legfiatalabbal

31 31 Case •CASE WHEN logikai vizsgálat THEN kifejezés ha igaz.. ELSE kifejezés ha az előzőekre nem illeszkedik •A logikai vizsgálat eredményétől függően vezérelhetjük, hogy mit szeretnénk az adott oszlopban látni •select app_id,budget_info_type,amount from acq_budget_info

32 32 Case •A lekérdezés transzponáltja •select APP_ID, max(net_income), max(gross_income), max(bonus) from ( select APP_ID, case when BUDGET_INFO_TYPE='net_income' then amount else null end as net_income, case when BUDGET_INFO_TYPE='gross_income' then amount else null end as gross_income, case when BUDGET_INFO_TYPE='bonus' then amount else null end as bonus, from acq_budget_info) xx group by APP_ID

33 33 Lekérdezési terv •Query plan •Az adatbázis kezelők eltérő algoritmusokat használnak (pl: * •Az eltérések a változókezelés, elágazások, ciklusok kezelése, kivételkezelés stb. vannak •Gyakori a szabály-alapú (rule-based) (relációs adatbázis szerkezetét), és a költség-alapú (cost- based),(átlagát, szórását )

34 34 Insert •Adatokat ad hozzá egy táblához INSERT INTO Szamla (Szamlaszam, Tulajdonos, Nyitas, Allapot) VALUES (123456, 'H. Kovács Géza', ' ', 'N');

35 35 Update •Módosítást hajtunk végre UPDATE Szamla SET Allapot = 'D' WHERE Szamlaszam = ;

36 36 Delete •Törlés végzünk DELETE FROM Beteg WHERE TAJ = ' ';

37 37 Egyéb utasítások •Tudunk bonyolultabb algoritmusokat is írni Pl: például komoly adatkezelési feladatokat szeretnénk az ügyfél-oldalról a kiszolgáló- oldalra áthelyezni csak egyszerűsíteni akarjuk a programozást, pl a TAJ számból kiszedni a szóközöket

38 38 Jelentős különbségek SQL-ben •Az Oracle rendszereiben nincs NUMERIC, helyette a NUMBER-t kell használni •Az Oracle nem támogatja a VARCHAR-t, helyette a VARCHAR2-t javasolja •Az Oracle nem támogatja a LONG VARCHAR-t, helyette a CLOB-ot javasolja •Az Oracle-ben a DATE dátumot és időt is tartalmazhat, más rendszerekben ez csak dátum lehet

39 39 Jelentős különbségek SQL-ben •SELECT-FROM szakaszba írt összekapcsolási utasításokat, mások csak a SELECT-WHERE-ben fogadják el SELECT * FROM Beteg KEY JOIN Lelet SELECT * FROM Beteg, Lelet WHERE Beteg.ID = Lelet.BetegID

40 40 Jelentős különbségek SQL-ben •gyors keresésnél csak a teljesen pontosan beírt keresőkérdésre találják meg a választ, néhol figyelni kell a kis- és nagybetűkre, valamint az ékezetek helyes használatára (Oracle, Firebird) •Ahol egyenrangúak (Sybase Ase, Sybase ASA)

41 41 Jelentős különbségek SQL-ben •From nélküli Select SELECT SYSDATE SQL kiszolgálók esetében nem működik, mivel a FROM náluk kötelező nyelvi elem!! az Oracle minden adatbázisában szerepelteti a DUAL táblát, amelynek egyetlen rekordja van. Így Oracle SQL-ben ezt kell írnunk SELECT SYSDATE FROM DUAL

42 42 Az SQL utasítások feldolgozása •Az alkalmazás egy SQL utasítást (szöveg!) küld az adatbázisba •Az adatbázis ellenőrzéseket végez: –szintaxis –a hivatkozott objektumok megléte, az adattípusok helyessége –jogosultság •Az adatbázis elvégzi a kért utasítást •Adatokat és / vagy állapot-információkat ad vissza adatbázis alkalmazás SQL utasítás adatok

43 43 A kliens-server környezet •Az adatbáziskezelő egy szerveren fut (nálunk Linux alatt) •A használatához a kliens gépekre megfelelő programot kell telepíteni –megfelelő módon elküldi az SQL utasításokat –fogadja az adatbázisból érkező adatokat •Az Oracle által szállított hagyományos kliens program az SQL*Plus •Újabb, kényelmesebb az SQL Developer •Mindkettő többfajta operációs rendszerre is létezik

44 44 Az utasítások végrehajtásának követése •Az SQL utasítások végrehajtási módjáról és annak hatékonyságáról felvilágosítást lehet kérni •További információk a gyári dokumentációban: SQL*Plus User’s Guide and Reference, 9. fejezet: Tuning SQL*Plus

45 45 Az Oracle munkakörnyezete

46 46 Objektumok egy adatbázisban 1. •Tábla (adattábla, table): az adatok tárolási helye •Nézet (nézettábla, view): –meglévő táblákból kiválogatott / származtatott adatokat „tartalmaz” (inkább: szolgáltat) –táblaként kezelhető –mint a választó lekérdezés Accessben •Index: az adatok gyors visszakeresését segítő segéd-információk •Sorozat (sequence): egyedi egész értékeket szolgáltat –hasonló szerep, mint a számláló adattípusnak Accessben

47 47 Objektumok egy adatbázisban 2. •Tárolt eljárások (function, procedure, package): PL/SQL nyelven írt, az adatbázisban tárolt és az adatbázis-szerveren futó eljárások / függvények / programcsomagok •Trigger: különleges PL/SQL eljárás –nem az alkalmazás hívja, hanem bizonyos adatbázis- események (pl. rekord beszúrása) hatására automatikusan elindul –ellenőrzésre, az integritás biztosítására használjuk •Az újabb Oracle verziók a PL/SQL mellett a Java használatát is támogatják

48 48 A DUAL tábla •Az Oracle specialitása •Egy sora és egy oszlopa van •Minden felhasználónak van rá SELECT jogosultsága •Jól használható számítások végrehajtatására vagy függvények kiértékelésére –SELECT 2+3 FROM DUAL; –SELECT USER, SYSDATE FROM DUAL;

49 49 A TNSNAMES.ORA fájl •Egyszerű szövegfájl •A hagyományos kliensprogramok esetében minden kliensgépen megtalálható (pl. a C:\oracle\ora92\network\Admin-ban) •Az adatbázisok nevéhez megadja a hálózati helyet •A karbantartásához külön program is van: Start menü / Programok / Oracle - OraHome92 / Configuration and Migration Tools / Net Manager

50 50 A SCOTT felhasználó •Az Oracle telepítésekor egy minta-adatbázis is telepíthető: –egy SCOTT nevű felhasználó TIGER jelszóval –néhány tábla adatokkal •Nagyon sok Oracle példa hivatkozik ezekre az adatokra

51 51 A DEPT tábla •A SCOTT felhasználó táblája •DEPT: department (részleg) –DEPTNO: department number (a részleg száma) –DNAME: department name (a részleg neve) –LOC: location (helység)

52 52 Az EMP tábla •A SCOTT felhasználó táblája •EMP: employee, alkalmazott –EMPNO: employee number, az alkalmazott kódja –ENAME: employee name, az alkalmazott neve –JOB: munkakör –MGR: manager, a főnökének a kódja –HIREDATE: belépési dátum –SAL: salary, fizetés –COMM: commission, ??? –DEPTNO: department number (a részleg száma)

53 53 A példa-adatbázis szerkezete

54 54 A példa-adatbázis szerkezete •A Stolnicki-könyvből átvéve, egyszerűsítve •A mezőtípusok az Oracle lehetőségeihez igazítva vevőkrendelések a rendelések tételei cikktörzs

55 55 A vevők adatai (VEVOK tábla)

56 56 A rendelések adatai (RENDEL tábla)

57 57 A rendelések tételei (RTETEL tábla)

58 58 A cikkek adatai (CIKK tábla)


Letölteni ppt "1 Az Oracle SQL 1. Az első lépések. 2 Történelem 1. •E. F. Codd, 1970: relációs adatmodell ("A Relational Model of Data for Large Shared Data Banks","

Hasonló előadás


Google Hirdetések