Sunteți pe pagina 1din 17

Florin Radulescu - Baze de date (note de curs)

STUD

SQL - 5

MATR
---1456
1325
1645
3145
2146
3251
2215
4311
3514
1925
2101
4705

CREAREA TABELELOR

F. Radulescu. Curs: Baze de date

SPEC si BURSA

Scopul acestui capitol este de a prezenta


elementele limbajului pentru descrierea
datelor (DDL) referitoare la:
Tipurile de date permise pentru coloanele
tabelelor,
Crearea de noi tabele,
Constrngeri de integritate,
Modificarea structurii unei tabele,
Modificarea i activarea constrngerilor de
integritate,
Dicionarul de date al sistemului.

TIP
PMIN PMAX SUMA
-------------------- ----- ----- ----FARA BURSA
0
399
BURSA SOCIALA
400
899
100
BURSA DE STUDIU
900 1799
150
BURSA DE MERIT
1800 2499
200
BURSA DE EXCEPTIE
2500 9999
300
3

TIPURI DE DATE

F. Radulescu. Curs: Baze de date

TIPURI DE DATE (2)

Sistemul Oracle pune la dispoziie un set optim


de tipuri de date care pot fi asociate
coloanelor unei tabele, grupate n mai multe
categorii:
Tipuri numerice scalare
Tipuri scalare ir de caractere
Tipuri scalare binare
Tipuri pentru date calendaristice, timp i
interval de timp
Tipuri LOB (large object)
Tipuri compuse: TABLE i VARRAY
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

OBIECTIV

CODS NUME
DOMENIU
----- ---------- --------------11 MATEMATICA STIINTE EXACTE
21 GEOGRAFIE UMANIST
24 ISTORIE
UMANIST

F. Radulescu. Curs: Baze de date

NUME
AN GRUPA DATAN
LOC
TUTOR PUNCTAJ CODS
------- -- ------ --------- ---------- ----- ------- ---GEORGE
4 1141A 12-MAR-82 BUCURESTI
2890
11
VASILE
2 1122A 05-OCT-84 PITESTI
1456
390
11
MARIA
3 1131B 17-JUN-83 PLOIESTI
1400
11
ION
1 2112B 24-JAN-85 PLOIESTI
3251
1670
21
STANCA
4 2141A 15-MAY-82 BUCURESTI
620
21
ALEX
5 2153B 07-NOV-81 BRASOV
1570
21
ELENA
2 2122A 29-AUG-84 BUCURESTI
2146
890
21
ADRIAN
3 2431A 31-JUL-83 BUCURESTI
450
24
FLOREA
5 2452B 03-FEB-81 BRASOV
3230
24
OANA
2 2421A 20-DEC-84 BUCURESTI
4311
760
24
MARIUS
1 2412B 02-SEP-85 PITESTI
3514
310
24
VOICU
2 2421B 19-APR-84 BRASOV
4311
1290
24

Aceste tipuri, cu unele diferene n ceea ce


privete dimensiunea maxim admis, pot
fi folosite i n limbajul procedural PL/SQL.
n continuare sunt prezentate tipurile din
primele cinci categorii.
Crearea unei tabele cu coloane de tip
TABLE i VARRAY i manipularea datelor
de acest fel nu este prezentat n acest
capitolul.
5

F. Radulescu. Curs: Baze de date

Florin Radulescu - Baze de date (note de curs)

TIPURI NUMERICE SCALARE

TIPURI NUMERICE SCALARE (2)


Tip
INTEGER, INT,
SMALLINT
BINARY_INTEGER
NATURAL,
POSITIVE

Tip
NUMBER

Descriere
Numr real de dimensiune variabil, cu 38 de
cifre semnificative, avnd valori ntre 1E-130
i 10E125.
NUMBER(n)
Numr ntreg cu maxim n cifre
NUMBER(n, z)
Numr real cu n cifre dintre care z zecimale
DEC, DECIMAL,
Subtipuri pentru NUMBER. Numere n
NUMERIC
virgul fix cu 38 de cifre semnificative.
DOUBLE
Subtipuri pentru NUMBER. Numere n
PRECISION, FLOAT virgul mobil cu 38 de cifre semnificative.
REAL
Subtip pentru NUMBER. Numere n virgul
mobil cu 18 cifre semnificative.

F. Radulescu. Curs: Baze de date

NATURALN,
POSITIVEN
SIGNTYPE
PLS_INTEGER

F. Radulescu. Curs: Baze de date

SIRURI
Tip
CHAR(n), CHAR
CHARACTER,
CHARACTER(n)
NCHAR(n)
VARCHAR2(n)
STRING(n),
VARCHAR(n)
NVARCHAR(n)

Tip
LONG

ROWID

UROWID

TIPURI BINARE

TIMESTAMP[(n)]

LONG RAW

Descriere
Similar cu VARCHAR2 dar conine date
binare. Valoarea maxim pentru n este de
2000.
Similar cu LONG dar conine date binare.

TIMESTAMP [(n)]
WITH TIME ZONE
TIMESTAMP [(n)]
WITH LOCAL TIME
ZONE
INTERVAL YEAR
[(n)] TO MONTH
INTERVAL DAY
[(z)] TO SECOND
[(s)]

F. Radulescu. Curs: Baze de date

10

DATE, TIMP SI INTERVAL


Tip

RAW(n)

Descriere
ir de caractere de maxim 231 octei. Este
permis doar o singur coloan de acest tip
pentru o tabel.
Poate stoca un identificator pentru o linie
dintr-o tabel. Pentru conversia la/de la ir
de caractere (18 caractere) se pot folosi
funciile SQL ROWIDTOCHAR respectiv
CHARTOROWID.
Universal
ROWID.
Poate
stoca
un
identificator logic i fizic de linie ntr-o
tabel, indexat sau nu precum i un
identificator de linie extern (non-Oracle). Nu
este necesar folosirea funciilor de conversie
la/de la ir de caractere (conversie
automat).

F. Radulescu. Curs: Baze de date

DATE

Tip

SIRURI (2)

Descriere
ir de caractere de lungime fix, egal cu n.
Valoarea maxim pentru n este 2000. Dac n
lipsete, ir de caractere de lungime 1.
Identice cu cele anterioare. Introduse pentru
compatibilitatea cu alte sisteme.
Analog cu CHAR dar poate stoca iruri scrise
n seturi de caractere naionale (multioctet)
ir de caractere de lungime variabil egal cu
n. Valoarea maxim pentru n este 4000.
Identice cu VARCHAR2, introduse pentru
compatibilitatea cu alte sisteme
Analog cu VARCHAR. Poate stoca iruri
scrise n seturi de caractere naionale
(multioctet)

