1 SQL – Structured Query Language IBM fejlesztette ki 70-es években (SEQUEL) 1986-ban lett szabvány (SQL86) SQL86, SQL89, SQL92, SQL99, SQL3, SQL2003 DDL,

Slides:



Advertisements
Hasonló előadás
10. gyakorlat SQL SELECT.
Advertisements


„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
2 3 4 Connection DataReader Command MapConnection MapCommand MapDataReader Store Providers (e.g. SqlClient) Mapping provider Adattár (pl. SQL Server)
21 Years of Partnership and Innovation 1989 Citrix Systems founded 2010 Citrix signed licensing agreement with Microsoft for NT Server Introduced Independent.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Delphi programozás alapjai
SQL Structured Query Language
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
Árvai Zoltán Számalk Oktató központ.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
Neo4j bevezető Rácz Gábor
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
Adatbázis rendszerek II.
Adatbázisok-SQL Dr. Viczián Gergely (Dr. Török János V2.0)
Készítette: Sárközi Anikó
Adatbáziskezelés Horváth Ernő 1. Elérhetőségek Kiss Jenő Horváth Ernő Tanszéki honlap
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL 1 SEQUEL, Structured English Query Language: SQL ANSI, ISO: SQL86, SQL89, SQL92. Alap (entry), közbenső (intermediate), teljes (full) szint. A DDL.
SQL – OLAP 8. óra.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
SQL, adatdefiníció, adatok megváltoztatása, megszorítások
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Nézettáblák létrehozása, módosítása és törlése
Oracle – ORDMS lehetőségek UDT:- objektum típusok - kollekció típusok SQL> CREATE TYPE SZEMELY AS OBJECT ( 2 NEV VARCHAR2(20), 3 TEL VARCHAR2(14)); SQL>
VFP xBase adatkezelés - munkaterületek - DML - DDL - navigáció - eljárások, függvények - vezérlési szerkezetek - változók - képernyő IO - mintaprogram.
PHP VI Adatbázisok, MySQL
Alertet indíthat egy: SQL Server esemény (LOG) SQL Server performancia érték WMI events Alert végezhet: Operátor értesítést JOB indítás (válasz az eseményre)
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Egy GAZDAG HIBAJELENTÉS elég információt tartalmaz ahhoz, hogy AZONNALI LÉPÉSEKET lehessen tenni, a javítás érdekében.
DDL – Adatdefiníciós nyelv
Adatbázis adminisztrátori ismeretek
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Adatbázis-kezelés SQL-lel
var q = ( from c in dc.Customers where c.City == "London" where c.City == "London" select c).Including( c => c.Orders ); select c).Including(
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
SQL.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Web Application 1 Web Application 3 Web Application 2 Web Application 4 Shared Service Provider 1 Shared Service Provider 2 Excel Services1 Search1.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
5. gyakorlat Fleiner Rita.
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis rendszerek I
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
Adatbázisok SQL.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Előadás másolata:

1 SQL – Structured Query Language IBM fejlesztette ki 70-es években (SEQUEL) 1986-ban lett szabvány (SQL86) SQL86, SQL89, SQL92, SQL99, SQL3, SQL2003 DDL, DML, QL, DCL ( jogosultságkezelő és tranzakció-kezelő nyelv), … Nyelvjárások (Oracle, Sybase, DB2, Progress, MSSQL, mySQL, SQL Server, PostgreSQL, Access,…) Részben procedurális, részben deklaratív

2 Adatdefiniáló nyelv CREATE Adatbázis objektum létrehozása. Példa adatbázistábla definíciójára: create table ACCOUNTS ( AC_ID_PK number primary key, AC_STATUS number, AC_COUNTRY_ID number default 44, AC_CREATED date default sysdate, AC_ACCOUNT varchar2(50) ); Példa index definiálására: create index idx_case_ins on my_table (UPPER(empname));

3 Adatdefiniáló nyelv ALTER Adatbázis-objektum módosítása. Példa: ALTER TABLE STAFF_OPTIONS ADD SO_INSURANCE_PROVIDER Varchar2(35); ALTER TABLE STAFF_OPTIONS MODIFY SO_INSURANCE_PROVIDER Varchar2(35) DEFAULT 'ABC Ins';

4 Adatdefiniáló nyelv DROP Egy adatbázisbeli objektum megszüntetése. Példa: DROP table ACCOUNTS; DROP view BP_ACCOUNTS;

5 Lekérdezőnyelv A lekérdezés általános formája: SELECT [DISTINCT] select_list FROM table_list [WHERE conditions] [GROUP BY group_by_list] [HAVING search_conditions] [ORDER BY order_list [ASC | DESC] ] [FOR UPDATE for_update_options]

6 Lekérdezőnyelv Relációs algebrai műveletek kifejezhetők SQL-ben Szorzás: SELECT * FROM Beteg, Kezeles; Kiválasztás: SELECT * FROM suppliers WHERE (city = 'New York' and name = 'IBM') or (city = 'Newark'); Vetítés: SELECT DISTINCT city, state FROM suppliers;

7 Lekérdezőnyelv Egyesítés: select supplier_id from suppliers UNION select supplier_id from orders; Kivonás (például r(a,b)-s(a,b)): SELECT distinct r.a, r.b FROM r WHERE not exists (select * from s where r.a = s.a and r.b = s.b);

8 Lekérdezőnyelv A származtatott műveletek, és minden relációs algebrai kifejezés felírható SQL-ben. Összekapcsolás (equi-join): SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers, orders WHERE suppliers.supplier_id = orders.supplier_id; Külső összekapcsolás: select suppliers.supplier_id, suppliers.supplier_name, orders.order_date from suppliers, orders where suppliers.supplier_id = orders.supplier_id(+);

9 Lekérdezőnyelv r(a,b)  s(b) hányados kifejezése SQL-ben: r(a,b)  s(b)=  a (r)-  a (  a (r)  s-r)  a (r)  s =  r.a,s.b (r  s) select distinct r.a,s.b from r,s;  a (r)  s – r select distinct r.a,s.b from r r1, s s1 where not exists (select * from r r2 where r2.a=r1.a and s1.b=r2.b);  a (  a (r)  s – r) select distinct r.a from r r1, s s1 where not exists (select * from r r2 where r2.a=r1.a and s1.b=r2.b);  a (r)-  a (  a (r)  s-r) select distinct r2.a from r r2 where not exists (select * from r r1, s s1 where r2.a=r1.a and not exists (select * from r r3 where r3.a=r1.a and s1.b=r3.b));

10 Lekérdezőnyelv Speciális kiválasztási feltételek: Mintaillesztés: SELECT * FROM suppliers WHERE supplier_name like '%bob%'; SELECT * FROM suppliers WHERE supplier_name not like 'T%'; SELECT * FROM suppliers WHERE supplier_name like 'Sm_th'; SELECT * FROM suppliers WHERE supplier_name LIKE 'H%!%' escape '!';

11 Lekérdezőnyelv Nullérték lekérdezése: select * from suppliers where supplier_name IS NULL; Zárt intervallumhoz tartozás: SELECT * FROM suppliers WHERE supplier_id between 5000 AND 5010; SELECT * FROM orders WHERE order_date between to_date('2003/01/01', 'yyyy/mm/dd') AND to_date('2003/12/31', 'yyyy/mm/dd');

12 Lekérdezőnyelv Alkérdések használata Where részben IN – (multi)halmaznak eleme SELECT * FROM suppliers WHERE supplier_name in ( 'IBM', 'Hewlett Packard', 'Microsoft'); select * from all_tables tabs where tabs.table_name in (select cols.table_name from all_tab_columns cols where cols.column_name = 'SUPPLIER_ID');

13 Lekérdezőnyelv Maximum kiválasztása alkérdéssel select b1.fizetes from ber b1 where b1.fizetes >= all (select b2.fizetes from ber b2); Használható: all – az alkérdés minden értékére teljesül a feltétel (alapértelmezés, nem kell kiírni) any – az alkérdés legalább egy értékére teljesül a feltétel

14 Lekérdezőnyelv Aggregátorfüggvények – count, avg, max, min, sum SELECT COUNT(*) as "Number of employees" FROM employees WHERE salary > 25000; SELECT COUNT(DISTINCT department) as "Unique departments" FROM employees WHERE salary > 25000; SELECT SUM(DISTINCT salary) as "Total Salary" FROM employees WHERE salary > 25000; SELECT SUM(income - expenses) as "Net Income" FROM gl_transactions;

15 Lekérdezőnyelv SELECT MIN(salary) as "Lowest salary", MAX(salary) as "Highest salary" FROM employees; SELECT Avg(salary) as "Avg Salary" FROM employees WHERE salary > 25000;

16 Lekérdezőnyelv Csoportosítás, csoportok szűrése SELECT department, COUNT(*) as "Number of employees" FROM employees WHERE salary > GROUP BY department HAVING COUNT(*) > 10; SELECT department, MIN(salary) as "Lowest salary" FROM employees GROUP BY department HAVING MIN(salary) = 35000;

17 Lekérdezőnyelv Eredmény rendezése SELECT supplier_city, supplier_state FROM suppliers WHERE supplier_name = 'IBM' ORDER BY supplier_city DESC, supplier_state ASC; SELECT supplier_city FROM suppliers WHERE supplier_name = 'IBM' ORDER BY 1 DESC;

18 Lekérdezőnyelv Nézettábla (VIEW) használata áttekinthetőség ( összetett lekérdezés felbontása egyszerűbb kérdésekre) adatvédelem (oszlopok, sorok korlátozása) ellenőrzött adatbevitel fizikai helyet nem foglal (csak a lekérdezés definícióját tároljuk) mindenhol használható, ahol közönséges tábla használható CREATE VIEW sup_orders AS SELECT suppliers.supplier_id, orders.quantity, orders.price FROM suppliers, orders WHERE suppliers.supplier_id = orders.supplier_id and suppliers.supplier_name = 'IBM';

19 Lekérdezőnyelv CREATE OR REPLACE VIEW high_salary AS SELECT name, salary FROM emp WHERE salary > WITH CHECK OPTION; Az OR REPLACE rész miatt lecseréli a definíciót, ha már korábban létrehoztunk ilyen nevű nézettáblát. INSERT INTO high_salary VALUES ('Smith',50000); /* a sor bekerül az emp táblába */ INSERT INTO high_salary VALUES ('Smith',200); /* a sor nem kerül be az emp táblába, hibaüzenet*/

20 Adatkezelő nyelv INSERT Adatokat ad hozzá egy táblához. CREATE TABLE People ( surname VARCHAR2(25), firstname VARCHAR2(25) ); INSERT INTO People VALUES ('McKay','Alice'); INSERT INTO People (surname,firstname) VALUES ('Smith','John'); INSERT INTO People (surname) VALUES ('Ullman'); /* A firstname nullérték lesz! */ INSERT INTO People (firstname, surname) (select emp_first, emp_surname from Employees);

21 Adatkezelő nyelv UPDATE Módosítást hajt végre az adatokon. UPDATE suppliers SET name = 'HP' WHERE name = 'IBM'; UPDATE suppliers SET supplier_name = ( SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id) WHERE EXISTS (SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id);

22 Adatkezelő nyelv DELETE Adatokat töröl egy táblából. DELETE FROM suppliers WHERE supplier_name = 'IBM'; DELETE FROM suppliers WHERE EXISTS ( select customers.name from customers where customers.customer_id = suppliers.supplier_id and customers.customer_name = 'IBM' );

23 Jogosultságkezelő nyelv Jogok: select, insert, update, delete, alter, reference (megszorítás hivatkozhat a táblára), index grant select, insert, update, delete on suppliers to smith; grant all on suppliers to smith; grant select on suppliers to public; revoke delete on suppliers from anderson; revoke all on suppliers from public; Jogok továbbadásának joga: GRANT SELECT ON emp TO scott WITH GRANT OPTION; Visszavonáskor a továbbadott jogok is visszavonásra kerülnek

24 Kulcsok, megszorítások Elsődleges kulcs = azonosító (nullértéket nem tartalmazhat) 1 elsődleges kulcsot lehet defininiálni táblánként több oszlopból is állhat CREATE TABLE supplier (supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)); Megszűntethető, vagy ideiglenes ki/be kapcsolható ALTER TABLE supplier drop CONSTRAINT supplier_pk; ALTER TABLE supplier disable CONSTRAINT supplier_pk;

25 Idegen kulcsok A sorban szereplő adat egy másik táblában szereplő sor azonosítója (gyerek- szülő tábla). Idegen kulcs. Léteznie kell a hozzátartozó sornak a másik táblában. CREATE TABLE products (product_id numeric(10) not null, supplier_id numeric(10) not null, supplier_name varchar2(50) not null, CONSTRAINT fk_supplier_comp FOREIGN KEY (supplier_id, supplier_name) REFERENCES supplier (supplier_id, supplier_name)); Szülő tábla (szállító) sorának törlésével az azonosítót tartalmazó sorok a gyerek táblából ( termékek) is törlődnek a következő definíció esetén: CREATE TABLE products (product_id numeric(10) not null, supplier_id numeric(10) not null, CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier (supplier_id) ON DELETE CASCADE); Törölhető, ki/bekapcsolható ALTER TABLE products enable CONSTRAINT fk_supplier;

26 Másodlagos kulcsok Több oszlopcsoport is megadható azonosítás céljára CREATE TABLE supplier (supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name)); Törölhető, ki/bekapcsolható

27 Függőségek ellenőrzése CREATE TABLE suppliers (supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_id CHECK (supplier_id BETWEEN 100 and 9999)); CREATE TABLE suppliers (supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_name CHECK (supplier_name = upper(supplier_name)));

28 SQL programok készítése PL/SQL – programszerkezetek használata Feldolgozandó sorhalmazokhoz sormutatókat, kurzorokat definiálunk CREATE OR REPLACE Function FindCourse ( name_in IN varchar2 ) RETURN number IS cnumber number; CURSOR c1 IS SELECT course_number from courses_tbl where course_name = name_in; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; end if; close c1; RETURN cnumber; END;

29 SQL programok készítése Kurzorok attribútumai: %ISOPEN, %FOUND, %NOTFOUND, %ROWCOUNT Kurzorhoz tartozó sorok zárolhatók: CURSOR c1 IS SELECT course_number, instructor from courses_tbl FOR UPDATE OF instructor; A kurzor aktuális értéke módosítható, törölhető UPDATE courses_tbl SET instructor = 'SMITH' WHERE CURRENT OF c1; DELETE FROM courses_tbl WHERE CURRENT OF c1;

30 SQL programok készítése Vezérlő szerkezetek PL/SQL-ben CREATE OR REPLACE Function IncomeLevel ( name_in IN varchar2 ) RETURN varchar2 IS monthly_value number(6); ILevel varchar2(20); cursor c1 is select monthly_income from employees where name = name_in; BEGIN open c1; fetch c1 into monthly_value; close c1; IF monthly_value <= 4000 THEN ILevel := 'Low Income'; ELSIF monthly_value > 4000 and monthly_value <= 7000 THEN ILevel := 'Avg Income'; ELSIF monthly_value > 7000 and monthly_value <= THEN ILevel := 'Moderate Income'; ELSE ILevel := 'High Income'; END IF; RETURN ILevel; END;

