CAPITOLUL 13
                                       
   
   
Management-ul de tabela si Dictionarul de Date

   
   
   In acest capitol secund al Limbajului de Definire a Datelor vom vedea
   comenzile pentru modificarea si mutarea tabelelor si constrangerilor
   lor. Deasemenea, vom vedea cum informatii despre baza de date pot fi
   extrase din Dictionarul de Date.
   
  Modificarea unei tabele
  
   
   
    Folositi comanda ALTER TABLE pentru a schimba definitia unei tabele.
   
   Sintaxa:

 ALTER TABLE nume-tabela
 [ ADD        ](specificator coloana[constrangere de coloana])[ENABLE clauza ]
 [MODIFY      ]                                               [DISABLE clauza]
 [DROP optiuni]

    Clauza ADD
    
   
   
    Folositi cuvantul cheie ADD pentru a adauga o coloana si/sau
   constran- geri pentru o tabela existenta. Pentru a adauga o coloana
   tabelei EMP care va tine numele sotului angajatului, introduceti:

       ALTER TABLE EMP
       ADD (SPOUSES_NAME CHAR (10));


   
   
   Table altered.
   
   Pentru a vedea descrierea tabelei revizuite, introduceti:

        DESCRIBE EMP;


   
   
   Pentru a adauga o constrangere de tabela unei tabele existente, care
   specifi- ca daca salariul lunar nu trebuie sa depaseasca 5000$,
   introduceti:

         ALTER TABLE EMP
         ADD(CHECK(SAL ,/pre>



    Clauza MODIFY
    
    


      Folositi cuvantul cheie MODIFY pentru a modifica definitia unei coloane
 existente.

      ALTER TABLE nume
      MODIFY (tip coloana [NULL])



      Pentru a schimba lungimea lui ENAME la 25 de caractere, introduceti :

      ALTER TABLE EMP
      MODIFY (ENAME CHAR (25));



      Table altered.

      DESCRIBE EMP;


      Sunt 4 schimbari pe care nu le puteti face
    1. Nu puteti schimba o coloana continand null-uri din NULL in NOT
       NULL.
    2. Nu puteti adauga o noua coloana care este NOT NULL. Faceti-o null,
       um- pleti-o complet si apoi schimbati-o in NOT NULL.
    3. Nu puteti sa scadeti dimensiunea unei coloane sau sa-i schimbati
       tipul de date, numai daca nu contine date.
    4. Nu puteti folosi optiunea MODIFY pentru a defini constrangeri pe o
       coloana exceptand NULL/NOT NULL.


 Pentru a modifica alte constrangeri trebuie sa le eliminati si apoi sa le a-
 daugati specificand modificarile.


    Clauza DROP
    


      Folositi clauza DROP pentru a muta o constrangere din alta tabela.



 Sintaxa:

 ALTER TABLE nume tabela
 DROP                    [CONSTRAINT nume constrangere  ] [CASCADE]
                         [PRIMARY KEY                   ]
                         [UNIQUE (coloana, coloana, ...)]



 De exemplu:

       ALTER TABLE EMP
       DROP CONSTRAINT EMP_MGR;

       ALTER TABLE EMP
       DROP PRIMARY KEY;


      Optiunea CASCADE (in clauza DROP)
      


      Optiunea CASCADE a clauzei DROP face ca orice constrangere dependenta
 sa fie deasemenea eliminata.



 De exemplu:

       ALTER TABLE DEPT
       DROP PRIMARY KEY CASCADE;


 ar putea deasemenea sa faca ca constrangerea chaii exetrne din EMP>DEPTNO sa
 fie eliminata.




    Clauza ENABLE/DISABLE
    


      Aceasta clauza a comenzii ALTER TABLE permite constrangerilor sa fie fa-
 cute posibile sau dezactivate fara a le elimina sau recrea.



 Sintaxa:

 [DISABLE]  [ UNIQUE (coloana, coloana, ...) ]   [CASCADE]
 [ENABLE ]  [ PRIMARY KEY                    ]
            [ CONSTRAINT nume constrangere   ]



 Ca si la clauza DROP, adaugarea cuvantului cheie CASCADE semnifica ca con-
 strangerile dependente sunt deasemenea afectate.



 De exemplu:

      ALTER TABLE DEPT
      DISABLE CONSTRAINT DEPT_PRIM CASCADE;





  Alte comenzi LDD
  


    Eliminarea unei tabele
    


      Pentru a sterge definitia unei tabele ORACLE, folositi comanda DROP
 TABLE.



 Sintaxa:

   DROP TABLE nume tabela [CASCADE CONSTRAINTS]



 De exemplu:

   DROP TABLE EMP;



      Stergerea unei tabele duce la pierderea tuturor datelor din ea si a tu-
 turor indecsilor asociati ei. Optiunea CASCADE CONSTRAINTS va sterge deaseme-
 nea referirile la constrangerile de integritate dependente.

        Note:
     * Toate datele vor fi deasemenea sterse din tabela.
     * Orice VIEWS sau SYNONYMS vor ramane, dar vor deveni invalide.
     * Orice tranzactii nerezolvate sunt realizate.
     * Numai creatorul tabelei sau DBA poate sa o stearga.
   
    Comanda COMMENT
    


      Folositi comanda COMMENT pentru a insera un comentariu pana la 255 de
 caractere, despre o tabela sau coloana, in dictionarul de date.



 Pentru a adauga un comentariu unei tabele numita EMP, introduceti:

   COMMENT ON TABLE EMP IS 'Employee Information';



 Pentru a adauga un comentariu pe coloana EMPNO in tabela EMP, introduceti:

   COMMENT ON COLUMN EMP.EMPNO IS 'Unique employee number';



 Pentru a sterge un comentariu, emiteti comanda COMMENT fara un comentariu:

   COMMENT ON COLUMN EMP.EMPNO IS '';
,/pre>


 Pentru a vedea comentariul, selectati coloana COMMENTS din una din vederile
 dictionarului:ALL_COL_COMMENTS sau USER_COL_COMMENTS. Dictionarul de Date
 este acoperit mai tarziu in acest capitol.


    Comanda RENAME
    


      Comanda RENAME este folosita de creatorul lui TABLES, VIEWS si SYNONYMS
 pentru a scimba numele obiectului bazei de date.



 Pentru a redenumi un obiect al bazei de date sintaxa este:

      RENAME vechi TO nou;



  Pentru a redenumi tabela EMP in EMPLOYEE, introduceti:

      RENAME EMP TO EMPLOYEE;



  Pentru a redenumi tabela SALGRADE, introduceti:

      RENAME SALGRADE TO EMPLOYEE_GRADES;



  Este important de notat ca orice aplicatii/programe/rapoarte care se refera l
a obiecte ce
  au fost redenumite, trebuie amendate.

    Comanda TRUNCATE TABLE
    


      Aceasta comanda va permite sa stergeti toate liniile dintr-o tabela. No-
 tati ca comanda DELETE poate deasemenea realiza aceasta ca o parte a tran-
 zactiei de manipulare a datelor (acoperita in capitolul urmator), dar comanda
 TRUNCATE TABLE umple o tabela mai eficient ca o actiune de definire de date,
 pana cand nu este retinuta nici o informatie de rollback.



 Sintaxa:

     TRUNCATE TABLE nume tabela [REUSE STORAGE]



 Optiunea REUSE STORAGE pastreaza spatiul din liniile sterse pentru reutiliza-
 rea tabelei. Implicit, acest spatiu este eliberat.





  Dictionarul de Date Oracle
  



      Dictionarul de Date este una din partile cele mai importante ale lui
 ORACLE RDBMS. Consta dintr-un set de tabele si vederi care furnizeaza un ghid
 de referinta accesibil doar la citire, despre baza de date. Dictionarul de
 Date va va spune:
     * numele utilizatorilor ORACLE
     * drepturile si privilegiile care le-au fost acordate
     * numele obiectelor bazei de date (tabele, vederi, indecsi,
       sinonime,sec- vente,...)
     * constrangeri aplicate tabelei
     * informatii de revizie, ca: cine a accesat si actualizat obiectele
       bazei de date specificate.


 Dictionarul de Date este creat cand este creata baza de date. Oricand baza de
 date este in operatii, Dictionarul de Date este actualizat de ORACLE RDBMS.



      Dictionarul de Date este o referinta pentru toti utilizatorii bazei de
 date. Este o sursa valoroasa de informatii pentru utilizatori, proiectanti de
 aplicatii si DBA. Dictionarul de Date este deasemenea critic pentru operatia
 ORACLE RDBMS, care il reaseaza pentru a inregistra si verifica informatii
 despre baza de date.


    Accesul la Dictionarul de Date
    
      Utilizatori
      


 Accesul la obiectele Dictionarului de Date este prin SQL. Declaratiile
 SELECT pot fi folosite pentru a cere informatii din Dictionarul de Date.

      RDBMS
      


 Nici un utilizator nu ar trebui sa schimbe vreodata (insereze, actualizeze
 sau stearga) nici o linie sau obiect in Dictionarul de Date, este probabil sa
 compromita integritatea datelor. RDBMS actualizeaza automat Dictionarul de
 Date pentru a reflecta schimbarile structurii bazei de date, permisiuni, re-
 vizii si alte date. In timpul operatiei bazei de date, RDBMS citeste dease-
 menea Dictionarul de Date pentru a descoperi obiectele care exista si ca uti-
 lizatorii sa aiba acces la ele.




    Tabelele si vederile Dictionarului de Date
    


      Tabele
      


      Baza Dictionarului de Date sau fundamentul tabelelor sunt primele o-
 biecte ce trebuie create in baza de date, pentru ca ele trebuie sa fie pre-
 zente pentru toate obiectele ce trebuie create. Tabelel Dictionarului de Date
 sunt create automat de declaratia SQL CREATE DATABASE si nu sunt in posesia
 utilizatorului SYS. Tabelele de baza sunt rareori accesate direct, deoarece
 informatia din ele nu este usor de inteles.

      Vederi
      


      Vederile Dictionarului de Date (tabele virtuale - acoprite in capitolul
 15) contin informatii intr-o forma care este usor de inteles pentru utiliza-
 tor. Accesul public la Dictionarul de Date este dat prin vederi mai degraba
 decat prin tabele de baza. SYS poseda deasemenea vederile Dictionarului
 de Date.


      Vederile au fost numite pentru a reflecta tipul de utilizare dorit. Ve-
 derile sunt clasificate in 3 grupe distingandu-se intre ele prin prefixele
 USER, ALL si DBA.


      Cele trei clase de vederi sunt:

          USER_xxxxx
          
   Obiectele posedate de utilizator pot fi accesate. De e- exemplu,
          vederile cu acest prefix permit utilizatorului sa afiseze
          informatii despre tabelele create de utiliza- tor si
          privilegiile acordate de utilizator.
          ALL_xxxxx
          
   Utilizatorii pot accesa obiecte la care le-au fost permise drepturile
          de acces, in plus fata de obiectele pe care le poseda.
          DBA_xxxxx
          
   Pentru utilizare de catre utilizatori cu privilegiu DBA - pot accesa
          orice obiect in baza de date.
   


      Unele dintre vederile Dictionarului de Date nu utilizeaza prefixele lis-
 tate mai sus. Aceste vederi includ:

          DICTIONARY
          
   Listeaza toate tabelele, vederile, Dictionarului de Date, accesibile
          utilizatorului.
          DICT_COLUMNS
          
   Listeaza coloanele in dictionarul obiectelor ac- cesibile
          utilizatorului.
          CONSTRAINT_DEFS
          
   Listeaza toate definitiile de constrangeri intro- duse pentru tabelele
          accesibile utilizatorului.
          CONSTRAINT_COLUMNS
          
   Listeaza toate coloanele care sunt accesibile u- tilizatorului curent
          si numite in definitiile constrangerilor.
   
    Vederea DICTIONARY
    


      DICTIONARY listeaza toate obiectele Dictionarului de Date accesibile u-
 tilizatorului cu o scurta descriere a obiectului.



 Urmatoarea declaratie SQL afiseaza continutul tabelei DICTIONARY :

         SELECT   *
         FROM  DICTIONARY;



 Multe din vederile Dictionarului de Date au nume lung. Sinonimele publice au
 fost furnizate, ca abreviatii, pentru accesul convenabil la unele din cele
 mai comune vederi ale Dictionarului de Date utilizator.

  Numele Tabelei                     Comentarii
  --------------                     ----------

  ALL_CATALOG                    Toate tabelele, vederile, sinonimele, secven-
                                 tele accesibile utilizatorului

  ALL_COL_COMMENTS               Comentarii pe coloanele tabelelor si vederi-
                                 le accesibile

  ALL_COL_PRIVS                   Permisiuni pe coloanele pentru care utiliza-
                                  torul este "grantor", "grantee", proprietar,
                                  sau un rol posibil sau PUBLIC este "grantee"

  ALL_COL_PRIVS_MADE              Permisiuni pe coloanele pentru care utiliza-
                                  e proprietar sau "grantor"

  ALL_COL_PRIVS_RECD              Permisiuni pe coloanele pentru care utiliza-
                                  torul, PUBLIC sau rolul posibil este "gran-
                                  tee"

  ALL_CONSTRAINTS                 Definitii de constrangeri pe tabele accesi-
                                  bile

  ALL_CONS_COLUMNS                Informatii despre coloanele accesibile in
                                  definitiile de constrangeri

  ALL_DB_LINKS                    Legaturile bazei de date accesibile utiliza-
                                  torului

  ALL_DEF_AUDIT_OPTS              Optiuni de revizuire pentru noile obiecte
                                  create

  ALL_DEPENDENCIES                Dependente dinspre si inspre obiectele acce-
                                  sibile utilizatorului

  ALL_ERROR                       Erorile curente pe obiectele stocate la care
                                  utilizatorul este permis sa creeze

                          (pag. 13-13)

  ALL_INDEXES                     Descrierea indecsilor pe tabelele accesibile
                                  utilizatorului

  ALL_IND_COLUMNS                 Coloanele cuprinzand indecsi pe tabele acce-
                                  sibile

  ALL_OBJECTS                     Obiectele accesibile utilizatorului

  ALL_SEQUENCES                   Descrierea SEQUENCE-urilor accesibile utili-
                                  zatorului

  ALL_SNAPSHOTS                   Instantanee la care poate privi utilizatorul

  ALL_SOURCE                      Sursa curenta a obiectelor create pe care u-
                                  tilizatorul are permisiunea sa le creeze

  ALL_SYNONYMS                    Toate sinonimele accesibile utilizatorului

  ALL_TABLES                      Descrierea tabelelor accesibile utilizatoru-
                                  lui

  ALL_TAB_COLUMNS                 Coloanele tuturor tabelelor, vederilor si
                                  clusterelor

  ALL_TAB_COMMENTS                Comentarii pe tabele si vederi accesibile u-
                                  tilizatorului

  ALL_TAB_PRIVS                   Permisiuni pe obiecte pentru care utilizato-
                                  rul e "grantor", "grantee" sau proprietar,
                                  sau un rol posibil sau PUBLIC garantie

  ALL_TAB_PRIVS_MADE              Permisiunile utilizatorilor si permisiuni pe
                                  obiectele utilizatorilor

  ALL_TAB_PRIVS_RECD              Permisiuni pe obiecte pentru care utilizato-
                                  rul, PUBLIC sau un rol posibil este "gran-
                                  tee"

  ALL_TRIGGERS                    TRIGGER-uri accesibile utilizatorului curent

  ALL_TRIGGER_COLS                Utilizarea coloanelor in trigger-ul utiliza-
                                  torilor sau in trigger-uri pe tabelele uti-
                                  lizatorilor

  ALL_USERS                       Informatii despre toti utilizatorii bazei de
                                  date

  ALL_VIEWS                       Textul vederilor accesibile utilizatorilor

  AUDIT_ACTIONS                   Tabela de descriere pentru actiunea de urma-
                                  rire a reviziei tipului de coduri


  CAT                             Sinonim cu USER_CATALOG

  CLU                             Sinonim cu USER_CLUSTERS

  COLS                            Sinonim cu USER_TAB_COLUMNS

  COLUMN_PRIVILEGES               Permisiuni pe coloane pentru care utilizato-
                                  rul e "grantor", "grantee", proprietar, sau
                                  un rol posibil sau PUBLIC este "grantee"

  DICT                            Sinonim cu DICTIONARY

  DICTIONARY                      Descrierea tabelelor si vederilor Dictiona-
                                  rului de Date

  GLOBAL_NAME                     Numele bazei de date globale

  IND                             Sinonim pentru USER_INDEXES

  INDEX_HISTOGRAM                 Statistica pe chei cu numarare repetata

  INDEX_STATS                     Statistica pe arbori-B

  OBJ                             Sinonim pentru USER_OBJECTS

  RESOURCE_COSTS                  Costul fiecarei resurse

  ROLE_ROLE_PRIVS                 Roluri permise rolurile

  ROLE_SYS_PRIVS                  Privilegiile sistem permise rolurilor

  ROLE_TAB_PRIVS                  Privilegii de tabela permise rolurilor




  SEQ                             Sinonim pentru USER_SEQUENCES

  SESSION_PRIVS                   Privilegii pe care utilizatorul le-a setat
                                  in mod curent

  SESSION_ROLES                   Roluri pe care utilizatorul le-a facut posi-
                                  bile in mod curent

  SYN                             Sinonim pentru USER_SYNONYMS

  TABLE_PRIVILEGES                Alocatii pe obiecte pe care utilizatorul
                                  este "grantor", "grantee", posesor, sau un
                                  rol facut posibil, sau PUBLIC este "gran-
                                  tee-ul"

  TABS                            Sinonim pentru USER_TABLES

  USER_AUDIT_OBJECTS              Inregistrarea urmelor examinate pentru de-
                                  claratii referitoare la obiecte, si anume:
                                  tabel, cluster, vedere, index, secventa,
                                  legatura bazei de date [publica], sinonim
                                  [public], procedura, trigger, segment roll-
                                  back, spatiu de tabela, rol, utilizator

  USER_AUDIT_SESSION

  USER_AUDIT_STATEMENT            Inregistrarea urmelor examinate referitoare
                                  la alocatie, anulare, examinare, neexamina-
                                  re si sistem modificat

  USER_AUDIT_TRAIL                Intrari ale urmelor revizuite, relevante u-
                                  tilizatorului

  USER_CATALOG                    Tabele, vederi, sinonime si secvente poseda-
                                  te de utilizator

  USER_CLUSTERS                   Descrieri ale clusterelor utilizatorului

  USER_CLU_COLUMNS                Maparea coloanelor tabelei pentru a aduna
                                  impreuna coloanele

  TABLENAMECOMMENTS

  USER_COL_COMMENTS               Comentarii despre coloanele tabelelor si ve-
                                  derile utilizatorului

  USER_COL_PRIVS                  Permisiuni pe coloanele pentru care utiliza-
                                  torul este posesorul, "grantor" sau "gran-
                                  tee"

  USER_COL_PRIVS_MADE             Toate permisiunile pe coloanele obiectelor
                                  posedate de utilizator

  USER_COL_PRIVS_RECD             Permisiuni pe coloane pentru care utilizato-
                                  rul este "grantee"

  USER_CONSTRAINTS                Definitiile constrangerilor pe tabelele uti-
                                  lizatorului

  USER_CONS_COLUMNS               Informatii despre coloanele accesibile in
                                  definitiile constrangerilor

  USER_DB_LINKS                   Legaturile bazei de date posedate de utili-
                                  zator



  USER_DEPENDENCIES               Dependente dinspre si inspre obiectele uti-
                                  lizatorilor

  USER_ERRORS                     Erori curente pe obiecte stocate, posedate
                                  de utilizator

  USER_EXTENTS                    Extensii cuprinzand segmente ale utilizato-
                                  rului

  USER_FREE_SPACE                 Extensii libere in spatiul tabelelor accesi-
                                  bile utilizatorului

  USER_INDEXES                    Descrierea indecsilor utilizatorului

  USER_IND_COLUMNS                Coloanele cuprinzand indecsi ai utilizatoru-
                                  lui sau pe tabele ale utilizatorului

  USER_OBJECTS                    Obiecte posedate de utilizator

  USER_OBJECT_SIZE               Dimensiuni, in octeti, a diferitelor obiecte
                                 pl/sql

  USER_OBJ_AUDIT_OPTS            Optiuni de revizuire pentru tabelele si vede-
                                 rile utilizatorului

  USER_RESOURCE_LIMITS           Afiseaza limita resurselor utilizatorului

  USER_ROLE_PRIVS                Roluri permise utilizatorului curent

  USER_SEGMENTS                  Spatiu de stocare alocat pentru segmentele
                                 bazei de date

  USER_SEQUENCES                 Descrierea SEQUENCE-lor utilizatorului

  USER_SNAPSHOTS                 Instantanee pe care utilizatorul le poate ve-
                                 dea

  USER_SNAPSHOTS_LOGS            Toate jurnalele instantanee posedate de uti-
                                 lizator

  USER_SOURCE                    Sursa obiectelor stocate accesibile utiliza-
                                 torului

  USER_SYNONYMS                  Sinonimele private ale utilizatorului

  USER_SYS_PRIVS                 Privilegii de sistem permise utilizatorului
                                 curent

  USER_TABLES                    Descrierea tabelelor utilizatorului

  USER_TABLESPACES               Descrierea spatiilor tabelelor accesibile

  USER_TAB_COLUMNS               Coloane ale tabelelor, vederilor si clustere-
                                 lor utilizatorului

  USER_TAB_COMMENTS              Comentarii despre tabelele si vederile pose-
                                 date de utilizator


  USER_TAB_PRIVS                 Permisiuni pe obiecte pentru care utilizato-
                                 rul este posesorul, "grantor-ul", sau "gran-
                                 tee-ul"

  USER_TAB_PRIVS_MADE            Toate permisiunile pe obiecte posedate de u-
                                 tilizator

  USER_TAB_PRIVS_RECD            Permisiuni pe obiecte pentru care utilizato-
                                 rul este "grantee-ul"

  USER_TRIGGERS                  Tigger-uri posedate de utilizator

  USER_TRIGGER_COLS              Folosirea coloanei in trigger-ul utilizatoru-
                                 lui

  USER_TS_QUOTAS                 Cota spatiului de tabela pentru utilizator

  USER_USERS                     Informatii despre utilizatorul curent

  USER_VIEWS                     Text de vederi posedat de utilizator


    Cateva vederi folositoare
    


      Urmatoarele vederi sunt probabile de a fi de interes pentru majoritatea
 utilizatorilor:

   Nume vedere       Sinonim        Descriere
   -----------       -------        ----------

   DICTIONARY        Dict           Lista tuturor obiectelor bazei de date

   USER_OBJECTS      Obj            Obiectele posedate de utilizator

   USER_CATALOG      Cat            Tabele, vederi, sinonime, secvente accesi-
                                    bile utilizatorului

   USER_TABLES       Tabs           Descrierea tabelelor utilizatorului

   USER_TAB_COLUMNS  Cols           Coloanele din tabelele si vederile utili-
                                    zatorului

   USER_COL_COMMENTS                Comentarii pe coloanele tabelelor si vede-
                                    rilor utilizatorului

   USER_TAB_COMMENTS                Comenzi pe tabele si vederi posedate de u-
                                    tilizator

   USER_SEQUENCES    Seq            Descrierea secventelor posedate de utili-
                                    zator

   USER_SYNONYM      Syn            Sinonimul privat al utilizatorului

   USER_VIEWS                       Textul vederilor posedate de utilizator

   USER_INDEXES      Ind            Descrierea indecsilor proprii utilizatoru-
                                    lui

   ALL_OBJECTS                      Obiectele accesibile utilizatoruluI

   ALL_TAB_COLUMNS                  Coloanele pentru toate tabelele si vederi-
                                    le accesibile utilizatorului



 Daca nu stiti definitia unei tabele sau vederi a Dictionarului de Date, sau
 daca nu va puteti aminti numele unei coloane intr-o tabela/vedere specifica,
 atunci folositi comanda DESC[RIBE] pentru a afisa definitia tabelei/vederii.



 Pentru a vedea structura lui USER_OBJECTS, introduceti:

     SQL>desc user_objects




 O descriere a vederii DICTIONARY urmeaza:


 SQL>desc dict




 Notati ca sinonimul abreviat DICT poate fi folosit cu referire la DICTIONARY.
 Odata ce stiti structura unei tabele/vederi, puteti selecta informatia dori-
 ta:

     SELECT   OBJECT_NAME, OBJECT_TYPE, CREATED
     FROM     USER_OBJECTS
     WHERE    OBJECT_NAME = 'EMP'






  Folosirea lui SQL pentru a genera SQL
  



      SQL poate fi o unealta puternica pentru a genera alte declaratii  SQL,
 facand folosirea informatiei in Dictionarul de Date. Puteti folosi SQL din
 SQL pentru:
     * a evita cod repetitiv
     * a primi ajutor de la Dictionarul de Date
     * a recrea tabele, vederi, index-uri
     * a genera predicate "dinamice", continand parametri din timpul exe-
       cutiei


      Amintiti-va, virtual puteti selecta orice.


      De exemplu, pentru a genera declaratii SQL*PLUS pentru a descrie toate
 tabelele voastre, folositi urmatorul SQL:

          SELECT 'DESC '||OBJECT_NAME
          FROM   USER_OBJECTS
          WHERE  OBJECT_TYPE = 'TABLE'
          /

          OR

          SELECT 'DESC '||TABLE_NAME
          FROM USER_TABLES;



 Exemplele de mai sus genereaza urmatoarea iesire:

          DESC DEPT
          DESC EMP
          DESC SALGRADE



 Pentru a executa declaratiile de mai sus, este necesara capturarea lor
 intr-un fisier care poate fi pornit.


           SET ECHO OFF
           SET PAGES 0
           SET FEEEDBACK OFF
           SPOOL X

           SELECT 'DESC '||TABLE_NAME
           FROM   USER_TABLES
           /
           SPOOL OFF
           START X.LIS



 In exemplul de mai susm PAGE[SIZE] este pus pe 0, pentru a elimina titlurile
 din varf si de jos, ca si cele de tabel. Notati deasemenea ca extensia LIS
 este specificata pe comanda START, deoarece START isi asuma o extensie a SQL.
 Exemple mai sofisticate ale acestei tehnici sunt detailate in Apendicele G,
 unde cererile din Dictionarul de Date sunt folosite pentru a produce comenzi
 DML si DDL si iesire.




    CAPITOLUL 13 EXERCITII - MANAGEMENTUL DE TABELA SI DICTIONARUL DE DATE
                                       
                                       


      Atelier
    1. Adaugati o coloana LONG numita COMMENTS , PROJECT TABLE-ului
       dumneavoas- tra. Deasemenea, adaugati o coloana NUMBER, numita
       HOURS, tabelului ASSIGNMENTS.
    2. Folositi vizualizarea dictionarului USER_OBJECTS pentru a lista
       obiectele posedate de contul dumneavoastra ORACLE. Cate obiecte
       posedati?
    3. Acum definiti o constrangere pe tabela ASSIGNMENTS pentru a
       asigura combi- natii unice de Project ID si numar de angajat.
       Cereti vederea USER_OBJECTS; posedati acum vreun obiect viitor?
    4. Priviti in Dictionarul de Date pentru informatii despre
       constrangeri pe tabelele voastre (puteti folosi vederea
       USER_CONSTRAINTS).
       Daca aveti timp :
    5. Folositi vizualizarea dictionarului ALL_TABLES pentru a gasi
       posesorii si numele tabelelor la care puteti avea acces, unde
       numele tabelei include caracterele "EMP".



CAPITOLUL 13 Solutii



    1.

   ALTER TABLE PROJECTS
          ADD (COMMENTS LONG)

          ALTER TABLE ASSIGNMENTS
          ADD (HOURS NUMBER)
   
    2.

   SELECT OBJECT_NAME, OBJECT_TYPE
          FROM USER_OBJECTS
   
    3.

   ALTER TABLE ASSIGNMENTS
          ADD CONSTRAINT UNQ_KEY UNIQUE (PROJID,EMPNO)
   
   
       Ati fi putut alternativ sa adaugati o cheie primara, pana cele
       doua coloane nu permit null-uri. In fiecare caz, un index unic a
       fost adaugat listei voastre de obiecte posedate.
    4. O cerere posibila este:

     SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
     SEARCH_CONDITION

     FROM USER_CONSTRAINTS
   
   
       Probabil veti vrea sa folositi comenzile COLUMN pentru a formata
       rezulta- tele!
    5.

   SELECT OWNER, TABLE_NAME
         FROM ALL_TABLES
         WHERE TABLE_NAME LIKE '%EMP%'

Inapoi la cuprins.

BogSoft 1999