F. Radulescu. Curs: Baze de date

Descriere
Subtipuri pentru NUMBER. Numere ntregi
cu maxim 38 de cifre
31
31
ntregi ntre -2 i 2 .
Subtipuri pentru BINARY_INTEGER.
Numere ntregi non-negative, respectiv
pozitive.
Subtipuri pentru BINARY_INTEGER.
Numere ntregi nenule non-negative,
respectiv pozitive.
Subtip al BINARY_INTEGER. Poate lua
doar valorile -1, 0 i 1.
31
31
ntregi ntre -2
i 2 . Similar cu
BINARY_INTEGER dar operaiile cu astfel
de numere sunt mai rapide i n caz de
depire se ridic o excepie.

11

Descriere
Dat calendaristic (secol, an, lun, zi, or,
minut, secund).
Extensie a tipului DATE. Conine i fraciuni
de secund. Dac este prezent, n specific
numrul de zecimale pentru acestea. Implicit
n=6
Extinde tipul TIMESTAMP coninnd i o
diferen ntre ora local i ora universal
(GMT)
Similar cu tipul anterior dar la stocarea n
baza de date valorile sunt convertite la ora
zonei bazei de date iar la regsire la ora zonei
aplicaiei client.
Se stocheaz intervale de ani i luni. Precizia
n specific numrul de cifre pentru an (ntre 0
i 4, implicit 2).
Similar cu tipul anterior, dar pentru intervale
de zile i secunde. valorile z i s sunt
preciziile pentru zile, respectiv secunde (0-9,
implicit 2 pentru z i 6 pentru s).

F. Radulescu. Curs: Baze de date

12

Florin Radulescu - Baze de date (note de curs)

TIPURI LARGE OBJECT

TIPURI LOB cont.

Aceste tipuri, introduse n ultimele versiuni


ale sistemului, permit stocarea unor cantiti
mari de date pe coloanele unei tabele sau a
unei referine (numit i locator) ctre un
fiier extern bazei de date.
Manipularea valorilor de acest tip se face n
PL/SQL cu ajutorul pachetelor de proceduri i
funcii puse la dispoziie de sistem.
Caracteristicile lor sunt urmtoarele:
F. Radulescu. Curs: Baze de date

13

CREATE TABLE

15

TREBUIE CA:

BLOB
BFILE

F. Radulescu. Curs: Baze de date

14

 tip_coloana_1, tip_coloana_2, ... reprezint


tipurile de date pentru coloanele respective, alese
dintre cele prezentate n paragraful anterior, cu
specificarea, dac este cazul, a dimensiunii maxime
sau preciziei,
 clauza opional DEFAULT expresie_i specific o
valoare implicit care este introdus automat n acea
coloan n cazul n care la adugarea unei noi linii nu
se specific o valoare pe coloana respectiv,
 schema este numele de utilizator Oracle al
proprietarului noii tabele. Valoarea implicit pentru
acesta este numele utilizatorului care execut
cererea de creare.
F. Radulescu. Curs: Baze de date

16

LITERE MARI SI MICI

 Utilizatorul are drepturile necesare (dreptul sau


privilegiul - n terminologia uzual - de CREATE
TABLE).
 Exist spaiu de stocare pentru noua tabel.
 Numele tabelei i al coloanelor respect restriciile
uzuale Oracle (maxim 30 de caractere, ncepe cu o
liter, conine litere, cifre i caracterele _, $, #, nu
este cuvnt rezervat Oracle). Sunt permise i alte
caractere dac numele este inclus ntre ghilimele.
 Nu exist deja un alt obiect cu acelai nume n
aceeai schem (pentru acelai utilizator Oracle).

F. Radulescu. Curs: Baze de date

NCLOB

Descriere
ir de caractere de pn la 4 GB. Se
recomand ca n aplicaiile noi s fie folosit
n locul lui LONG.
Similar cu CLOB dar se pot stoca iruri
utiliznd seturi naionale de caractere.
Dimensiunea maxim este de asemenea de 4
GB
Date binare de dimensiune pn la 4 GB
Date binare de dimensiune pn la 4 GB
stocate n fiiere externe. Nu particip la
tranzacii, replicare i pot fi doar citite nu i
modificate.

CREATE TABLE cont.

 Cea mai simpl form a cererii SQL de creare a unei noi


tabele are urmtoarea sintax:
CREATE TABLE [schema.]nume_tabela
(nume_coloana_1 tip_coloana_1 [DEFAULT
expresie_1],
nume_coloana_2 tip_coloana_2 [DEFAULT
expresie_2],
. . .
nume_coloana_n tip_coloana_n [DEFAULT
expresie_n]);
unde:
 nume_tabela este numele tabelei care se creaz,
 nume_coloana_1, nume_coloana_2, ... sunt numele
coloanelor acesteia
F. Radulescu. Curs: Baze de date

Tip
CLOB

Ca i n cazul cuvintelor cheie, literele


mici i cele mari sunt considerate egale
n numele de tabele i coloane.
Exemplu: tabela de studeni din
exemple este aceeai dac la creare se
folosete oricare din numele STUD,
Stud sau StuD.

17

F. Radulescu. Curs: Baze de date

18

Florin Radulescu - Baze de date (note de curs)

OBSERVATII

EXEMPLU

Expresia din clauza opional DEFAULT


trebuie s se evalueze la o valoare de tip
compatibil cu al coloanei respective. Ea poate
conine:

CREATE TABLE STUD(


MATR NUMBER(4),
NUME VARCHAR2(10),
AN NUMBER(1) DEFAULT 1,
GRUPA VARCHAR2(6),
DATAN DATE,
LOC VARCHAR2(10) DEFAULT 'BUCURESTI',
TUTOR NUMBER(4),
PUNCTAJ NUMBER(4) DEFAULT 0,
CODS NUMBER(2) );







Constante numerice sau ir de caractere,


Funcii SQL, inclusiv SYSDATE sau USER.
dar nu poate conine:
Numele unei coloane,
Numele unei pseudocoloane. (de exemplu
pseudocoloanele definite de o secven: NEXTVAL
sau CURRVAL).
F. Radulescu. Curs: Baze de date

19

F. Radulescu. Curs: Baze de date

20

OBSERVAM CA:
 MATR, AN, TUTOR, PUNCTAJ i CODS care conin