31 SQL programok készítése select table_name, CASE owner WHEN 'SYS' THEN 'The owner is SYS' WHEN 'SYSTEM' THEN 'The owner is SYSTEM' ELSE 'The owner is another value' END from all_tables; A fenti CASE ekvivalens a következővel: IF owner = 'SYS' THEN result := 'The owner is SYS'; ELSIF owner = 'SYSTEM' THEN result := 'The owner is SYSTEM''; ELSE result := 'The owner is another value'; END IF;

32 SQL programok készítése Ciklusszervezés LOOP.... monthly_value := daily_value * 31;.... EXIT WHEN monthly_value > 4000; END LOOP; FOR Lcntr IN REVERSE LOOP.... LCalc := Lcntr * 31;.... END LOOP; WHILE monthly_value <= 4000 LOOP.... monthly_value := daily_value * 31;.... END LOOP;

33 SQL programok készítése Kurzor sorain végighaladó ciklus CREATE OR REPLACE Function TotalIncome ( name_in IN varchar2 ) RETURN varchar2 IS total_val number(6); cursor c1 is select monthly_income from employees where name = name_in; BEGIN total_val := 0; FOR employee_rec in c1 LOOP total_val := total_val + employee_rec.monthly_income; END LOOP; RETURN total_val; END;

34 SQL programok készítése Ugrás egy programrészre GOTO label_name; Label_name: {statements} Konstansok megadása LTotal constant numeric(8,1) := ; Változók definiálása kezdeti értékkel LType varchar2(10) := 'Example';

35 SQL programok készítése Függvények megadása (paraméter lehet IN, OUT, IN OUT) CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatype IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [function_name]; Eljárások megadása CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ] IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [procedure_name];

36 SQL programok készítése PL/SQL eljárások, függvények végrehajtása: EXEC statement; EXEC package.procedure; EXEC package.function(parameters);

37 SQL programok készítése Beépített függvények kategóriái Karakterfüggvények Matematikai függvények Dátumfüggvények Konverziós függvények Hibakezelő függvények Egyéb függvények

