SQL Structured Query Language

Hasonló dokumentumok
Tranzakciókezelés PL/SQL-ben

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Bevezetés: az SQL-be

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

B I T M A N B I v: T M A N

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis-kezelés. Harmadik előadás

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Összefoglaló. <variable_name> [IN OUT IN OUT] <data_type> [:=<default_value>] ... <label_name>: <statements>... GOTO <label_name>;...

BEVEZETÉS Az objektum fogalma

Adatbázis-kezelés, információs-rendszerek

Haladó DBMS ismeretek 1

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis használat I. 5. gyakorlat

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

SQL parancsok feldolgozása

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbázisok* tulajdonságai

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatbázisok elmélete 10. előadás

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

PL/SQL (folytatás) Kurzorok, függvények, eljárások

Triggerek. Olyan névvel ellátott adatbázisobjektumok, amelyek eseményorientált feldolgozást tesznek lehetővé

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

INTEGER egész típusú érték megadása, hozzá hasonló, de számábrázolási tartományában eltérő típus még a SMALLINT, szinonimája a DECIMAL

SQL DDL-1: táblák és megszorítások

SQL DDL-2 (aktív elemek) triggerek

Adatbázisok elmélete 9. előadás

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Az Oracle leggyakrabban használt függvényei

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Együttes hozzárendelés

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázis rendszerek SQL nyomkövetés

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Készítette: Szabóné Nacsa Rozália

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

B I T M A N B I v: T M A N

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok elmélete 9. előadás

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázisok I A relációs algebra

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)


Adatbázis Rendszerek II. 2. Gyakorló környezet

Adatbázis Rendszerek II. 8. Gyakorló környezet

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Indexek és SQL hangolás

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Elemi alkalmazások fejlesztése IV.

Kalmár György Adatbázis alapú rendszerek

Adatbázisok I. Az SQL nyelv

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázisok tavaszi félév Vizsgatételsor

SQL/PSM kurzorok rész

Relációsémák létrehozása SQL nyelvben

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázisban tárolt kollekciók

A könyv tartalomjegyzéke

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Kivételkezelés 2. SQLCODE lehetséges értékei:

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

az n kódú karakter az adott kódkészletben CONCAT(str, str) LOWER(str) UPPER(str) INITCAP(str)

LBRA6i integrált rendszer

Lekérdezések az SQL SELECT utasítással

Átírás:

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 1

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)); 2

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'; 3

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

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] 5

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 6 FROM suppliers;

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); 7

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(+); 8

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)); 9

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 '!'; 10

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'); 11

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'); 12

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 13

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; 14

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; 15

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

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; 17

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'; 18

Lekérdezőnyelv CREATE OR REPLACE VIEW high_salary AS SELECT name, salary FROM emp WHERE salary > 10000 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*/ 19

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); 20

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); 21

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' ); 22

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 23

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; 24

Idegen kulcsok A sorban szereplő adat egy másik táblában szereplő sor azonosítója (gyerekszü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; 25

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ó 26

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))); 27

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; 28

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; 29

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 <= 15000 THEN ILevel := 'Moderate Income'; ELSE ILevel := 'High Income'; END IF; RETURN ILevel; END; 30

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; 31

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 1..15 LOOP... LCalc := Lcntr * 31;... END LOOP; WHILE monthly_value <= 4000 LOOP... monthly_value := daily_value * 31;... END LOOP; 32

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; 33

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) := 8363934.1; Változók definiálása kezdeti értékkel LType varchar2(10) := 'Example'; 34

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]; 35

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); 36

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 37

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 38

SQL programok készítése Matematikai függvények Abs Covar_pop Max Sqrt Acos Covar_samp Median StdDev Asin Count Min Sum Atan Cume_Dist Mod Tan Atan2 Dense_Rank Power Tanh Avg Exp Rank Trunc (1) Bin_To_Num Extract Remainder Trunc (2) BitAnd Floor Round (1) Var_pop Ceil Greatest Round (2) Var_samp Corr Least Sign Variance Cos Ln Sin Cosh Log Sinh (1) - numbers, (2) - dates) 39

SQL programok készítése Dátumfüggvények Add_Months Last_Day Round To_Date Current_Date LocalTimestamp SessionTimeZone Trunc Current_Timestamp Months_Between Sysdate Tz_Offset DbTimeZone New_Time Sys Timestamp From_Tz Next_Day To_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' 40

SQL programok készítése Konverziós függvények Bin_To_Num NumToDSInterval To_DSInterval To_Single_Byte Cast NumToYMInterval To_Lob To_Timestamp CharToRowid To_Char To_Multi_Byte To_Timestamp_Tz From_Tz To_Clob To_NClob To_YMInterval HexToRaw To_Date To_Number Általános konverziós függvény: cast( '22-Aug-2003' AS varchar2(30) ) 41

SQL programok készítése Hibakezelő függvények SQLCODE SQLERRM Egyéb függvények BFilename Decode NVL2 UserEnv Cardinality Group_ID Sys_Context Case Statement NANVL Uid Coalesce NVLUser 42

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; 43

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 44

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; 45

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; 46

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; 47

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 48