Sunteți pe pagina 1din 15

Laborator 3-4

III. Crearea i gestiunea tabelelor


Pentru a putea crea o tabel n schema proprie, un utilizator trebuie s aib dreptul de sistem
CREATE TABLE, iar pentru a crea o tabel n schema altui utilizator trebuie s aib dreptul
de sistem CREATE ANY TABLE. n plus, pentru a crea o tabel, utilizatorul trebuie s aib
alocat o cot de spaiu n cadrul tablespace-ului su, sau s posede dreptul de sistem
UNLIMITED TABLESPACE.

III.1 Crearea tabelelor n mod interactiv folosind interfaa grafic

Crearea unui tabel n baza de date presupune n extenso definirea urmtoarelor elemente:
denumirea tabelului;
denumirea coloanelor tabelului;
tipurile de date memorate de fiecare coloan;
dimensiunea maxim a fiecrei coloane;
definirea indecilor: primari, unici, strini (secundari);
acceptarea de ctre o coloan de valori NULL sau nu;
definirea constrngerilor;
definirea declanatorilor;
definirea procedurilor stocate;
Pentru crearea unui tabel n pagina HOME a instanei bazei de date se merge n pagina
Administration, grupul de aplicaii Schema Database Objects Tables i se acioneaz
butonul Create.
Exist dou tipuri de tabele care se pot crea:
Standard, Heap Organized tabele standard pentru care indecii sunt memorai n
structuri separate de cea a tabelei. Astfel, accesul la tabel folosind indecii se face n
doi pai: accesarea tabelei de index, urmat de accesarea tabelei. Dac datele
memorate n aceste tabele nu necesit s fie stocate permanent pe hard disk se poate
bifa opiunea Temporary. Datele dintr-un tabel temporar sunt memorate doar pe
parcursul derulrii unei sesiuni sau unei tranzacii.
Index Organized Table (IOT) Tabelele organizate ca indeci stocheaz toate datele
unei tabele ntr-o structur de b-arbore (B-tree) organizat ca un index bazat pe cheia
primar. Blocurile frunz dintr-o astfel de structur conin coloanele diferite de cheia
primar n loc s conin ROWID-urile nregistrrilor corespunztoare, aa cum era n
cazul indecilor obinuii. Printr-o astfel de structur, numrul de segmente necesare
pentru stocarea tabelei i indexului asociat acesteia s-a redus la unul singur. Prin
urmare, accesul la un astfel de tip de tabel se limiteaz la o singur citire, ne mai
fiind nevoie de un acces suplimentar n index. O astfel de tabel organizat ca un
index difer de o tabel obinuit prin urmtoarele:
o liniile dintr-o tabel IOT (Index-Organized Table) sunt identificate n mod
unic numai prin cheia primar i nu i prin ROWID;
Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

pentru o tabel IOT nu sunt necesari indeci suplimentari;


o scanare complet (fullscan) pe o tabel IOT returneaz liniile n ordinea
cheii primare;
o ntr-o tabel IOT nu sunt posibile constrngerile de tip unic;
o o tabel IOT nu poate participa ntr-o tranzacie distribuit, nu poate fi
partiionat i nici replicat.
Tabelele IOT sunt utile n cazul aplicaiilor care presupun dese regsiri de date sau n cazul
aplicaiilor OLAP.
o
o

PAS1 stabilirea denumirii tabelului i definirea coloanelor;


n rubrica NAME se introduce numele tabelului;
n rubrica SCHEMA este afiat implicit schema utilizatorului care este logat la baze
de date. Utilizatorul poate crea un tabel ntr-o alt schem numai dac are rolul DBA
sau are privilegiul de sistem CREATE ANY TABLE;
n rubrica TABLESPACE se poate selecta tablespace-ul n care va fi salvat tabelul.
Dac nu se alege alt tablespace, tablespace-ul implicit este USERS.

Fig. 1 Fereastra pentru definirea coloanelor unei tabele

n rubricile name se introduce numele coloanelor. Toate denumirile se memoreaz


implicit UPPERCASE indiferent de modul n care se introduc;
dac se bifeaz opiunea NOT NULL, nseamn ca n coloana respectiv nu vor fi
acceptate valori de tip NULL. Coloanele care vor alctui indexul primar al tabelei
trebuie s aib bifat obligatoriu aceast opiune;

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

n cazul coloanelor de tip numeric, numrul cifrelor de precizie este luat din numrul
total al cifrelor stabilit n rubrica SIZE. n cazul coloanei cants de exemplu, vor putea
fi introduse 5 cifre pentru partea ntreag i 2 cifre pentru partea fracionar;
n rubrica DEFAULT VALUE pot fi introduse valori implicite pentru cmpurile
respective. De exemplu, pentru unitatea de msur poate fi introdus valoarea buc,
pentru termenul de garanie 30 (considerat 30 zile).

PAS 2 definirea indexului primar pentru tabel


se acceseaz pagina CONSTRAINTS i se d click pe butonul ADD.
se introduce un nume pentru index, n rubrica NAME, de obicei un nume de genul
PK_CODP (PK-primary key urmat de denumirea coloanei). Dac nu se introduce un
nume, Oracle va atribui implicit un nume pentru index dar acesta este foarte greu de
reinut.
din coloana AVAILABLE COLUMS se selecteaz coloana (sau coloanele n cazul
indecilor primari compui din mai multe coloane) i cu ajutorul butonului ADD
coloana care va alctui indexul este trecut n SELECTED COLUMNS.
pentru salvarea indexului se d click pe butonul CONTINUE.

Fig. 2 Definirea indexului primar

Disabled permite crearea indexului dar acesta va fi inactiv (e ca i cum nu ar fi fost


definit);
Deferrable amn verificarea constrngerii de unicitate pentru cheia primar pn la
ncheierea tranzaciei;
Initially Deferred n mod implicit, constrngerea de unicitate pentru cheia primar
va fi verificat la ncheierea tranzaciilor;

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

Validate (implict) verificarea constrngerii de unicitate se face imediat, la


intorducerea datelelor i n plus, verificarea se face i pentru datele deja introduse n
tabel;
Do not enforce the constraint (Rely) indexul va fi utilizat doar pentru crearea
legturii dintre tabele dar nu i pentru realizarea integritii datelor.

PAS 3 definirea cheii strine (secundare) pentru tabel


se acceseaz pagina CONSTRAINTS. Din lista derulant din dreptul butonului ADD
se alege tipul de constrngere FOREIGN i se d click pe butonul ADD.
se introduce un nume pentru index, n rubrica NAME, de obicei un nume care s
identifice tabele care se leag prin intermediul cheii strine (de exemplu, CATEG
_PROD. Dac nu se introduce un nume, Oracle va atribui implicit un nume pentru
index dar acesta este foarte greu de reinut.
din coloana AVAILABLE COLUMS se selecteaz coloana (sau coloanele n cazul
cheilor compuse din mai multe coloane) i cu ajutorul butonului ADD coloana care va
alctui indexul secundar este trecut n SELECTED COLUMNS.

Fig. 3 Definirea cheii strine (secundare)

n zona REFERENCED TABLE COLUMNS se selecteaz tabelul printe care conine


cheia primar corespunztoare. Se caut mai nti folosind butonul sub form de
lantern, dup care cu ajutorul butonului GO se afieaz coloanele tabelului selectat.
se trece cu ajutorul sgeii n rubrica SELECTED COLUMNS coloana sau coloanele
care compun cheia primar a tabelei printe referite. Astfel, odat cu definirea cheilor
strine se realizeaz i legturile ntre tabele;

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

Regula de integritate referenial CASCADE ON DELETE. Dac se activeaz


aceast regul, la tergerea unei nregistrri printe vor fi terse i toate nregistrrile
copil corespunztoare. Dac nu se activeaz, nu va fi permis tergerea nregistrrilor
printe care au nregistrri copil.
Dup definirea tuturor elementelor se acioneaz butonul CONTINUE pentru crearea
constrngerii corespunztoare cheii strine astfel definite;

OBSERVAIE:
Indecii primari i secundari sunt tratai de ctre Oracle ca i constrngeri. Tipul de
constrngere PRIMARY respectiv FOREIGN. Pentru detalii a se vedea pasul 4.

PAS 4 definirea altor constrngeri pentru tabele


O constrngere este un mecanism care asigur faptul c valorile unei coloane sau ale unei
mulimi de coloane ale unei tabele satisfac o condiie declarat. Unei constrngeri i se poate
da un nume unic. Dac nu se specific un nume explicit, atunci sistemul i atribuie automat un
nume de forma SYS_Cn, unde n reprezint numrul constrngerii.
Exist dou tipuri de constrngeri ce pot fi definite n acest pas (n afar de constrngerile
aferente indecilor primari i secundari):

Check constrains (constrngeri de validare) permit definirea unor reguli de validare


pentru coloanele tabelei. La adugarea unei nregistrri vor fi verificate automat aceste
constrngeri i nu va fi permis adugarea nregistrrii pn cnd valorile nu respect
toate constrngerile definite. Exemple de astfel de constrngeri: UM IN (buc, l, m,
kg) unitatea de msur nu poate lua dect valorile specificare n parantez (a se
vedea figura nr. 9), preul i cantitatea mai mari ca 0 prets>0, cants>0;

Unique constrains (constrngeri de unicitate) permite definirea indecilor unici. Cei


care joac rolul de chei candidat. Un index unic nu va permite introducerea n coloana
respectiv a aceleiai valori de mai multe ori. n figura nr. 10 se poate vedea definirea
coloanei Denumire ca index unic pentru tabela produse. Asta nseamn ca nu vor
putea fi introduse n tabel dou produse cu aceeai denumire;

pentru adugarea unei constrngeri n fereastra de editare a unui tabel se merge n


pagina CONSTRAINTS se alege tipul de constrngere din dreptul butonului ADD i
se definete constrngerea respectiv.
dup definirea fiecrei constrngeri se d click pe CONTINUE i apoi n fereastra de
editare a constrngerilor se acioneaz butonul APPLY pentru a o salva;

ATENIE!
O constrngere de validare sau de unicitate odat definit nu mai poate fi modificat. Ele pot
fi doar terse i recreate.

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

Fig. 4 Definirea constrngerilor de validare (check constrains)

Fig. 5 Definirea constrngerilor de unicitate (indecilor unici)

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

OBSERVAIE:
Indecii unici sunt utilizai i la crearea legturilor 1:1 ntre dou tabele. n acest caz, coloanei
definit ca i index secundar i se adaug i o constrngere de unicitate.
PAS 5 ncheierea procesului de creare a unei tabele
Salvarea tabelei astfel create se face dnd click pe butonul APPLY din fereastra de editare a
tabelei.

III.2 Crearea tabelelor i a indecilor n mod comand folosind LDD


A) Crearea tabelelor se face cu comanda CREATE TABLE. Sintaxa comenzii este foarte
complex i de aceea preferm s o prezentm prin exemple. Pentru o sintax complet a
comenzii CREATE TABLE se poate utiliza Help-ul.
EXEMPLE:
CREATE TABLE CATEGORII
(
CODC VARCHAR2(4) CONSTRAINT CATEGORII_PK PRIMARY KEY,
DENUMIRE VARCHAR2(30) CONSTRAINT CATEGORII_DEN_UNICA
UNIQUE
)
CREATE TABLE PRODUSE
(
COD VARCHAR2(4) NOT NULL,
DENUMIRE VARCHAR2(40) NOT NULL,
UM VARCHAR2(4),
STOC NUMBER,
PRET NUMBER(6,2),
CODC VARCHAR2(4),
DATAF DATE,
TERMG NUMBER,
CONSTRAINT PRODUS_PK PRIMARY KEY (COD),
CONSTRAINT STOC_POZITIV CHECK (STOC>0),
CONSTRAINT UM_VAL CHECK (UM in ('BUC','L', 'M', 'Kg', 'CUT', 'BAX')),
CONSTRAINT CATEG_PROD FOREIGN KEY (CODC)
REFERENCES CATEGORII (CODC)

)
CREATE TABLE FACTURI
(
NR_FACT VARCHAR2(10) NOT NULL,
DATA_F DATE DEFAULT SYSDATE,
DISCOUNT NUMBER(4,2) DEFAULT 0,
DATAS DATE DEFAULT SYSDATE,
CONSTRAINT FACTURI_PK PRIMARY KEY (NR_FACT)

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

CREATE TABLE VANZARI


(
NR_FACT VARCHAR2(10) NOT NULL,
COD_P VARCHAR2(6) NOT NULL,
CANTITATE NUMBER(10,2) NOT NULL,
PRET NUMBER(10,2) NOT NULL,
CONSTRAINT VANZARI_PK PRIMARY KEY (NR_FACT, COD_P),
CONSTRAINT VANZARI_FK FOREIGN KEY (NR_FACT)
REFERENCES FACTURI (NR_FACT),
CONSTRAINT VANZARI_FK1 FOREIGN KEY (COD_P)
REFERENCES PRODUSE (COD)
)
OBSERVAIE:
Constrngerile pot fi definite la nivel de tabel sau la nivel de coloan (vezi tabela categorii).
Constrngerile la nivel de coloan se aplic doar cmpului respectiv din cadrul liniei iar
condiia de validare se verific la ieirea din cmpul respectiv. Constrngerile la nivel de
tabel permit compararea coloanelor ntre ele. Se pot construi condiii de validare folosind
mai multe cmpuri ale aceleai linii iar condiia se verific abia la trecerea la linia urmtoare.
De exemplu, o constrngere de validare la nivel de tabel poate fi n tabela facturi:
datafact<datas;
Constrngerile la nivel de coloan nu pot referi alte coloane ale aceleiai tabele.
n cazul n care o tabel are un index primar format din mai multe coloane acesta va fi definit
automat la nivel de tabel (vezi tabela vnzri).

B) Crearea unei tabele folosind cmpurile din alt tabel


CREATE TABLE <nume_tabela> AS
SELECT [*, <nume campuri>] FROM <nume_tabela_surs>
WHERE [<condiie>];
EXEMPLE:
1. Crearea unei tabele care va conine doar produsele categoriei cu codul 1. Noua tabel va
avea denumirea prod_categ1.
CREATE TABLE prod_categ1
AS
SELECT * FROM Produse
WHERE codc='1';
2. Crearea unei tabele cu denumirea Facturi2000 care va conine doar numrul facturii i
data facturii pentru toate facturile emise dup anul 2000.
CREATE TABLE Facturi2000
AS
SELECT Nrfact, DataFact FROM Facturi
WHERE EXTRACT (YEAR FROM DataFact) >2000;
Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4

C) Crearea indecilor
Un index este un obiect al schemei unei baze de date care faciliteaz accesul mai rapid la
datele unei tabele. Indecii nu sunt obligatorii pentru crearea unei tabele dar n absena lor,
performanele accesului la date sunt mai reduse. Un index furnizeaz o cale direct i rapid
pentru a accesa nregistrrile unei tabele, reducnd numrul de operaii de I/O. Modificrile
datelor din tabel sunt automat ncorporate n toi indecii, procesul fiind complet transparent
utilizatorului.
Crearea unui index pe una sau mai multe coloane ale unui tabel se face cu comanda CREATE
INDEX care are sintaxa:
CREATE [UNIQUE] INDEX <nume_index>
ON <nume_tabel> (<nume_col> [ASC/DESC], <nume_col> [ASC/DESC], ....)
Opiunea UNIQUE impune o restricie de unicitate valorilor din coloanele care intr n
alctuirea indexului, adic creeaz un index unic ce nu va permite valori duplicate n
coloanele respective.
tergerea unui index se face cu comanda DROP INDEX. tergerea unui index nu va afecta
sub nici o form tabela. Indecii nu pot fi modificai ei pot fi doar teri si recreai.
EXEMPLE:
Crearea indexului unic Den_prod_unic_idx pentru denumirea produselor din tabela Produs se
va face cu comanda:
CREATE UNIQUE INDEX Den_prod_unic_idx ON Produse (DenP ASC)
tergerea (distrugerea) indexului creat anterior se face cu comanda:
DROP INDEX Den_prod_unic_idx;
OBSERVAIE:
Nu se recomand definirea unui index n urmtoarele situaii:
tabelul este mic (accesul secvenial este mai rapid);
pentru coloanele tabelei care nu sunt folosite frecvent n condiiile cererilor
(interogrilor);
cnd tabela este reactualizat frecvent;
pentru coloanele care conin multe valori NULL iar cererile nu se refer la valorile
NON NULL;
n cazul cererilor care au ca rezultat mai mult de 2% - 4% din nregistrrile tabelei;
pentru coloanele care conin date asemntoare (puine valori distincte);
Se recomand crearea unui index n urmtoarele situaii:
pentru coloanele folosite frecvent n clauza WHERE, n clauza ORDER BY sau n
condiii JOIN;
pentru coloanele care conin un numr mare de valori NULL iar cererile se refer la
valorile NON NULL;

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
10

cnd tabelul este mare i cererile au ca rezultat mai puin de 2%-4% din nregistrrile
tabelului;
cnd coloanele conin un domeniu larg de valori distincte;

D) Vizualizarea structurii unei tabele - se face cu comanda DESCRIBE sau DESC.

DESCRIBE nume_tabel
EXEMPLE: s se afieze structura tabelelor Produse i Facturi
DESCRIBE Produse;
DESC Facturi;
E) Adugarea unui comentariu tabelei se face cu comanda COMMENT - permite
adugarea unor explicaii referitoare la tabel
EXEMPLE:
1. Pentru adugarea comentariului Facturi emise dup anul 2000 la tabela Facturi2000
creat anterior se folosete comanda:
COMMENT ON TABLE Facturi2000
IS 'Facturi emise dup anul 2000';
2. Pentru adugarea unui comentariu pentru o coloan a tabelei se folosete comanda:
COMMENT ON COLUMN Facturi2000.DataFact
IS 'Data facturii';
3. Pentru vizualizarea unui comentariu ataat unei tabele sau unei coloane se folosesc una
din vederile dicionarului: ALL_TAB_COMMENTS (conine comentariile definite pentru
tabelele asupra crora utilizatorul curent are drepturi), USER_TAB_COMMENTS
(conine doar comentariile definite de utilizatorul curent asupra tabelelor create de el),
respectiv ALL_COL_COMMENTS, USER_COL_COMMENTS
ATENIE!
Pentru a executa comenzile urmtoare trebuie s v conectai la baza de date fr clauza
SYSDBA. (CONNECT numeutilizator/parola@instanta_BD;). Altfel, sistemul va afia toate
comentariile utilizatorului SYS incluznd toate tabelele de sistem;
SELECT * FROM USER_TAB_COMMENTS;
SELECT * FROM USER_COL_COMMENTS;
4. Pentru tergerea unui comentariu ataat tabelei sau coloanei se folosete aceeai comand
ca la adugarea unui comentariu, doar c de data aceasta comentariul este vid:
Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
11

COMMENT ON TABLE Facturi2000


IS '';

III.3 Modificarea tabelelor i a indecilor n mod interactiv folosind


interfaa grafic
Modificarea tabelelor presupune modificarea oricrora din elementele care se pot defini la
crearea unei tabele.
Pentru modificarea unei tabele:

se merge n grupul de aplicaii ADMINISTRATION SCHEMA DATABASE


OBJECTS TABLES;
se caut tabele componente schemei acionnd butonul GO;
se selecteaz tabelul care se dorete a fi modificat i acioneaz butonul EDIT;
se fac modificrile necesare dup care se acioneaz butonul APPLY.

Fig. 6 Modificarea tabelelor i a indecilor

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
12

III.4 Modificarea tabelelor i a indecilor n mod comand folosind LDD


A) Modificarea structurii tabelelor folosind comanda ALTER
Modificarea tabelelor cu comanda ALTER poate realiza urmtoarele operaii:
redenumirea tabelei sau a unei coloane (RENAME);
tergerea unei tabele (DROP, TRUNCATE). Comanda DROP terge fizic tabela i
elibereaz spaiul ocupat. Comanda TRUNCATE terge doar nregistrrile
tabelei pstrnd structura acesteia, indecii, constrngerile, declanatorii, etc.
Aceste operaii sunt ireversibile ele nu pot fi refcute cu comanda ROLLBACK;
adugarea, modificarea respectiv tergerea coloanelor (ADD COLUMN, MODIFY
COLUMN, DROP COLUMN);
inactivarea unei coloane (SET UNUSED) dei nu va fi nlturat fizic, ea nu va mai
aprea n structura tabelei i nu va mai putea fi folosit;
adugarea, tergerea sau activarea/inactivarea constrngerilor (ADD, DROP,
ENABLE/DISABLE CONSTRAINT). Constrngerile nu pot fi modificate ele pot fi
doar terse i recreate;
EXEMPLE:
1. Redenumirea tabelei Produse n Produs i a coloanei Pret n Pretul.
ALTER TABLE Produse RENAME TO Produs;
ALTER TABLE Produs RENAME COLUMN PretS TO Pretul;
2. S se creeze tabela Test i s se tearg folosind comanda TRUNCATE dup care s se
vizualizeze structura lui.
CREATE TABLE Test
(
COD_Test VARCHAR2(4) CONSTRAINT Test_PK PRIMARY KEY,
DENUMIRE VARCHAR2(30) CONSTRAINT TEST_DEN_UNICA
UNIQUE
);
TRUNCATE TABLE Test;
DESC Test;
3. S se tearg tabelul Test de la punctul 2 folosind comanda DROP dup care s se
vizualizeze structura lui
DROP TABLE Test;
DESC Test;

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
13
4. S se recreeze tabelul Test de la punctul 2 i s i se adauge acestuia coloanele: Nota_test
cu tipul Numeric de maxim 2 cifre i coloana Situaie care va trebui s stocheze doar
valorile Admis/Respins.
ALTER TABLE Test ADD (Nota_test NUMBER(2),
Situatie VARCHAR2(7) CONSTRAINT valori
('Admis','Respins')));

CHECK

(Situatie

IN

5. S se modifice coloana Nota_test astfel nct s permit memorarea unor note cu 2


zecimale.
ALTER TABLE Test
MODIFY (Nota_test NUMBER(4,2));
6. S se adauge coloana De_sters n tabela Test, s se inactiveze coloana adugat i s se
afieze structura tabelei.
ALTER TABLE Test
ADD (De_sters VARCHAR2(10));
ALTER TABLE Test
SET UNUSED COLUMN De_sters;
DESC Test;
OBSERVAIE:
Dei coloana nu a fost tears, ea nu mai apare n structura tabelului i nu mai poate fi
utilizat. De asemenea nu va putea fi reactivat i nici tears prin referire direct la ea ci doar
mpreun cu alte coloane inactivate (vezi exemplul 7).
7. S se tearg coloana De_sters din tabela Test.
ALTER TABLE Test DROP UNUSED COLUMNS;
Dac coloana De_Sters nu ar fi fost inactivat, s-ar fi putut terge cu comanda:
ALTER TABLE Test DROP COLUMN De_Sters;
8. S se adauge la tabela Test o constrngere prin care s se impun ca notele introduse s
fie cuprinse ntre 4 i 10 inclusiv.
ALTER TABLE Test
ADD (CONSTRAINT check_nota CHECK (Nota_test BETWEEN 4 and 10));
ATENIE!

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
14
La adugarea unei noi constrngeri, n mod implicit sunt verificare i datele deja introduse n
tabel. Dac acestea nu respect constrngerea respectiv, ea nu va putea fi salvat.
9. S se dezactiveze constrngerea check_nota, s se reactiveze i apoi s se tearg din
tabel.
ALTER TABLE Test
DISABLE CONSTRAINT check_nota;
ALTER TABLE Test
ENABLE CONSTRAINT check_nota;
ALTER TABLE Test
DROP CONSTRAINT check_nota;
10. S se stabileasc pentru coloana Situaie valoarea implicit Admis.
ALTER TABLE Test
MODIFY (Situatie DEFAULT 'Admis');
11. S se vizualizeze indecii i constrngerile definite asupra tabelelor create:
SELECT * FROM USER_INDEXES;
respectiv
SELECT * FROM USER_CONSTRAINTS;
OBSERVAIE:
USER_INDEXES i USER_CONSTRAINTS sunt tabele ale dicionarului de date. Cu DESC
USER_INDEXES respectiv DESC USER_CONSTRAINTS se poate vizualiza structura celor
dou tabele i se pot astfel selecta doar anumite coloane.

PROBLEME DE REZOLVAT
1. S se defineasc tabelele bazei de date propuse n Laboratorul 1 ca exemplu pentru lucru
la laborator;
2. S se defineasc indecii necesari realizrii relaiilor ntre tabele i s se realizeze relaiile
ntre tabele;
3. S se defineasc pentru tabela Agenti comentariul Agentii organizaiei iar pentru
coloanele Data_n i Data_ang, Data naterii respectiv Data angajarii.
4. S se vizualizeze comentariile definite i apoi s se tearg aceste comentarii. S se
vizualizeze din nou comentariile adugate coloanelor respectiv tabelei;
5. S se defineasc urmtoarele constrngeri de unicitate: denumirea produsului, denumirea
categoriei i denumirea clientului s fie unice;
Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

Laborator 3-4
15
6. S nu se permit introducerea n coloana Sex din tabela Agent dect a valorilor F sau M,
n coloana Studii valorile Medii, Superioare, Postuniversitare iar n coloana Tip_doc din
tabela DocInc valorile CHF, OP i CEC;
7. S nu se permit introducerea unei date pentru factur i pentru documente mai mare
dect data curent;
8. Pentru facturi i pentru documentele de ncasare s se stabileasc data curent ca valoare
implicit pentru coloanele DataFact i DataDoc;
9. Pentru coloana Regiune din tabela Clieni nu permitei introducerea dect a valorilor:
Moldova, Muntenia, Transilvania, Banat;
10. Pentru coloanele CantS, PreS i Discount s se stabileasc valoarea 0 ca valoare
implicit;
11. Pentru coloanele Localitate, Jude i Regiune stabilii valorile implicite: Galai, Galai,
respectiv Moldova;
12. Creai tabela Clienti_moldova cu coloanele: CUI, Denumire, Jude, Regiune care s
conin toi clienii din regiunea Moldova;
13. Stabilii urmtoarele tipuri de date pentru coloanele tabelei Clienti_moldova: pentru
Denumire VARCHAR2 (45) cu restricia s nu accepte dect valori unice, iar pentru
coloana Regiune stabilii tipul VARCHAR2(30) cu valoarea implicit Moldova i nu
permitei introducerea nici unei alte valori n aceast coloana;
14. Dezactivai coloana Regiune din tabela Clieni_moldova i restricia de unicitate pentru
denumire. Activai din nou restricia de unicitate pentru denumire;
15. tergei coloana Regiune din tabela Clieni_moldova i toate constrngerile definite
pentru aceast coloan;
16. S se creeze pentru tabela Clieni_moldova indexul descresctor Denumire_idx i apoi s
se vizualizeze structura tabelei;
17. S se tearg indexul definit la punctul 16 i s se vizualizeze din nou structura tabelei.

REZOLVRI

Universitatea Dunrea de Jos Galai

PDF created with pdfFactory trial version www.pdffactory.com

Lect. dr. Gianina Mihai

S-ar putea să vă placă și