valori de tip numr ntreg au fost definite ca
NUMBER(n) unde n este 1, 2 sau 4,
 NUME, GRUPA i LOC sunt iruri de caractere de
lungime variabil definite ca VARCHAR2,
 DATAN care conine data naterii studentului este de
tipul DATE,
 Pentru unele dintre coloane au fost asociate valori
implicite care vor fi stocate automat n acestea dac
la inserarea unei noi linii nu se specific o valoare,
nul sau nenul.
 Valorile implicite sunt compatibile cu tipul coloanelor
respective (ntreg sau ir de caractere, dup caz).
F. Radulescu. Curs: Baze de date

21

OBSERVAM CA:

CREATE TABLE EVENIMENT(


COD NUMBER(10),
"MOMENT INCEPUT" TIMESTAMP(3) WITH LOCAL
TIME ZONE,
DURATA INTERVAL DAY(2) TO SECOND(3),
"DESCRIERE (PE LARG)" LONG);

F. Radulescu. Curs: Baze de date

22

CREATE din SELECT

 COD: un numr ntreg de maxim 10 cifre,


 MOMENT NCEPUT: conine momentul nceputului
unui eveniment n forma: data, ora, minutul, secunda
i miimile de secund: TIMESTAMP(3) arat c
fraciunile de secund sunt memorate cu 3 zecimale.
Numele coloanei conine un spaiu i a trebuit pus
ntre ghilimele.
 DURATA: durata evenimentului n zile, ore, minute,
secunde i fraciuni de secund. Numrul de zile
poate avea maxim 2 cifre iar numrul de secunde
maxim 3 zecimale.
 DESCRIERE (PE LARG): conine un text de descriere
a evenimentului care poate avea pn la 2 GB
caractere. Se folosesc ghilimelele pentru c numele
coloanei conine spaii i paranteze.
F. Radulescu. Curs: Baze de date

Crearea unei tabele n care se stocheaz date


despre evenimente: momentul de nceput,
durata i o descriere a acestora.

23

CREATE TABLE [schema.]nume_tabela


[(descriere_coloana_1, ...,
descriere_coloana_n)]
AS
cerere_SELECT;

Se creaz o tabel avnd numele


specificat i aceeai structur cu a
rezultatului returnat de SELECT.
F. Radulescu. Curs: Baze de date

24

Florin Radulescu - Baze de date (note de curs)

CREATE din SELECT (2)

CREATE din SELECT (3)

 Descrierea coloanelor nu este prezent


n cerere:




Numele coloanelor tabelei create precum i tipul


acestora este identic cu al celor din rezultatul
cererii SELECT.
Noua tabel nu motenete nici una dintre
constrngerile de integritate ale tabelei/tabelelor
din care provine rezultatul.
Dac n lista de expresii din clauza SELECT
exist unele care nu returneaz pentru capul de
tabel al rezultatului un nume valid de coloan
este obligatorie folosirea unor aliasuri de
coloan.
F. Radulescu. Curs: Baze de date

25

CREATE din SELECT (4)

F. Radulescu. Curs: Baze de date

26

CREATE din SELECT (5)

 Crearea tabelei se face inclusiv n cazul n care


cererea SELECT nu returneaz nici o linie. De
exemplu:
CREATE TABLE STUD100
AS
SELECT MATR, NUME, PUNCTAJ*1.1 "PUNCTAJ
MARIT"
FROM STUD
WHERE CODS = 100;
 va avea ca efect crearea tabelei STUD100 avnd
aceeai structur cu STUD11 dar aceasta nu va
conine nici o linie.
F. Radulescu. Curs: Baze de date

CREATE TABLE STUD11


AS
SELECT MATR, NUME, PUNCTAJ*1.1 "PUNCTAJ MARIT"
FROM STUD WHERE CODS = 11;
 Coninutul tabelei STUD11 va fi urmtorul:
MATR NUME
PUNCTAJ MARIT
----- ---------- ------------1456 GEORGE
3179
1325 VASILE
429
1645 MARIA
1540
 iar descrierea structurii sale este:
Nume coloana
Tip
------------------------MATR
NUMBER(4)
NUME
VARCHAR2(10)
PUNCTAJ MARIT
NUMBER

27

 Cererea conine descrierea coloanelor:


 Descrierea unei coloane are urmtoarea form:
nume_coloana [DEFAULT expresie] [constrngeri_integritate]
 Numrul de descrieri de coloan trebuie s fie egal cu
numrul de coloane din rezultatul cererii SELECT.
 Numele coloanelor tabelei create este cel din descriere iar
tipul lor este identic cu al celor din rezultatul cererii
SELECT.
 Dac descrierea unei coloane conine clauza DEFAULT
expresie, se asociaz acestei coloane valoarea implicit
respectiv.
 Noua tabel nu motenete nici una dintre constrngerile
de integritate ale tabelei/tabelelor din care provine
rezultatul dar primete constrngerile de integritate din
descriere, dac acestea exist
F. Radulescu. Curs: Baze de date

28

CREATE din SELECT (6)

CONSTRANGERI

CREATE TABLE STUD11


(NUMAR DEFAULT 0 NOT NULL, NUME, PUNCTE NOT NULL)
AS
SELECT MATR, NUME, PUNCTAJ*1.1 "PUNCTAJ MARIT"
FROM STUD
WHERE CODS = 11;
 Coninutul tabelei este acelai, ultima coloan are alt nume,
prima are o valoare implicit iar dou dintre ele au asociat o
constrngere de tip NOT NULL (nu se pot stoca valori nule pe
acele coloane):
Nume coloana
Null?
Tip
Implicit
-------------- -------- ------------- --------NUMAR
NOT NULL NUMBER(4)
0
NUME
VARCHAR2(10)
PUNCTE
NOT NULL NUMBER

 Constrngerile de integritate reprezint reguli pe care


valorile coninute ntr-o tabel trebuie s le respecte.
 Ele previn introducerea de date eronate n baza de
date i definesc forma corect a valorilor respective
dar nu iau n consideraie semnificaia acestora.
 Constrngerile de integritate sunt verificate automat
de sistemul de gestiune atunci cnd au loc operaii de
modificare a coninutului tabelelor (adugare,
tergere i modificare linii).
 n cazul n care noile valori nu sunt valide operaia de
modificare este rejectat de sistem i se genereaz o
eroare.

F. Radulescu. Curs: Baze de date

29

F. Radulescu. Curs: Baze de date

30

Florin Radulescu - Baze de date (note de curs)

TIPURI DE CONSTRANGERI

CONSTRANGERI (2)

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).

Fiecare constrngere de integritate poate


avea asociat un nume specificat la crearea
tabelei care permite activarea sau
dezactivarea constrngerii i alte operaii cu
aceasta.
n cazul n care nu se asociaz un astfel de
nume sistemul genereaz automat unul.
Locul definirii unei constrngeri de integritate
n cererea de creare a unei tabele poate fi:

F. Radulescu. Curs: Baze de date

31

F. Radulescu. Curs: Baze de date

32

CONSTRANGERI (3)

DETALIERE CONSTRANGERI

n descrierea unei coloane, dac acea


constrngere se refer doar la aceasta (uzual
se spune despre o astfel de constrngere c
este definit la nivel de coloan),
n continuarea listei de descrieri de coloane
(la nivel de tabel).
n funcie de locul unde se gsete, sintaxa
definirii unei constrngeri poate fi diferit.
Pentru fiecare tip de constrngere sunt
prezentate ambele sintaxe i exemple de
folosire a lor.

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).

F. Radulescu. Curs: Baze de date

33

NOT NULL

34

EXEMPLU

Acest tip de constrngere se aplic unei


coloane a noii tabele i specific faptul c
aceasta nu poate conine valori nule. El
poate fi definit doar la nivel de coloan i
are urmtoarea sintax:
coloana [CONSTRAINT nume_constr] NOT NULL

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

35

CREATE TABLE SPEC


(CODS NUMBER(2),
NUME VARCHAR2(10) CONSTRAINT
NUMENENUL NOT NULL,
DOMENIU VARCHAR2(15) NOT
NULL);

F. Radulescu. Curs: Baze de date

36

Florin Radulescu - Baze de date (note de curs)

DETALIERE CONSTRANGERI

PRIMARY KEY

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).
F. Radulescu. Curs: Baze de date

37

Sintaxa la nivel de coloan:


coloana [CONSTRAINT nume_constrangere]
PRIMARY KEY

Sintaxa la nivel de tabel:


[,CONSTRAINT nume_constrangere] PRIMARY
KEY(lista_coloane)

F. Radulescu. Curs: Baze de date

38

EXEMPLE

PK DIN >1 ATRIBUT

CREATE TABLE SPEC(


CODS NUMBER(2) CONSTRAINT SPEC_PK PRIMARY
KEY,
NUME VARCHAR2(10),
DOMENIU VARCHAR2(15));
Si la nivel de tabela:
CREATE TABLE SPEC(
CODS NUMBER(2),
NUME VARCHAR2(10),
DOMENIU VARCHAR2(15),
CONSTRAINT SPEC_PK PRIMARY KEY(CODS));

CREATE TABLE BURSA(


PMIN NUMBER(4),
PMAX NUMBER(4),
TIP VARCHAR2(20),
SUMA NUMBER(4),
CONSTRAINT BURSA_PK PRIMARY KEY(PMIN,PMAX));

F. Radulescu. Curs: Baze de date

39

DETALIERE CONSTRANGERI

40

UNIQUE

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

41

Sintaxa la nivel de coloan:


coloana [CONSTRAINT nume_constrangere]
UNIQUE

Sintaxa la nivel de tabel:


 [,CONSTRAINT nume_constrangere]
UNIQUE(lista_coloane)

F. Radulescu. Curs: Baze de date

42

Florin Radulescu - Baze de date (note de curs)

EXEMPLUL 1

EXEMPLUL 1 cont.

Dac n tabela de SPEC nu pot exista


niciodat dou specializri cu acelai nume,
definiia anterioar se completeaz cu o
constrngere de tip UNIQUE:
CREATE TABLE SPEC(
CODS NUMBER(2) CONSTRAINT SPEC_PK
PRIMARY KEY,
NUME VARCHAR2(10) CONSTRAINT NUMES_UNIC
UNIQUE,
DOMENIU VARCHAR2(15));
F. Radulescu. Curs: Baze de date

43

EXEMPLUL 2

45

CONTINUT VALID

F. Radulescu. Curs: Baze de date

44

 n cazul n care o cheie definit cu UNIQUE conine


mai multe coloane, verificarea se face astfel:
 nu exist dou linii care au aceleai valori nenule
pentru toate coloanele cheii.
 nu exist dou linii care au aceleai valori nenule
pentru unele coloane ale cheii i valori nule n rest.
 Exemplu: n cazul unei tabele NUMERE creat cu
cererea:
CREATE TABLE NUMERE(
NUMAR1 NUMBER(4),
NUMAR2 NUMBER(4),
UNIQUE(NUMAR1, NUMAR2));

F. Radulescu. Curs: Baze de date

46

CONTINUT INVALID

NUMAR1 NUMAR2
------ -----NULL
NULL
NULL
NULL
1000
2000
1000
3000
NULL
2000
1000
NULL

F. Radulescu. Curs: Baze de date

CREATE TABLE SPEC(


CODS NUMBER(2) CONSTRAINT SPEC_PK PRIMARY
KEY,
NUME VARCHAR2(10),
DOMENIU VARCHAR2(15),
CONSTRAINT NUMES_UNIC UNIQUE(NUME));

CE E UNIC?

 n tabela BURSA nu pot exista dou burse cu aceeai


sum. Cererea de creare anterioar devine:
CREATE TABLE BURSA(
PMIN NUMBER(4),
PMAX NUMBER(4),
TIP VARCHAR2(20),
SUMA NUMBER(4) CONSTRAINT SUMA_UNICA
UNIQUE,
CONSTRAINT BURSA_PK PRIMARY KEY(PMIN,
PMAX));
 n acest caz n tabel nu pot exista dou linii care conin
aceeai valoare nenul pe coloana SUMA dar pot exista
oricte linii cu valori nule pe aceast coloan.
F. Radulescu. Curs: Baze de date

Aceeasi constrangere, la nivel de


tabela:

NUMAR1 NUMAR2
------ -----NULL
NULL
NULL
NULL
1000
2000
1000
3000
NULL
2000
1000
NULL
1000
2000
NULL
2000
1000
NULL
47

F. Radulescu. Curs: Baze de date

48

Florin Radulescu - Baze de date (note de curs)

DETALIERE CONSTRANGERI

FOREIGN KEY

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).

Prin aceast constrngere valorile unei


coloane/unor coloane sunt forate s fie
doar dintre cele ale cheii unei tabele
(cheie primar sau UNIQUE).
Coloanele constrnse n acest fel
formeaz ceea ce se numete n
terminologia de specialitate o cheie
straina sau cheie externa iar
constrngerea mai este denumit i de
integritate referentiala.

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

49

50

SINTAXA
 La nivel de coloan:
coloana [CONSTRAINT nume_constrangere]
REFERENCES tabela(coloana)
[ON DELETE CASCADE |
ON DELETE SET NULL]
 La nivel de tabel:
[,CONSTRAINT nume_constrangere] FOREIGN
KEY(lista_coloane)
REFERENCES tabela(lista_coloane)
[ON DELETE CASCADE |
ON DELETE SET NULL]
F. Radulescu. Curs: Baze de date

n cazul tabelei STUD avem dou coloane


care pot avea asociat o astfel de
constrngere:
 Coloana CODS poate fi constrns s conin doar
valori ale cheii primare a tabelei SPEC (format
dintr-o coloan cu acelai nume - CODS).
 Coloana TUTOR poate fi constrns s conin
doar valori nenule ale cheii primare a lui STUD MATR.

n acest caz cererea anterioara de creare


pentru STUD devine:
51

STUD:

52

OBSERVATII
n cazul n care tabela SPEC nu exist nc
sistemul va semnala eroarea: ORA-00942: table

CREATE TABLE STUD(


MATR NUMBER(4) PRIMARY KEY,
NUME VARCHAR2(10),
AN NUMBER(1) DEFAULT 1,
GRUPA VARCHAR2(6),
DATAN DATE,
LOC VARCHAR2(10) DEFAULT 'BUCURESTI',
TUTOR NUMBER(4) REFERENCES STUD(MATR),
PUNCTAJ NUMBER(4) DEFAULT 0,
CODS NUMBER(2),
CONSTRAINT CODS_FK FOREIGN KEY(CODS)
REFERENCES SPEC(CODS));
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

or view does not exist

n cazul n care tabela SPEC exist dar nu are


cheia CODS se semnaleaz eroarea: ORA-02270:

no matching unique or primary key for this


column-list

Dup crearea lui STUD, dac se ncearc


tergerea tabelei SPEC se semnaleaz eroarea:

ORA-02449: unique/primary keys n table


referenced by foreign keys
53

F. Radulescu. Curs: Baze de date

54

Florin Radulescu - Baze de date (note de curs)

OBSERVATII cont.

CLAUZA ON DELETE

La inserarea de noi linii n tabela STUD, acestea


trebuie s conin pe coloanele CODS i TUTOR
fie valori care exist deja n SPEC.CODS i
STUD.MATR, fie valori nule.
La ncercarea de a terge linii din tabelele SPEC i
STUD, dac acestea au valoari ale chei referite n
STUD prin constrngerile de mai sus se va
semnala de asemenea o eroare.
La ncercarea de a modifica valorile cheii n linii
din tabelele SPEC i STUD, dac acestea sunt
referite n STUD se va semnala de asemenea o
eroare.

 n cazul n care se dorete ca o linie dintr-o tabel


coninnd o valoare de cheie referit ntr-o alt
tabel (sau n aceeai tabel) s poat fi tears fr
a se obine un mesaj de eroare, la definirea
constrngerii se poate specifica modul n care se
trateaz aceast tergere din perspectiva tabelei care
refer valoarea:

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

55

EXEMPLU

56

EXEMPLU cont.
La tergerea unei specializri din tabela SPEC
vor fi teri automat i toi studenii din
tabela STUD avnd pe coloana CODS codul
acesteia.
La tergerea unui student care este tutorul
altor studeni, automat acestora li se va
modifica valoarea pe coloana TUTOR la una
nul.
Tabela SPEC poate fi golit - ceea ce va
antrena i golirea tabelei STUD - dar nu
tears.

CREATE TABLE STUD(


MATR NUMBER(4) PRIMARY KEY,
. . . . . . . . . . . . . . . . . . .
TUTOR NUMBER(4) REFERENCES STUD(MATR)
ON DELETE SET NULL,
. . . . . . . . . . . . . . . . . . .
CONSTRAINT CODS_FK FOREIGN KEY(CODS)
REFERENCES SPEC(CODS)
ON DELETE CASCADE);

F. Radulescu. Curs: Baze de date

 Daca se dorete ca la tergerea liniei coninnd o valoare de


cheie s fie terse suplimentar i toate liniile care refer
aceast valoare, se specific ON DELETE CASCADE
 Dac se dorete ca liniile care refer valoarea cheii
respective s nu fie terse, se specific ON DELETE SET
NULL care are urmtorul efect: n toate liniile care refer
acea valoare ea este nlocuit cu valori nule.

57

F. Radulescu. Curs: Baze de date

58

FK PENTRU UNIQUE

DETALIERE CONSTRANGERI

n cazul n care constrngerea se


definete pentru o cheie de tip UNIQUE
(care poate conine i valori nule) ea
este verificat pentru cheile strine
formate doar din valori nenule.

NOT NULL: valorile nu pot fi nule


PRIMARY KEY: definete cheia primar
a unei tabele
UNIQUE: definete o alt cheie a
tabelei
FOREIGN KEY: definete o cheie strin
(extern)
CHECK: introduce o condiie (expresie
logic).

F. Radulescu. Curs: Baze de date

59

F. Radulescu. Curs: Baze de date

60

10

Florin Radulescu - Baze de date (note de curs)

CHECK

SINTAXA

 Prin acest tip de constrngeri valorile aflate pe o linie a


tabelei sunt forate s verifice o condiie (expresie logic).
 Aceasta poate conine toate elementele prezentate
anterior pentru conditii, inclusiv apeluri de funcii, cu
cteva excepii:
 apelurile unor funcii ca SYSDATE, USER, UID
 referina la pseudocoloanele NEXTVAL, CURRVAL
(specifice secvenelor), LEVEL i ROWNUM)
 subcereri.
 O aceeai coloan poate participa la mai multe
constrngeri de acest tip, avnd fiecare o alt condiie
asociat.
 Condiia se evalueaz doar la nivelul liniei respective, fr
a se putea lua n considerare valori aflate pe alte linii ale
tabelei.
F. Radulescu. Curs: Baze de date

61

EXEMPLU
 PMIN i PMAX sunt pozitive
 PMIN < PMAX
 SUMA este ntre 0 i 500

 Cererea de creare va fi:


CREATE TABLE BURSA(
PMIN NUMBER(4) CHECK (PMIN >= 0),
PMAX NUMBER(4) CHECK (PMAX >= 0),
TIP VARCHAR2(20),
SUMA NUMBER(4) CHECK (SUMA BETWEEN 0 AND 500),
CONSTRAINT PMINPMAX CHECK (PMIN < PMAX));

63

EXEMPLU cont.

La nivel de tabel:


[,CONSTRAINT nume_constrangere]
CHECK (expresie_logica)

F. Radulescu. Curs: Baze de date

62

n cazul n care pe coloanele respective se


gsesc valori nule, linia nu este rejectat ci se
consider c verific expresia logic.
Pentru tabela BURSA definit ca mai sus se
pot introduce linii avnd valori nule pentru
unele din coloanele PMIN, PMAX i SUMA fr
a se semnala violarea constrngerilor de
integritate de tip CHECK.
Expresia logic asociat unei constrngeri
CHECK poate fi compus: cererea de creare
de mai sus poate fi rescris prin combinarea
tuturor condiiilor n una singur:
F. Radulescu. Curs: Baze de date

64

MODIFICAREA STRUCTURII
 Vizualizarea structurii tabelei
 Adaugarea unei coloane
 Stergerea unei coloane
 Modificarea unei coloane
 Adaugarea unei constrangeri
 Stergerea unei constrangeri
 Activare/dezactivare constrangeri
 Golirea unei tabele
 Stergerea unei tabele
 Redenumirea unei tabele
 Adaugarea de comentarii

CREATE TABLE BURSA(


PMIN NUMBER(4), PMAX NUMBER(4),
TIP VARCHAR2(20),
SUMA NUMBER(4),
CONSTRAINT BURSA_CK CHECK (PMIN < PMAX
AND PMIN >= 0 AND PMAX >= 0 AND SUMA
BETWEEN 0 AND 500));

F. Radulescu. Curs: Baze de date

coloana [CONSTRAINT nume_constrangere]


CHECK (expresie_logica)

EXEMPLU cont.

 Tabela BURSA poate avea asociate mai multe


constrngeri care verific urmtoarele condiii:

F. Radulescu. Curs: Baze de date

La nivel de coloan:

65

F. Radulescu. Curs: Baze de date

66

11

Florin Radulescu - Baze de date (note de curs)

1. VIZUALIZARE STRUCTURA
 Clientul SQL*Plus pune la dispoziie comanda DESCRIBE prin
care se pot afia numele coloanelor, tipul acestora i
eventualele constrngeri de tip NOT NULL.
 Sintaxa comenzii SQL*Plus este:
DESCRIBE nume_tabela
 Observaie: DESCRIBE nu este o cerere SQL ci o comand
SQL*Plus. Ea nu trebuie terminat cu punct i virgul (;).
 Exemplu. Pentru a obine descrierea tabelei SPEC folosim
comanda:
DESCRIBE SPEC
 Rezultat obinut:
Name
Null?
Type
--------------- -------- ----------------CODS
NUMBER(2)
NUME
VARCHAR2(10)
DOMENIU
VARCHAR2(15)
F. Radulescu. Curs: Baze de date

2. ADAUGARE COLOANA
Sintaxa:
ALTER TABLE nume_tabela ADD
(nume_coloana tip_date
[DEFAULT expresie] [constrangere]);

Exemplu: Adugarea unei noi coloane la


tabela SPEC n care se memoreaz anul
nfiinrii fiecrei specializri:
ALTER TABLE SPEC ADD(AN_INFIINTARE
NUMBER(4)
CONSTRAINT ANS_NENUL NOT NULL);
67

ADAUGARE COLOANA cont.

F. Radulescu. Curs: Baze de date

68

3. STERGERE COLOANA
Sintaxa:

Dac tabela conine deja cel puin o linie, pe


noua coloan vor fi prezente doar valori nule.
Adugarea unei coloane care are asociat o
constrngere de tip NOT NULL (ca n
exemplul anterior) nu se poate face dect n
cazul n care tabela nu conine nici o linie.
Coloana se va aduga ntotdeauna dup
celelalte, devenind ultima coloan din tabel.
F. Radulescu. Curs: Baze de date

ALTER TABLE nume_tabela DROP COLUMN


nume_coloana [CASCADE CONSTRAINTS];

sau
ALTER TABLE nume_tabela DROP (lista
coloane) [CASCADE CONSTRAINTS];

Exemplu: tergerea coloanei adugat anterior:


ALTER TABLE SPEC
DROP COLUMN AN_INFIINTARE;

69

F. Radulescu. Curs: Baze de date

70

STERGERE COLOANA cont.

UNUSED

Cererea se poate executa att n cazul n care


tabela este goal ct i dac ea conine deja
linii,
Dac tabela are doar o singur coloan,
aceasta nu se poate terge,
Opiunea CASCADE CONSTRAINTS terge
suplimentar toate constrngerile de
integritate n care sunt implicate coloanele
terse, inclusiv cele de tip FOREIGN KEY care
refer valorile coloanei sau coloanelor
respective.

 tergerea unei coloane este o operaie costisitoare


din punct de vedere al resurselor sistemului.
 De aceea, n cazul n care la un moment dat acesta
este foarte ncrcat tergerea se poate face n dou
etape:
 Etapa 1: Marcarea ca neutilizate a unei coloane sau a
unei liste de coloane prin opiunea SET UNUSED.
Sintaxa este:

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

71

ALTER TABLE nume_tabela SET


UNUSED(lista_coloane);

sau
ALTER TABLE nume_tabela SET UNUSED COLUMN
nume_coloana;
72

12

Florin Radulescu - Baze de date (note de curs)

UNUSED cont.

EXEMPLE

Etapa 2: tergerea efectiv a


coloanelor marcate ca neutilizate la un
moment ulterior de timp, cnd sistemul
nu mai este foarte ncrcat. Sintaxa
cererii este:
ALTER TABLE nume_tabela DROP
UNUSED COLUMNS;

Pentru marcarea coloanelor DATAN, LOC i


TUTOR din tabela STUD se pot executa
cererile:
ALTER TABLE STUD SET UNUSED(DATAN,
LOC);
ALTER TABLE STUD SET UNUSED COLUMN
TUTOR;

tergerea coloanelor marcate se face prin


cererea:
ALTER TABLE SPEC DROP UNUSED COLUMNS;

F. Radulescu. Curs: Baze de date

73

UNUSED - Observatii

F. Radulescu. Curs: Baze de date

74

4. MODIFICARE COLOANA
Sintaxa:

Coloanele marcate ca neutilizate:


 nu mai apar n structura afiat de
DESCRIBE,
 nu mai pot fi folosite n cererile SQL asupra
tabelei respective
 se pot aduga noi coloane n tabel avnd
acelai nume.

