1.93k likes | 2.23k Views
Bevezet és az Oracle SQL-be. Bevezet és. A tanfolyam céljai. Relációs adatmodellen alapuló adatbáziskezelő rendszer fogalmainak megismertetése. Az SQL (Structured Query Language) használatával adatbázis objektumok, táblák, nézetek létrehozása az adatbázisban,
E N D
Bevezetés az Oracle SQL-be Bevezetés
A tanfolyam céljai • Relációs adatmodellen alapuló adatbáziskezelő rendszer fogalmainak megismertetése. • Az SQL (Structured Query Language) használatával • adatbázis objektumok, táblák, nézetek létrehozása az adatbázisban, • a táblákban tárolt adatok karbantartása, lekérdezése. • Az adatok kezelésére PL/SQL blokkok készítése.
Az ORACLE Szerver és az ORACLE eszközök Discoverer/2000 Designer/2000 Developer/2000 ORACLE Szerver +Egyéb eszközök: SQL*Plus, SQL*DBA, segédprogramok
Az ORACLE Szerver funkciói • Adatbázis kialakítása, objektumok létrehozása • Adatok tárolása, karbantartása • Adatok visszakeresése • Adatvédelem, adatbiztonság megoldása • Tranzakciókezelés • véglegesítés, visszagörgetés, rollback szegmensek • automatikus helyreállítás • elosztott adatbázisok • Felhasználók kezelése • jogosultságok kiosztása • egyidejű hozzáféréskor lefoglalási mechanizmusok
A relációs adatbázis fogalmai • Az adatok táblákban kerülnek tárolásra. Minden tábla sorokból és oszlopokból áll. • Egy oszlopban azonos típusú adatokat tárolunk. • A sorok tartalmazzák az összetartozó oszlopértékeket. • Ha egy oszlop nem kap értéket valamelyik sorban, akkor azt modjuk, hogy az értéke NULL. Telephelytábla Sor Oszlop
A relációs adatbázis fogalmai • Az elsődleges kulcs (Primary key) olyan oszlop, vagy oszlopok kombinációja, amely egyedileg azonosítja a tábla minden sorát. • Az idegen kulcs (Foreign key) olyan oszlop, vagy oszlopok csoportja, amely egy másik tábla elsődleges kulcsára hivatkozik. Idegen kulcsok használatával tudunk adatokat több táblából logikailag összekapcsolni.
Táblák összekapcsolása Elsődleges kulcs Elsődleges kulcs Idegen kulcs
A relációs adatbázis jellemzői • Egy relációs adatbázis kétdimenziós táblák halmaza. Felhasználói adatok + Adatszótár • A logikai és fizikai szerkezet független. • Relációs műveletek megvalósítása a táblákon. • Online módon módosítható. • Teljes adatfüggetlenség. • Anyanyelve: SQL
Bevezetés az Oracle SQL-be 1. SQL alapok
Az SQL, PL/SQL és az SQL*Plus • SQL • Szabványos • nem algoritmikus, halmazorientált nyelv; • Minden Oracle eszköz illetve alkalmazás használja a szerverrel való kommunikációra. • PL/SQL • Procedurális nyelv alkalmazáslogika írására és adatok kezelésére az alkalmazáson kívül. • SQL*Plus • Oracle eszköz, amely interaktív környezetet biztosít SQL utasítások és PL/SQL blokkok végrehajtásához; • Saját parancsnyelvvel rendelkezik.
Az SQL parancsai • Adatlekérdezés • SELECT • Adatmanipulációs nyelv (DML) • INSERT, UPDATE, DELETE • Adatdefiníciós nyelv (DDL) • CREATE, ALTER, DROP, RENAME, TRUNCATE • Tranzakció kezelés (DCL) • COMMIT, ROLLBACK, SAVEPOINT • Adatvezérlő nyelv (DCL) • GRANT, REVOKE
Egyszerű lekérdezések • A SELECT utasításrész meghatározza, hogy mely oszlopok kerülnek kiválasztásra. A * minden oszlop kiválasztását jelenti. • A FROM utasításrész meghatározza, hogy melyik táblából. • Az álnév az oszlopoknak alternatív fejlécet ad. SELECT [DISTINCT] {*| oszlop [álnév], ...} FROM tábla;
A tábla teljes tartalmának kiíratása SQL> SELECT * 2 FROM telephely; T_KOD T_NEV CIM ----- -------------------- --------------- 10 IRODAK BUDAPEST 20 UJ_AUTO BUDAPEST 30 UJ_AUTO GYOR 40 UJ_AUTO DEBRECEN 50 HASZNALT_AUTO BUDAPEST 60 HASZNALT_AUTO SZEGED 70 DEVIZAS_AUTO BUDAPEST 7 rows selected.
Oszlopok kiválasztása SQL> SELECT a_kod, a_nev, beosztas, belepes 2 FROM alkalmazott; A_KOD A_NEV BEOSZTAS BELEPES ----- --------------- ---------------- --------- 1234 KOVACS ELADO 10-DEC-86 1235 MOLNAR SZERELO 08-FEB-71 1236 CSIKOS ELADO 12-MAR-85 1237 TOTH VIZSGABIZTOS 22-APR-80 1238 NEMETH TELEPHELYVEZETO 28-NOV-83 1239 SZABO IGAZGATO 01-MAY-77 1240 BALOGH SZERELO 09-JUN-83 1244 KIRALY VIZSGABIZTOS 04-AUG-80 1245 HERCEG ELADO 12-NOV-84 1246 BOGNAR ELADO 08-OCT-79 1247 HALASZ SZERELO 23-MAY-81 1248 HORVAT TELEPHELYVEZETO 09-DEC-81 1249 KISS ELADO 23-DEC-71
Aritmetikai kifejezések a SELECT listában • Numerikus és dátum típusú oszlopok, konstansok valamint a következő műveletek kombinációjával kifejezéseket tudunk előállítani: • összeadás + • kivonás - • szorzás * • osztás / • A kifejezések kiértékelése a műveletek erősségi sorrendje szerint történik, ami zárójelezéssel megváltoztatható. SQL> SELECT a_nev, fizetes*12 eves_fizetes 2 FROM alkalmazott;
Összekapcsolt oszlopok • Az összefűzés operátorral oszlopokat és karaktersorozatokat kapcsolunk össze. Jele: || • A SELECT listában ún. literálok is elhelyezhetők. SQL> SELECT a_kod||a_nev dolgozok 2 FROM alkalmazott; SQL> SELECT a_kod||’-’||a_nev ”Dolgozok”, 2 ’Telepe: ’, t_kod 3 FROM alkalmazott;
NULL értékek kezelése • A NULL érték ismeretlen értéket jelent, nem azonos a nullával vagy szóközzel. • Aritmetikai kifejezésben NULL eredményt idéz elő. • NULL érték átalakítása az NVL függvénnyel: • NVL(belepes, ’01-JAN-98’) • NVL(beosztas, ’TANULO’) • NVL(premium, 0) ?! SQL> SELECT a_nev, fizetes*12+premium eves_jov 2 FROM alkalmazott; SQL> SELECT a_nev, fizetes*12+NVL(premium,0) eves_jov 2 FROM alkalmazott;
Ismétlődő sorok kiküszöbölése • Alapértelmezés szerint egy lekérdezés megjelenít minden sort, beleértve az ismétlődő sorokat is. • Az ismétlődő sorok megjelenítését a SELECT utasításban a DISTINCT kulcsszó használatával kerülhetjük el. SQL> SELECT beosztas 2 FROM alkalmazott; SQL> SELECT DISTINCT beosztas 2 FROM alkalmazott; SQL> SELECT DISTINCT t_kod, beosztas 2 FROM alkalmazott;
Bevezetés az Oracle SQL-be 2. Az SQL*Plus használata
SQL*Plus: áttekintés • Az SQL*Plus felhasználói felületet nyújt az adatbázishoz. • Elfogad és végrehajt SQL*Plus parancsokat, SQL parancsokat és PL/SQL blokkokat. • Az SQL*Plus parancskészlete: • SQL parancsok szerkesztése a pufferben • A táblák szerkezetének lekérdezése • Parancsállományok mentése, végrehajtása • Változók definiálása • Lekérdezések eredményének formázása • Környezet beállítása • Egyéb parancsok
Bejelentkezés az SQL*Plus-ba • Windows környezetből: • az ikonra való dupla kattintással • felhasználói név és jelszó megadásával • Parancssorból: • sqlplus felhasználónév/jelszó [@adatbázis] • Megjelenik a prompt: SQL> • Kilépés: EXIT vagy QUIT • Átjelentkezés másik felhasználó neve alá: CONNECT felhasználónév/jelszó [@adatbázis] • Lekapcsolódás az adatbázisról: DISCONNECT
Parancsok kiadása • SQL parancsok kiadása • Az utasítás végét ; jelzi vagy / üres sorban • Végrehajtás Enter hatására • ; nélküli Enter folytatósort eredményez • Utolsó SQL parancs újrafuttatása: RUN vagy / • SQL*Plus parancsok kiadása • Parancsokat jellel lezárni nem kell, végrehajtás Enter hatására • Folytatósor a - karakter beírásával kapható
SQL*Plus szerkesztési parancsok Az utoljára begépelt SQL parancs a pufferbe kerül, ahonnan listázható, szerkeszthető vagy futtatható, amíg újabb parancsot nem adunk ki. • L[IST] n Puffer tartalmának listázása. A *-gal jelölt sor az aktuális. • A[PPEND] szöveg Aktuális for folytatása. • C[HANGE] / régi/ új Aktuális sor módosítása.C[HANGE] / szöveg/ Törli a szöveget a sorból. • n szöveg Teljes sor tartalmának cseréje. • I[NPUT] szöveg Új sor bevitele az aktuális után. • DEL Aktuális sor törlése.
Parancsállományok kezelése • Puffer tartalom állományba mentése és visszatöltése (alapértelmezett kiterjesztés .SQL):SAVE állománynév GET állománynév • Parancsállományok futtatása:START állománynév @ állománynév • Parancsállomány szerkesztése: EDIT állománynév DEFINE_EDITOR=’editor_név’
Változók definiálása • Behelyettesítő változók&változó lokális, csak az adott előfordulásnál érvényes&&változó globális • Felhasználói változók definiálása, törléseDEFINE változó vagy DEFINE változó=értékUNDEFINE • Interaktív értékadássalACCEPT változó[típus] [FORMAT] [PROMPT szöveg][HIDE] • Szövegek kiírásaPROMPT szöveg • Paraméterek használata parancsállományokbanjelölése: &1 … &9 futtatáskor: START állománynév pm1 pm2 …
Egyéb parancsok • Tábla szerkezetének (oszlopnevek, adattípusok) megjelenítése:DESC[RIBE] tábla • Segítő képernyők megjelenítése:HELP parancs • Képernyőn megjelenő output tördelése:SET PAUSE ON • Parancsok, képernyőtartalom állományba irányítása:SPOOL állománynév SPOOL OFF • Operációs rendszer parancsok futtatása: HOST vagy HOST parancs
Bevezetés az Oracle SQL-be 3. Sorok kiválasztása
Az ORDER BY utasításrész • A lekérdezett sorokat az ORDER BY utasításrész segítségével tudjuk valamely oszlop vagy kifejezés értéke szerint rendezetten megjeleníteni. • Az ASC az alapértelmezés, ami növekvő sorrendet jelent, a DESC pedig csökkenőt. • Az ORDER BY egy SELECT parancs utolsó része. SELECT [DISTINCT] {*| oszlop [álnév], ...} FROM tábla [ORDER BY {kifejezés | n} [ASC |DESC], ... ];
Sorok rendezése • Az oszlopnév helyett használható az oszlop pozíciója a SELECT listában. SQL> SELECT a_nev, beosztas, fizetes 2 FROM alkalmazott 3 ORDER BY a_nev; SQL> SELECT a_nev, beosztas, belepes 2 FROM alkalmazott 3 ORDER BY belepes DESC; SQL> SELECT a_nev, beosztas, t_kod 2 FROM alkalmazott 3 ORDER BY 2;
Sorok rendezése több szempont szerint • Több oszlop szerint is tudunk rendezni. • Olyan oszlop szerint is rendezhetünk, amelyik nincs kiválasztva. • A NULL értékek a növekvő rendezések végén illetve a csökkenő rendezések elején jelennek meg. SQL> SELECT t_kod, a_nev, fizetes 2 FROM alkalmazott 3 ORDER BY t_kod, fizetes DESC;
Válogatás a sorok között • A WHERE utasításrész használatával szelektálunk a sorok között. A lekérdezés csak a feltételnek eleget tevő sorokat adja vissza. • A WHERE utasításrész a FROM utasításrészt követi. • A feltétel egy logikai kifejezés, melyben szerepel: • oszlopnév, kifejezés, állandó • összehasonlító operátor SELECT [DISTINCT] {*| oszlop [álnév], ...} FROM tábla [WHERE feltétel];
Összehasonlító és logikai operátorok • Relációs operátorok = != > >= < <= • SQL operátorok • BETWEEN ... AND ... • IN (értéklista) • LIKE ’karakterminta’ • IS NULL • Logikai operátorok • NOT • AND • OR
Relációk a feltételben SQL> SELECT * 2 FROM alkalmazott 3 WHERE fizetes >= 25000; SQL> SELECT * 2 FROM alkalmazott 3 WHERE belepes > ’01-JAN-80’; SQL> SELECT * 2 FROM alkalmazott 3 WHERE beosztas = ’ELADO’;
A BETWEEN és az IN operátorok • A BETWEEN operátorral egy oszlop vagy kifejezés értékének egy értéktartományba tartozását vizsgáljuk. • Az IN operátorral eldönthető, hogy a vizsgált érték az listában felsoroltak között előfordul-e. SQL> SELECT * 2 FROM alkalmazott 3 WHERE fizetes BETWEEN 15000 AND 30000; SQL> SELECT * 2 FROM alkalmazott 3 WHERE t_kod IN (10, 30, 60);
A LIKE operátor • A LIKE operátorral egy karaktermintához való illeszkedést vizsgálunk. • A karaktermintában használható joker karakterek: • % tetszőleges számú karaktert helyettesít • _ egy karaktert jelöl SQL> SELECT * 2 FROM alkalmazott 3 WHERE a_nev LIKE ’H%’; SQL> SELECT * 2 FROM alkalmazott 3 WHERE a_nev LIKE ’_E%’;
Az IS NULL operátor • NULL értékhez hasonlítás csak ezzel az operátorral végezhető. SQL> SELECT * 2 FROM alkalmazott 3 WHERE premium IS NULL; SQL> SELECT * 2 FROM alkalmazott 3 WHERE premium IS NOT NULL;
Összetett feltételek • A relációs műveletekkel alkotott feltételekből logikai operátorokkal összetett logikai kifejezéseket készíthetünk. • Műveletek erősségi sorrendje: összehasonlító operátorok, NOT, AND, OR SQL> SELECT * 2 FROM alkalmazott 3 WHERE beosztas NOT IN (’SZERELO’, ’ELADO’) AND belepes BETWEEN ’01-JAN-75’ AND ’31-DEC-83’; SQL> SELECT * 2 FROM alkalmazott 3 WHERE beosztas = ’ELADO’ AND (t_kod=20 OR t_kod=40);
Bevezetés az Oracle SQL-be 4. Egysoros függvények
Az SQL függvényeinek áttekintése • Függvények használhatók: • adatokon történő számítások végrehajtására • adategységek módosítására • sorok csoportonkénti kezelésére • dátum adatok különböző formátumú megjelenítésére • oszlop adattípusok konvertálására • Függvény típusok: • Egysoros függvények karakteres numerikus dátum konverziós egyéb • Csoport függvények
Egysoros függvények • Az egysoros függvények • a lekérdezés által visszaadott sorok mindegyikén végrehajtódnak • soronként egy eredményt adnak vissza • egy vagy több argumentumuk van • egymásba ágyazhatók • Függvénykifejezés bárhol szerepelhet egy parancsban, ahol oszlop, kifejezés vagy változó állhat.
Karakteres függvények A karakteres függvények karakteres vagy szám értéket adnak. LOWER(sztring) Karaktersorozatot kisbetűsre alakít. UPPER(sztring) Karaktersorozatot nagybetűsre alakít. INITCAP(sztring) A kezdőbetűt nagybetűre a többit kisbetűre alakítja. CONCAT(sztring1,sztring2) A két szöveget összefűzi. SUBSTR(sztring, n [, m]) Az eredeti szöveg n. pozíciójától kezdődő m hosszú részkaraktersorozatot adja. LENGTH(sztring) A karaktereksorozat hosszát adja. INSTR(sztring1,sztring2 [,n [,m]]) Az első szöveg n. karakterétől kezdve a második szöveg m. előfordulásának pozícióját adja vissza.
Karakteres függvények LPAD(sztring, h [,’karakterek’]) A karaktersorozatot balról kiegészíti h hosszúra a karakterekkel. RPAD(sztring, h [,’karakterek’]) A karaktersorozatot jobbról kiegészíti h hosszúra a karakterekkel. LTRIM(sztring [,’karakterek’]) A karaktersorozat elejéről levágja a felsorolt karaktereket. RTRIM(sztring [,’karakterek’]) A karaktersorozat végéről levágja a felsorolt karaktereket. TRANSLATE(sztring, s1 ,s2) Az első szövegben az s1 karaktereit kicseréli s2 karaktereire. REPLACE(sztring, s1 [,s2]) Az első szövegben megkeresi az s1 szöveget és kicseréli s2-re.
Karakteres függvények SQL> SELECT INITCAP(a_nev), LOWER(beosztas) 2 FROM alkalmazott; SQL> SELECT a_nev 2 FROM alkalmazott 3 WHERE beosztas=UPPER(’elado’); SQL> SELECT LENGTH(a_nev), SUBSTR(beosztas,2,4) 2 FROM alkalmazott; SQL> SELECT RPAD(a_nev,15,’_’),LPAD(beosztas,20), 2 LPAD(t_kod,8, ’.’) 3 FROM alkalmazott;
Karakteres függvények SQL> SELECT beosztas, LTRIM(beosztas,’ET’), 2 RTRIM(beosztas,’OTD’) 3 FROM alkalmazott; SQL> SELECT beosztas, REPLACE(beosztas,’EL’,’XY’), 2 TRANSLATE(beosztas,’EL’,’XY’) 3 FROM alkalmazott;
Numerikus függvények A numerikus függvények argumentuma és visszaadott értéke is numerikus. ABS(érték) Abszolútérték. CEIL(érték) A legkisebb olyan egész, amely nagyobb vagy egyenlő az értéknél. FLOOR(érték) A legnagyobb olyan egész, amely kisebb vagy egyenlő az értéknél. MOD(m, n) Az m / n egészosztás maradéka. POWER(érték, kitevő) Hatványozás. ROUND(érték [, n]) Kerekítés n tizedesjegyre. SIGN(érték) Előjel függvény. SQRT(érték) Négyzetgyök. TRUNC (érték [, n]) Csonkolás n tizedesjegyre.
Numerikus függvények SQL> SELECT ROUND(89.342,2), ROUND(51.659), 2 ROUND(73.856,-1) 3 FROM DUAL; SQL> SELECT TRUNC(89.342,2), TRUNC(51.659), 2 TRUNC(73.856,-1) 3 FROM DUAL; SQL> SELECT ABS(-128), SIGN(-8), POWER(2,3), 2 SQRT(99), MOD(9,2) 3 FROM DUAL; SQL> SELECT fizetes, fizetes/30, 2 CEIL(fizetes/30), FLOOR(fizetes/30) 3 FROM alkalmazott;
Az ORACLE dátum formátum • Az ORACLE a dátumokat belső numerikus formában tárolja • évszázad, év, hónap, nap, óra, perc, másodperc • A dátumok alapértelmezés szerinti megjelenítése a következő: DD-MON-YY • A SYSDATE olyan függvény, amely az aktuális dátumot és az időt adja eredményül. • A DUAL olyan segédtábla, amelyet akkor használunk, ha csak a szintakszis miatt van szükségünk táblanévre. SQL> SELECT SYSDATE 2 FROM DUAL;
Aritmetikai műveletek dátumokkal • Dátumhoz adott számú napot ad hozzá lehet adni, vagy ki lehet vonni, hogy dátum értéket kapunk eredményül. • Két dátum kivonható egymásból, ezáltal megkapjuk a két dátum közötti napok számát. • Dátumhoz adott számú órát ad hozzá lehet adni úgy, hogy az órák számát 24-gyel osztja. SQL> SELECT a_nev, belepes, belepes+14, 2 (SYSDATE-belepes)/365 3 FROM alkalmazott;
Dátum függvények Minden dátum függvény, a MONTHS_BETWEEN kivételével dátum típusú értéket ad vissza. MONTHS_BETWEEN(d1,d2) Két dátum közötti hónapok száma. ADD_MONTHS(dátum,n) n hónapot ad a dátumhoz. NEXT_DAY(dátum,’nap’) A megadott dátumot követő nap pl. ’FRIDAY’ dátuma. LAST_DAY(dátum) A hónap utolsó napja. ROUND (dátum [,’fmt’]) A dátumot kerekíti a formátumnak megfelelően. TRUNC(dátum [,’fmt’]) Csonkolja a dátumot a formátumnak megfelelően.
Dátum függvények SQL> SELECT a_nev, belepes, 2 MONTHS_BETWEEN(SYSDATE, belepes) 3 FROM alkalmazott; SQL> SELECT NEXT_DAY(SYSDATE,’FRIDAY’), 2 LAST_DAY(SYSDATE) 3 FROM DUAL; SQL> SELECT ROUND(SYSDATE,’MONTH’), 2 ROUND(SYSDATE,’YEAR’) 3 FROM DUAL; SQL> SELECT TRUNC(SYSDATE,’MONTH’), 2 TRUNC(SYSDATE,’YEAR’) 3 FROM DUAL;