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.

Slides:



Advertisements
Hasonló előadás
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.
Advertisements

10. gyakorlat SQL SELECT.
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Ablak módszer Rózsa Győző
Analitikus függvények
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Analitikus, statisztikai és szélsőérték fv-k Rózsa Győző
Adatbázis rendszerek I
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
2012. tavaszi félév Vitéz Gergely. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
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
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ő.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
2012. március 6. Rózsa Győző Interaktív környezet március Rózsa Győző
Többtáblás lekérdezések, allekérdezések Rózsa Győző
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
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 alapú rendszerek
Készítette: Sárközi Anikó
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.
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ő.
ORACLE ORDBMS adminisztrációs feladatok 6. rész dr. Kovács László 2004.
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ő.
Részletező csoportosítások Rózsa Győző
ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Nézettáblák létrehozása, módosítása és törlése
Nézettáblák, felső-N analízis Március 20. Rózsa Győző.
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;
Adatbázis adminisztrátori ismeretek
2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,
ADATBÁZIS HASZNÁLAT I. 4. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
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 Véső Tamás Véső Tamás OE­NIK / 29.
Részletező csoportosítások Hári Veronika
Részletező csoportosí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 használat I. 2. gyakorlat.
ADATBÁZIS HASZNÁLAT I. 3. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Adatbázisok használata 2. gyakorlat Rózsa Győző
Adatbázis-kezelés SQL-lel
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
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
PL/SQL alapok Adatbázis-kezelés.
Adatbázis rendszerek II
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
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.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Adatbázis alapú rendszerek
PL/SQL gyakorlás Kalmár György.
Triggerek gyakorlás.
Triggerek Kalmár György.
Adatbázis-kezelés (PL/SQL)
Előadás másolata:

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 minimum elégséges érdemjegynek!

 Hivatkozhatunk egy másik PL/SQL változó, tábla, mező típusára, így típus változás esetén a PL/SQL blokk deklarációját nem kell módosítani.  DECLARE  v_oszloptip tabla.oszlop%TYPE;  v_valttip v_oszloptip%TYPE;  v_sortip tabla%ROWTYPE;  BEGIN  …  Példa: Töltsük be a KING dolgozó fizetését egy hivatkozott típusú változóba, majd írassuk ki a konzolra!

 SET SERVEROUTPUT ON  DECLARE  fiz emp.sal%TYPE;  BEGIN  SELECT sal  INTO fiz  FROM emp  WHERE upper(ename) = 'KING';   DBMS_OUTPUT.PUT_LINE('A főnök fizetése: ' || fiz || '$');  end;  /

 DECLARE  TYPE tipusnev IS RECORD OF  (oszlop1 tipus1,  oszlop2 tipus2)  [NOT NULL]  INDEX BY BINARY_INTEGER;  valtozonev tipusnev;  BEGIN  …  Bővítsük az előző szkriptet úgy, hogy egy rekord típusba lekérjük a dolgozó kódját és nevét is!

 DECLARE  TYPE dolgtip IS RECORD  (empno NUMBER,  ename VARCHAR2(200),  sal NUMBER);   dolgfiz dolgtip;  BEGIN  SELECT empno,ename,sal  INTO dolgfiz  FROM emp  WHERE upper(ename) = 'KING';   DBMS_OUTPUT.PUT_LINE(dolgfiz.ename || '(' || dolgfiz.empno || ') fizetése: ' || dolgfiz.sal || '$');  END;  /

 DECLARE  TYPE tipusnev IS TABLE OF  tipus  [NOT NULL]  INDEX BY BINARY_INTEGER;  valtozonev tipusnev;  BEGIN  …

 Soronként dolgozhatjuk fel velük egy lekérdezés eredményét  Explicit - felhasználó által generált kurzor  DECLARE  CURSOR kurzor IS  SELECT * FROM emp;  BEGIN  …

 SET SERVEROUTPUT ON  DECLARE  CURSOR kurzor IS  SELECT * FROM emp;  sor kurzor%ROWTYPE;  BEGIN  OPEN kurzor; --megnyitjuk  LOOP  FETCH kurzor INTO sor; --beolvasunk egy sort  EXIT WHEN kurzor%NOTFOUND; --kilépünk a ciklusból  dbms_output.put_line(sor.ename);   END LOOP;  CLOSE kurzor; --ne felejtsük el lezárni  dbms_output.put_line('vége');  END;  /

 FOR ciklussal egyszerűbben is feldolgozhatjuk  SET SERVEROUTPUT ON  DECLARE  CURSOR kurzor IS  SELECT * FROM emp;  BEGIN  FOR sor IN kurzor  LOOP  dbms_output.put_line(sor.ename);  END LOOP;  dbms_output.put_line('vége');  END;  /

 Megadhatjuk magát a lekérdezést is, így rejtett kurzort tudunk használni  SET SERVEROUTPUT ON  BEGIN  FOR sor IN (SELECT * FROM emp)  LOOP  dbms_output.put_line(sor.ename);  END LOOP;  dbms_output.put_line('vége');  END;  /

 18 karakter hosszú  Az adatbázisban minden tábla minden rekordjának van egy ilyen EGYEDI azonosítója  Egyértelműen tudunk hivatkozni vele egy tábla egy bizonyos sorára  (akkor is ha értékek alapján duplikátum lenne, pl. egy elsődleges kulcs nélküli emp táblában 2x szerepelne a KING)  Csináljunk egy duplikált táblát

 create table dolg as select * from emp;  insert into dolg select * from emp;  select rowid, dolg.* from dolg;  select empno, min(rowid) minid from dolg  group by empno  having count(*)> 1;

 select minid from  (select empno, min(rowid) minid from dolg  group by empno  having count(*)> 1);  delete from dolg  where rowid in  (select minid from  (select empno, min(rowid) minid from dolg  group by empno  having count(*)> 1));

 FOR UPDATE záradék  Zárolja a lekérdezés eredményében található sorokat, így azokat szabadon módosíthatjuk, törölhetjük  CURRENT OF feltétel  A kurzor aktuális sorára hivatkozhatunk a segítségével

 Hozzon létre egy dolgozó nevű táblát az emp táblának a felhasználó által megadott telephelyű dolgozóiból, változtassa meg az mgr oszlop nevét partner névre, törölje a tartalmát, és töltse fel az alábbi módon értékkel:  Két dolgozó partnere lehet egymásnak, ha még egyiküknek sincs partnere, és a felhasználó által megadott értéknél nem több a fizetésük különbsége. A partnerek azonosítói szerepeljenek egymás partner oszlopában. (Senki önmagának nem lehet partnere, és a partnerség szimmetrikus tulajdonság, azaz ha A partnere B, akkor B partnere A)

 set serveroutput on;  set verify on;  drop table dolgozo;  create table dolgozo as select * from emp;  alter table dolgozo  rename column mgr to partner;

 Minta current of-ra  declare  cursor kurzor1 is select * from dolgozo for update;  begin  for rekord1 in kurzor1  loop  update dolgozo  set partner = 0  where current of kurzor1;  end loop;  end;  /

 accept kulonbseg prompt 'A legnagyobb fizetés különbség: ';  declare  cursor kurzora is select * from dolgozo for update;  cursor kurzorb is select * from dolgozo for update;  rekorda kurzora%rowtype;  rekordb kurzorb%rowtype;  kul number;  begin  open kurzora;  loop  fetch kurzora into rekorda;  exit when kurzora%notfound;  if rekorda.partner=0 then  open kurzorb;  loop  fetch kurzorb into rekordb;  exit when kurzorb%notfound;

 if rekordb.partner=0 and rekorda.empno<>rekordb.empno  then  kul:= abs( (rekorda.sal+nvl(rekorda.comm,0))-  (rekordb.sal+nvl(rekordb.comm,0)));  if (kul<&kulonbseg) then  update dolgozo  set partner=rekorda.empno  where current of kurzorb;  update dolgozo  set partner=rekordb.empno  where current of kurzora;  close kurzorb; open kurzorb;  close kurzora; open kurzora;  exit;  end if;  end loop;  close kurzorb;  end if;  end loop;  close kurzora;  commit;  end;  /

 Ellenőrzés:  select empno, ename, partner, sal+ nvl(comm,0) as jov from dolgozo order by ename;  ZH-ban új sorokat is kell beszúrni a teszteléshez. Csak vége lett 

Köszönöm a figyelmet! Pénteken délután 17:00-tól konzultáció Igény szerint ma délután is