ALTER TABLE nume_tabela


MODIFY(nume_coloana [tip_date]
[DEFAULT expresie] [constrangere])

Prin aceast cerere se pot modifica


urmtoarele caracteristici ale unei coloane:
 Se poate schimba tipul de date al coloanei
 Se poate asocia o nou valoare implicit
 Se poate aduga o constrngere de tip NOT NULL
pentru acea coloan.

Printr-o singur cerere se pot efectua toate


operaiile de mai sus sau doar o parte a lor.
F. Radulescu. Curs: Baze de date

75

EXEMPLU

76

MODIFICARE COLOANA cont.

modificarea caracteristicilor coloanelor NUME


i DOMENIU din tabela SPEC este efectuat
prin urmtoarele trei cereri de tip ALTER
TABLE:

n ceea ce privete modificrile tipului


de date asociat unei coloane, acestea
pot fi:

ALTER TABLE SPEC MODIFY (DOMENIU


VARCHAR2(20) CONSTRAINT DOM_MENUL NOT
NULL);
ALTER TABLE SPEC MODIFY (DOMENIU
DEFAULT 'NECOMPLETAT');
ALTER TABLE SPEC MODIFY(NUME
CONSTRAINT NUME_NENUL NOT NULL);
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

77

 Creterea dimensiunii coloanelor de tip ir


de caractere,
 Creterea dimensiunii i preciziei datelor
numerice,
 Schimbarea tipurilor CHAR n VARCHAR2 i
reciproc doar dac au aceeai dimensiune.
F. Radulescu. Curs: Baze de date

78

13

Florin Radulescu - Baze de date (note de curs)

MODIFICARE COLOANA cont.

5. ADAUGARE CONSTRANGERE

Doar n cazul n care tabela este goal sau


coloana conine doar valori nule se mai pot
efectua i operaiile:

Sintaxa:
ALTER TABLE nume_tabela
ADD [CONSTRAINT nume] tip(coloana);

 Scderea dimensiunii coloanelor de tip ir de


caractere
 Scderea dimensiunii i preciziei datelor numerice,
 Orice alt schimbare a tipului coloanei respective.

n cazul schimbrii valorii implicite pentru o


coloan, noua valoare va fi folosit doar
pentru inserrile de linii ulterioare modificrii.
F. Radulescu. Curs: Baze de date

79

EXEMPLU

F. Radulescu. Curs: Baze de date

80

6. STERGERE CONSTRANGERE

ALTER TABLE SPEC


ADD CONSTRAINT NUME_NENUL
CHECK(NUME IS NOT NULL);
ALTER TABLE SPEC
ADD CONSTRAINT NUME_UNIC
UNIQUE(NUME);
ALTER TABLE SPEC
ADD CONSTRAINT NUME_5
CHECK(LENGTH(NUME)>5);
F. Radulescu. Curs: Baze de date

Tipul constrngerii nu poate fi NOT NULL. n


schimb se pot defini constrngeri de tip
CHECK coninnd condiii de acest tip.
Exemplu: Se dorete ca pe coloana NUME a
tabelei SPEC s nu existe valori nule sau
identice i lungimea minim s fie de 6
caractere:

81

 Sintaxa:
ALTER TABLE nume_tabela DROP PRIMARY KEY
[CASCADE];
ALTER TABLE nume_tabela DROP
UNIQUE(lista_coloane)
[CASCADE];
ALTER TABLE nume_tabela DROP CONSTRAINT nume
[CASCADE];
 Efectul acestor cereri este:
 DROP PRIMARY KEY i DROP UNIQUE specific tergerea
constrngerii de tip cheie primar/cheie unic pentru tabela
respectiv. Constrngerea poate s nu aib un nume asociat
la definire.
 DROP CONSTRAINT specific tergerea unei constrngeri
avnd asociat un nume.
 Opiunea CASCADE se aplic n cazul n care exist
constrngeri dependente i specific tergerea suplimentar
a acestora.
F. Radulescu. Curs: Baze de date

82

7. ACTIVARE/DEZACTIVARE
CONSTRANGERE

EXEMPLU
Stergerea cheii primare a tabelei SPEC
i a constrngerilor dependente de
acestea (de exemplu cea de cheie
strin din STUD) se face astfel:

 Sintaxa: Dezactivare:

ALTER TABLE SPEC DROP PRIMARY KEY


CASCADE;

ALTER TABLE nume_tabela DISABLE PRIMARY KEY


[CASCADE]
ALTER TABLE nume_tabela
DISABLE UNIQUE(lista_coloane) [CASCADE]
ALTER TABLE nume_tabela DISABLE CONSTRAINT
nume
[CASCADE]

 Reactivare:
ALTER TABLE nume_tabela ENABLE PRIMARY KEY;
ALTER TABLE nume_tabela ENABLE
UNIQUE(lista_coloane);
ALTER TABLE nume_tabela ENABLE CONSTRAINT
nume;

F. Radulescu. Curs: Baze de date

83

F. Radulescu. Curs: Baze de date

84

14

Florin Radulescu - Baze de date (note de curs)

EFECT

EXEMPLU

 DISABLE specific dezactivarea constrngerii de


integritate respective.
 Opiunea CASCADE duce la dezactivarea
suplimentar a tuturor constrngerilor dependente.

Dezactivarea i reactivarea
constrngerii de cheie primar SPEC_PK
pentru tabela SPEC:

 ENABLE CONSTRAINT specific reactivarea


constrngerii respective.
 n momentul reactivrii sistemul verific dac datele
la care se refer constrngerea sunt conforme cu
aceasta.
 n cazul n care nu se constat respectarea
constrngerii, ea nu este activat i se genereaz un
mesaj de eroare. n caz de activare cu succes,
constrngerile dependente nu sunt reactivate.
F. Radulescu. Curs: Baze de date

85

8. GOLIRE TABELA

86

Sintaxa:
DROP TABLE nume_tabela;

Exemplu: tergerea tabelei SPEC se poate


face prin cererea SQL
DROP TABLE SPEC;

Observaie: tergerea unei tabele este


definitiv.
O dat tears ea poate fi restaurat doar din
salvrile bazei de date efectuate de
administrator.
87

10. REDENUMIRE TABELA

F. Radulescu. Curs: Baze de date

88

11. COMENTARII
 Tabelele i coloanele acestora pot avea asociat un
comentariu. Acesta este un text i se asociaz astfel:

Sintaxa:
RENAME nume_vechi TO nume_nou

Exemplu: redenumirea tabelei SPEC se poate


face prin cererea SQL
RENAME SPEC TO SPECIALIZARI;

Observaie: comanda RENAME nu este


specific tabelelor ci tuturor obiectelor din
baza de date.
Cu ajutorul ei se pot redenumi de asemenea
vederi, secvene i sinonime.
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

9. STERGERE TABELA

 Sintaxa:
TRUNCATE TABLE nume_tabela [REUSE
STORAGE];
 Exemplu: golirea tabelei SPEC se poate face prin
cererea SQL
TRUNCATE TABLE SPEC;
 Opiunea REUSE STORAGE este folosit pentru a
specifica faptul c spaiul ocupat de liniile terse
rmne alocat tabelei i poate fi folosit la inserrile
ulterioare n aceasta.
 n lipsa acestei opiuni spaiul respectiv devine
disponibil, putnd fi utilizat i pentru alte tabele.
F. Radulescu. Curs: Baze de date

ALTER TABLE SPEC DISABLE PRIMARY


KEY CASCADE;
ALTER TABLE SPEC ENABLE
CONSTRAINT SPEC_PK;

89

COMMENT ON TABLE nume_tabela IS 'text;


COMMENT ON COLUMN nume_tabela.cume_coloana IS
'text;

 Acestea sunt stocate n dicionarul de date n


tabelele:
 USER_COL_COMMENTS i ALL_COL_COMMENTS:

comentariile asociate coloanelor
 USER_TAB_COMMENTS i USER_TAB_COMMENTS

comentariile asociate tabelelor

F. Radulescu. Curs: Baze de date

90

15

Florin Radulescu - Baze de date (note de curs)

DICTIONARUL DE DATE

DICTIONARUL DE DATE cont.

Una dintre cerinele fundamentale pentru ca


un sistem de gestiune a bazelor de date s fie
considerat cu adevrat relaional este aceea
ca datele interne ale acestuia s fie
organizate i stocate n acelai mod cu datele
utilizatorilor i aplicaiilor care l folosesc.
n acest sens, i sistemul Oracle i ine
aceste date, numite uzual dictionarul de date
al sistemului, sub form de tabele, iar
utilizatorii care au drepturile necesare le pot
accesa fie direct fie folosind o serie de vederi
i sinonime puse la dispoziie de sistem.

 Exist mai multe categorii de vederi prin care uzual


aceste date sunt accesate, fiecare avnd ca i
caracteristic un prefix al numelui care definete
categoria respectiv.
 Cele mai folosite vederi intr n categoriile definite de
prefixele urmtoare:

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

91

EXEMPLE

USER_CATALOG
SELECT * FROM USER_CATALOG;

 este urmtorul:
TABLE_NAME
---------------BURSA
EVENIMENT
NUMERE
SPEC
STUD

USER_CATALOG
USER_OBJECTS
USER_CONSTRAINTS
USER_CONS_COLUMNS
F. Radulescu. Curs: Baze de date

93

USER_OBJECTS

TABLE_TYPE
----------TABLE
TABLE
TABLE
TABLE
TABLE

F. Radulescu. Curs: Baze de date

94

USER_CONSTRAINTS

Conine numele, tipul i alte informaii despre


obiectele deinute de utilizator, inclusiv
indeci.
Informaii sumare despre coninutul vederii
se pot obine cu cererea:
SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS;

Rezultatul include rezultatul obinut n urma


cererii anterioare (USER_CATALOG).
F. Radulescu. Curs: Baze de date

92

 utilizator. Are doar dou coloane, prima coninnd


numele i al doilea tipul obiectului. O parte a
coninutului acestei tabele, obinut cu cererea SQL:

Prezentarea tuturor acestor vederi nu face


obiectul lucrrii de fa.
n continuare sunt prezentate cteva dintre
cele mai importante, legate mai ales de
inventarul de tabele i constrngeri de
integritate existent la un moment dat n
sistem:





 Prefixul USER_ este comun vederilor prin care se pot accesa


informaii despre obiectele deinute de utilizator.
 Prefixul ALL_ este specific vederilor care conin informaii
despre toate tabelele la care utilizatorul are acces.
 Prefixul DBA_ este folosit pentru vederile accesibile doar
utilizatorilor care au drepturi (privilegii) de administrator al
bazei de date.

95

Conine date despre constrngerile definite


de utilizator. Dintre coloanele sale
menionm:
 CONSTRAINT_NAME : Numele constrngerii
 CONSTRAINT_TYPE: Tipul acesteia, codificat pe
un caracter: P: cheie primar, U: cheie (UNIQUE),
R pentru integritatea referenial i C pentru
constrngerile CHECK (aici sunt incluse i cele de
tip NOT NULL)
 SEARCH_CONDITION: Condiia asociat
constrngerii
F. Radulescu. Curs: Baze de date

96

16

Florin Radulescu - Baze de date (note de curs)

EXEMPLU

USER_CONS_COLUMNS
 Conine informaii despre coloanele care sunt implicate n
constrngerile de integritate. Cererea urmtoare afieaz
perechi (nume constrngere, nume coloan implicat) pentru
constrngerea BURSA_CK:

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,


SEARCH_CONDITION
FROM USER_CONSTRAINTS;
Rezultat:
CONSTRAINT_NAME
C SEARCH_CONDITION
------------------------ - ---------------------BURSA_CK
C PMIN < PMAX AND PMIN >= 0
AND PMAX >= 0 AND SUMA
BETWEEN 0 AND 500
DOM_NENUL
U
DOM_5
C LENGTH(NUME)>5
NUME_NENUL
C NUME IS NOT NULL

F. Radulescu. Curs: Baze de date

97

SELECT CONSTRAINT_NAME, COLUMN_NAME


FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = 'BURSA_CK';
 Rezultatul este:
CONSTRAINT_NAME
-----------------------BURSA_CK
BURSA_CK
BURSA_CK

COLUMN_NAME
-------------------PMIN
PMAX
SUMA

F. Radulescu. Curs: Baze de date

98

CATE VEDERI SUNT?


Exist peste 2000 de vederi puse la
dispoziie de sistemul Oracle (V9) dintre
care peste 200 n fiecare dintre
categoriile USER_, ALL_ i DBA_.
O descriere complet a lor se gsete n
documentaia aferent sistemului.
Lista tuturor vederilor poate fi obinut
cu cererea:

Sfarsitul capitolului

CREAREA TABELELOR

SELECT VIEW_NAME FROM ALL_VIEWS;


F. Radulescu. Curs: Baze de date

99

F. Radulescu. Curs: Baze de date

100

17

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