38 SQL programok készítése Karakterfüggvények: Ascii Convert Lower Soundex AsciiStr Decompose Lpad Substr Chr Dump Ltrim Translate Compose Initcap Replace Trim Concat Instr Rpad Upper Concat with || Length Rtrim VSize

39 SQL programok készítése Matematikai függvények AbsCovar_popMaxSqrt AcosCovar_sampMedianStdDev AsinCountMinSum AtanCume_DistModTan Atan2Dense_RankPowerTanh AvgExpRankTrunc (1) Bin_To_NumExtractRemainderTrunc (2) BitAndFloorRound (1) Var_pop CeilGreatestRound (2) Var_samp CorrLeastSignVariance CosLnSin CoshLogSinh (1) - numbers, (2) - dates)

40 SQL programok készítése Dátumfüggvények Add_MonthsLast_DayRoundTo_Date Current_DateLocalTimestampSessionTimeZoneTrunc Current_TimestampMonths_BetweenSysdateTz_Offset DbTimeZoneNew_TimeSysTimestamp From_TzNext_DayTo_Char Hónap utolsó napja: last_day(to_date('2004/02/03', 'yyyy/mm/dd')) értéke: Feb 29, 2004 Dátum karakterré alakítása: to_char(sysdate, 'Month DD, YYYY') értéke: 'March 05, 2007'

41 SQL programok készítése Konverziós függvények Bin_To_NumNumToDSIntervalTo_DSIntervalTo_Single_Byte CastNumToYMIntervalTo_LobTo_Timestamp CharToRowidTo_CharTo_Multi_ByteTo_Timestamp_Tz From_TzTo_ClobTo_NClobTo_YMInterval HexToRawTo_DateTo_Number Általános konverziós függvény: cast( '22-Aug-2003' AS varchar2(30) )

42 SQL programok készítése Hibakezelő függvények SQLCODE SQLERRM Egyéb függvények BFilename DecodeNVL2UserEnv Cardinality Group_IDSys_Context Case StatementNANVLUid CoalesceNVLUser

43 SQL programok készítése Néhány fontosabb függvény: Nullértékek helyettesítése: select NVL(supplier_city, 'n/a') from suppliers; Értékek cseréje, attól függően, hogy nullérték-e vagy nem: select NVL2(supplier_city, 'Completed', 'n/a') from suppliers; A lista első nem nullértéke: SELECT coalesce( address1, address2, address3 ) result FROM suppliers;

44 SQL programok készítése Fontosabb Oracle rendszertáblák ALL_CATALOG ALL_CONSTRAINTS ALL_TABLES ALL_TAB_COLUMNS ALL_TRIGGERS ALL_USERS ALL_VIEWS TABLE_PRIVILEGES

45 SQL programok készítése Triggerek használata Adatbázis események bekövetkezésekor automatikusan elinduló eljárások A Triggerek típusai: Insert Trigger: BEFORE INSERT Trigger AFTER INSERT Trigger Update Trigger: BEFORE UPDATE Trigger AFTER UPDATE Trigger Delete Trigger: BEFORE DELETE Trigger AFTER DELETE Trigger A triggerek ki/bekapcsolhatók, megszüntethetők: ALTER TRIGGER orders_before_insert DISABLE; DROP TRIGGER orders_before_insert;

46 SQL programok készítése Például After Insert trigger megadása: CREATE or REPLACE TRIGGER trigger_name AFTER INSERT ON table_name [ FOR EACH ROW ] [ WHEN feltétel ] DECLARE -- változók deklarálása BEGIN -- a trigger utasításai EXCEPTION WHEN kivételkezelés END;

47 SQL programok készítése CREATE OR REPLACE TRIGGER orders_after_update AFTER UPDATE ON orders FOR EACH ROW DECLARE v_username varchar2(10); BEGIN SELECT user INTO v_username FROM dual; INSERT INTO orders_audit ( order_id, quantity_before, quantity_after, username ) VALUES ( :new.order_id, :old.quantity, :new.quantity, v_username ); END;

48 Tranzakciókezelés SQL-ben Set Transaction SET TRANSACTION READ ONLY; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION USE ROLLBACK SEGMENT name; Commit A változtatások véglegesítése, mások számára láthatóvá tétele. Rollback Az összes változtatás érvénytelenítése egy adott pontig. ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name]; Lock Table Táblák különböző finomságú zárolása LOCK TABLE tables IN lock_mode MODE [NOWAIT]; Zárolási módok: ROW SHARE ROW EXCLUSIVE SHARE UPDATE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE