streda, 23 júl 2014 14:32 Written by 2596 times
Rate this item
(1 Vote)

SQL - užitočné pohľady pre databázového programátora časť 1.

Predstavíme vám niekoľko užitočných pohľadov pre tabuľky, obmedzenia (constraints) a odkazy (referencie) na tabuľky. Určite sa tieto pohľady môžu zísť vývojárovi pod ORACLE databázami. Pohľady sú ladené v prostredí ORACLE 11g.

Máme v schéme MOJASCHEMA tabuľku MOJATABULKA.

Pohľad, ktorý zobrazí tabuľky, na ktoré sa odkazuje aktuálna tabuľka MOJATABULKA:

SELECT 
    SRC_CC.OWNER AS SRC_OWNER, 
    SRC_CC.TABLE_NAME AS SRC_TABLE, 
    SRC_CC.COLUMN_NAME AS SRC_COLUMN,
    DEST_CC.OWNER AS DEST_OWNER, 
    DEST_CC.TABLE_NAME AS DEST_TABLE, 
    DEST_CC.COLUMN_NAME AS DEST_COLUMN,
    C.CONSTRAINT_NAME
FROM ALL_CONSTRAINTS C
    INNER JOIN ALL_CONS_COLUMNS DEST_CC ON C.R_CONSTRAINT_NAME = DEST_CC.CONSTRAINT_NAME AND C.R_OWNER = DEST_CC.OWNER
    INNER JOIN ALL_CONS_COLUMNS SRC_CC ON C.CONSTRAINT_NAME = SRC_CC.CONSTRAINT_NAME AND C.OWNER = SRC_CC.OWNER
WHERE C.CONSTRAINT_TYPE = 'R'
    AND DEST_CC.OWNER = 'MOJASCHEMA'
    AND DEST_CC.TABLE_NAME = 'MOJATABULKA'
ORDER BY SRC_CC.TABLE_NAME;

 

Pohľad, ktorý zobrazí tabuľky, ktoré sa odkazujú na tabuľku MOJATABULKA:

SELECT
    A.OWNER||'.'||A.TABLE_NAME "REFERENCED TABLE",
    B.OWNER||'.'||B.TABLE_NAME "REFERENCED BY",
    B.CONSTRAINT_NAME "FOREIGN KEY"
FROM ALL_CONSTRAINTS A, ALL_CONSTRAINTS B 
WHERE 
    B.CONSTRAINT_TYPE = 'R'
    AND A.CONSTRAINT_NAME = B.R_CONSTRAINT_NAME 
    AND B.TABLE_NAME='MOJATABULKA'  
ORDER BY A.OWNER||'.'||A.TABLE_NAME; 

 

Pohľad, ktorý zobrazí všetky objekty, v ktorých sa tabuľka MOJATABULKA vyskytuje - je ich súčasťou:

 

SELECT *
FROM ALL_DEPENDENCIES
WHERE REFERENCED_TYPE = 'TABLE' 
    AND REFERENCED_OWNER = 'MOJASCHEMA' 
    AND REFERENCED_NAME IN ('MOJATABULKA')
ORDER BY NAME; 

 

Dúfam, že tieto pohľady budú nápomocné programátorom/vývojárom v prostredí ORACLE 11g.

S pozdravom.

 

Last modified on streda, 23 júl 2014 15:17
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre