Sunteți pe pagina 1din 10

Florin Radulescu - Baze de date (note de curs)

STUD

SQL - 7

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

ALTE OBIECTE ALE


BAZEI DE DATE

F. Radulescu. Curs: Baze de date

SPEC si BURSA

F. Radulescu. Curs: Baze de date

OBIECTIV

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

Acest capitol prezint modul de lucru cu


alte obiecte care pot exista ntr-o baz
de date Oracle:
 vederi,
 secvene,
 indeci
 sinonime.

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
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

F. Radulescu. Curs: Baze de date

VEDERI

VEDERI (2)

n capitolele anterioare a fost prezentat


posibilitatea folosirii unei subcereri n clauza
FROM a unei cereri SELECT precum i ca baz
de pornire pentru cereri de tip INSERT,
DELETE i UPDATE.
Inconvenientul principal n aceast abordare
este inexistena unui nume asociat cererii
respective.
n unele cazuri se pot folosi aliasuri de tabel
dar rescrierea subcererii este necesar n
orice cerere care pleac de la aceasta.

Ca i toate celelalte sisteme relaionale,


Oracle permite asocierea unui nume
pentru o cerere SQL de tip SELECT i
stocarea acesteia ca obiect al bazei de
date.
Termenul care desemneaz o astfel de
cerere este vedere (n limba englez:
view).

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

Florin Radulescu - Baze de date (note de curs)

VEDERI UTILIZARE (1)

VEDERI UTILIZARE (2)


 Ori de cte ori se execut o cerere avnd la baz o
vedere, ea este recalculat. Astfel, orice modificare
efectuat n tabelele pe baza crora e definit
vederea se reflect automat n aceasta.
 Structura unei vederi nu se poate modifica prin cereri
de tip ALTER ci prin recrearea vederii cu specificarea
unei alte cereri SQL.
 Constrngerile de integritate nu se pot defini la nivel
de vedere. O vedere motenete implicit toate
constrngerile definite n tabelele pe baza crora este
definit pentru coloanele care sunt regsite prin
cererea asociat ei.

O vedere se comport ca o tabel n cazul


execuiei de cereri SELECT i poate fi folosit
uneori pentru efectuarea de actualizri ale
bazei de date.
Exist ns i diferene ntre o vedere i o
tabel, mai ales din punct de vedere al
implementrii:
n cazul unei vederi, baza de date stocheaz
definiia acesteia (cererea SQL ca ir de
caractere) i nu datele regsite prin aceasta.
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

VEDERI UTILIZARE (3)

VEDERI-SINTAXA (1)

Vederile permit implementarea de scheme externe prin


care diverse categorii de utilizatori acceseaz doar
acele poriuni din baza de date pe care le folosesc n
mod obinuit, asigurndu-se astfel:
 Confidenialitatea datelor: utilizatorii care acceseaz
baza de date doar prin intermediul unor vederi pot fi
restricionai n ceea ce privete datele pe care le pot
utiliza prin nsi definiia vederilor respective (ele nu
conin coloanele/liniile/datele la care nu se dorete
accesul acelei categorii de utilizatori).
 Asigurarea corectitudinii datelor: prin faptul c un
utilizator nu are acces la date pe care uzual nu le
folosete este mpiedicat coruperea accidental a
celorlalte date din cauza necunoaterii semnificaiei
lor.

Sintaxa cererii de creare a unei vederi este urmtoarea:


CREATE [OR REPLACE] [FORCE | NOFORCE]
VIEW nume_vedere
[(lista_de_coloane)]
AS subcerere
[WITH CHECK OPTION [CONSTRAINT
nume_constrangere]]
[WITH READ ONLY [CONSTRAINT
nume_constrangere]];
Semnificaia elementelor prezente ntr-o astfel de cerere
este urmtoarea:
 nume_vedere - specific numele asociat vederii
respective. Respect aceleai condiii ca n cazul
numelor de tabele.
 subcerere - cererea SQL de tip SELECT asociat vederii.

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

10

VEDERI-SINTAXA (2)

VEDERI-SINTAXA (3)

Elementele opionale au urmtoarea semnificaie:


 lista_de_coloane - specific numele coloanelor din
vedere. Acestea trebuie s respecte restriciile uzuale
pentru nume de coloane descrise n capitolele
precedente (30 de caractere, etc.). n lipsa acestei
opiuni coloanele vederii au aceleai nume cu ale
rezultatului cererii SQL asociate.
 n cazul n care rezultatul cererii asociate vederii are
nume de coloane care nu respect restriciile privind
astfel de nume este obligatorie fie folosirea
listei_de_coloane fie modificarea cererii prin
adugarea unor aliasuri de coloan corespunztoare.

 OR REPLACE - n cazul n care exist deja o vedere


cu acel nume, ea este nlocuit. Este modul uzual
prin care se modific structura i coninutul unei
vederi. n lipsa acestei opiuni sistemul semnaleaz n
astfel de situaii o eroare.
 FORCE | NOFORCE (valoare implicit NOFORCE) - la
crearea unei vederi sistemul verific existena
tabelelor folosite n definiia acesteia i semnaleaz
erori n cazul detectrii unor absene.
 n cazul folosirii opiunii FORCE aceast verificare nu
mai duce la eroare i vederea este stocat n baza de
date. Vederea nu poate ns fi folosit pn cnd
discrepana dintre definiia sa i structura bazei de
date nu este nlaturat.

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

11

12

Florin Radulescu - Baze de date (note de curs)

VEDERI-SINTAXA (4)

EXEMPLE

 WITH CHECK OPTION - ca i n capitolul precedent,


aceast opiune mpiedic efectuarea de modificri
ale coninutului bazei de date dac liniile
inserate/actualizate nu sunt regsite prin cererea
asociat vederii. Aceast opiune este din categoria
constrngerilor de integritate i se poate asocia un
nume cu CONSTRAINT nume.
 WITH READ ONLY - nu sunt permise modificri ale
datelor prin intermediul vederii. De asemenea se
poate asocia un nume pentru aceasta constrngere.
 Asocierea de nume pentru ultimele dou opiuni
permite activarea i dezactivarea lor.
F. Radulescu. Curs: Baze de date

CREATE OR REPLACE VIEW STUD_AN1 AS


SELECT * FROM STUD WHERE AN = 1
WITH CHECK OPTION;
CREATE OR REPLACE VIEW LISTA_AN1
(MATRICOLA, NUMELE, ANUL, NRPUNCTE) AS
SELECT MATR, NUME, AN, PUNCTAJ
FROM STUD_AN1
WHERE CODS = 21
WITH READ ONLY;
13

OBSERVATII

15

STERGERE VEDERI

Se pot defini vederi avnd asociate cereri SQL


orict de complicate. Un exemplu de vedere
avnd la baza joinul celor trei tabele STUD,
SPEC i BURSA este urmtorul:
CREATE OR REPLACE VIEW LISTA_BURSA AS
SELECT MATR, ST.NUME NUMESTUD, AN,
PUNCTAJ AS PCT,
SP.NUME NUMESPEC, SUMA
FROM STUD ST, SPEC SP, BURSA
WHERE ST.CODS = SP.CODS AND
PUNCTAJ BETWEEN PMIN AND PMAX
ORDER BY SP.NUME, PUNCTAJ DESC;
F. Radulescu. Curs: Baze de date

16

MODIFICARE DATE PRIN VEDERI


tergere linii prin vederi
Cererea DELETE poate avea la baz o
vedere dac aceasta verific
urmtoarele restricii:
Are la baz o singur tabel
Nu conine funcii de grup
Nu conine clauza GROUP BY
Nu conine clauza DISTINCT
Nu conine funcia ROWNUM

tergerea unei vederi se face cu cererea


DROP VIEW. Sintaxa acesteia este:
DROP VIEW nume_vedere

Exemplu: tergerea vederilor STUD_AN1 i


LISTA_A1 se face cu cererile:
DROP VIEW STUD_AN1;
DROP VIEW LISTA_AN1;

Fiind o comand DDL, tergerea unei vederi


nu poate fi revocat cu ROLLBACK.
F. Radulescu. Curs: Baze de date

14

ALT EXEMPLU

 O vedere se poate folosi pentru definirea altor vederi


(LISTA_AN1 e definit pe baza STUD_AN1).
 Prin vederea STUD_AN1 nu se pot insera dect
studeni de anul 1 i nu se poate modifica valoarea
anului de studiu din 1 n alt valoare, nul sau
nenul (constrngerea WITH CHECK OPTION).
 Prin vederea LISTA_AN1 se pot efectua doar regsiri
de date (constrngerea WITH READ ONLY).
 Numele coloanelor din vederea LISTA_AN1 este altul
dect cel din tabela STUD i vederea STUD_AN1 ca
urmare a folosirii unei liste de nume n cererea de
creare.
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

17

F. Radulescu. Curs: Baze de date

18

Florin Radulescu - Baze de date (note de curs)

EXEMPLE (1)

EXEMPLE (2)

 Urmtoarele vederi nu pot fi folosite pentru tergere


deoarece ncalc una sau mai multe din restriciile de mai
sus:
 Exemplul 1: Vedere care conine DISTINCT, grupare i
funcii de grup:
CREATE OR REPLACE VIEW NU_STERGE AS
SELECT DISTINCT MAX(PUNCTAJ) MAXIM FROM
STUD
GROUP BY CODS;
 Exemplul 2: Vedere care conine ROWNUM i join:
CREATE OR REPLACE VIEW NU_STERGE AS
SELECT ROWNUM NRCRT, ST.NUME NUMESTUD,
SP.NUME NUMESPEC
FROM STUD ST, SPEC SP
WHERE ST.CODS = SP.CODS;
F. Radulescu. Curs: Baze de date

19

MODIFICARE DATE PRIN VEDERI


Actualizare
Pentru a efectua actualizri (UPDATE)
prin intermediul unei vederi aceasta
trebuie s verifice urmtoarele restricii:
Vederea verific toate restriciile
enumerate anterior pentru tergere,
Comanda UPDATE nu actualizez
coloanele definite prin expresii.
F. Radulescu. Curs: Baze de date

21

EXEMPLU (2)

F. Radulescu. Curs: Baze de date

20

EXEMPLU (1)
Prin intermediul vederii TBURSA
se pot actualiza toate coloanele vederii care
provin din coloane ale tabelei BURSA dar
nu se poate specifica modificarea coloanei
suplimentare SUMAMARITA definit de
expresia aritmetica SUMA*1.5:
CREATE OR REPLACE VIEW TBURSA AS
SELECT PMIN MINIM, PMAX MAXIM,
TIP TIPBURSA, SUMA, SUMA*1.5
SUMAMARITA
FROM BURSA;
F. Radulescu. Curs: Baze de date

22

MODIFICARE DATE PRIN VEDERI


Inserare
Pentru a se putea insera noi linii prin
intermediul unei vederi, aceasta trebuie s
satisfac urmtoarele restricii:
Vederea verific toate restriciile enumerate
anterior pentru tergere,
Vederea conine toate coloanele tabelei de
baz pentru care exist constrngeri de tip
NOT NULL
Comanda de inserare nu ncearc s insereze
date n coloane care provin din expresii.

 Urmtoarea actualizare va mri valoarea sumei n


cazul bursei avnd punctajul minim 2500:
UPDATE TBURSA
SET SUMA = 400
WHERE MINIM = 2500;

 n schimb cererea de actualizare:


UPDATE TBURSA
SET SUMAMARITA = 600
WHERE MINIM = 2500;

 va semnala eroarea ORA-01733: virtual column not


allowed here deoarece se ncearc actualizarea unei
coloane definite printr-o expresie.
F. Radulescu. Curs: Baze de date

n ambele cazuri a fost nevoie de utilizarea unor


aliasuri de coloan deoarece:
MAX(PUNCTAJ) nu respect convenia pentru
nume de coloane (conine paranteze).
ST.NUME i SP.NUME duc la crearea unei
vederi avnd dou coloane cu acelai nume
(NUME).
ROWNUM este un nume ilegal de coloan
(cuvnt rezervat SQL)

23

F. Radulescu. Curs: Baze de date

24

Florin Radulescu - Baze de date (note de curs)

EXEMPLU (1)

EXEMPLU (2)

cazul vederii TBURSA descris mai sus,


aceasta conine toate coloanele tabelei
BURSA (deci inclusiv pe cele pentru care am
putea avea constrngeri de tip NOT NULL) i
respect i restriciile enumerate la tergere.
Rezult c vom putea executa cu succes o
cerere de inserare de tipul:

n schimb cererea
INSERT INTO TBURSA
VALUES (5000, 9999,
'SUPLIMENTARA', 500, 750);

va returna eroarea ORA-01733: virtual


column not allowed here.

INSERT INTO TBURSA


(MINIM, MAXIM, TIPBURSA, SUMA)
VALUES (5000, 9999, 'SUPLIMENTARA',
500);
F. Radulescu. Curs: Baze de date

25

F. Radulescu. Curs: Baze de date

OBSERVATII

OBIECTE

Operaiile de modificare a coninutului


tabelelor prin intermediul vederilor definite pe
baza lor trebuie s respecte toate
constrngerile de integritate ale acestora.
De exemplu:
 nu se poate terge o linie printr-o vedere dac ea
conine o cheie referit prin FOREIGN KEY,
 nu se pot insera linii care duplic o valoare de
cheie primar sau
 nu se poate actualiza o linie astfel nct o
constrngere de tip CHECK nu mai este verificat.
F. Radulescu. Curs: Baze de date

26

27

 vederi,
 secvene,
 indeci
 sinonime.

F. Radulescu. Curs: Baze de date

28

SECVENTE

SECVENTE cont.

 n multe aplicaii este nevoie de generarea unor


secvene de numere care s fie folosite n comenzi de
tip INSERT sau UPDATE pentru valorile cheilor
primare ale nregistrrilor inserate sau modificate.
 Soluia calculrii unei valori maxime i a incrementrii
ei nu este corect n contextul unei utilizri
concurente a datelor.
 O cerere de tipul urmtor:

Soluia care se folosete n Oracle este


aceea a definirii unor obiecte numite
secvene care pot fi apelate n cereri
SQL i care nu returneaz niciodat o
aceeai valoare.
O secven nu este asociat unei tabele
ci poate fi folosit pentru a genera
valori care se utilizeaz oriunde este
necesar.

SELECT MAX(MATR) + 1
FROM STUD;

nu ne garanteaz obinerea de valori unice pentru


numerele matricole din nregistrrile inserate n
tabela STUD deoarece ea poate fi executat simultan,
returnnd aceeai valoare.
F. Radulescu. Curs: Baze de date

29

F. Radulescu. Curs: Baze de date

30

Florin Radulescu - Baze de date (note de curs)

SECVENTE SINTAXA (1)

SECVENTE SINTAXA (1)


 nume_secventa: numele obiectului de tip secven.
Respect conveniile Oracle privitoare la nume.
 pas: fiecare valoare generat se obine din
precedenta prin adugarea acestui pas. Implicit pasul
are valoarea 1. n cazul n care valoarea sa este
negativ secvena este descresctoare
 valoare_initiala: prima valoare generat de secven.
 valoare_maxima: n cazul specificrii unei astfel de
valori, secvena nu poate genera valori mai mari
dect aceasta. Implicit nu exist o limitare superioar
a valorilor generate (NOMAXVALUE).

Sintaxa definirii unei secvene este


urmtoarea:
CREATE SEQUENCE nume_secventa
[INCREMENT BY pas]
[START WITH valoare_initiala]
[MAXVALUE valoare_maxima | NOMAXVALUE]
[MINVALUE valoare_minima | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE numar_valori | NOCACHE];

F. Radulescu. Curs: Baze de date

31

SECVENTE SINTAXA (2)

32

EXEMPLU

 valoare_minima: n cazul secvenelor descresctoare


secvena nu poate genera valori mai mici dect
aceasta. Implicit nu exist o limitare inferioar a
valorilor generate (NOMINVALUE).
 CYCLE: n cazul atingerii valorii maxime sau minime,
secvena repornete de la valoarea iniial. Implicit
secvenele se creaz cu NOCYCLE (fr ciclare).
 CACHE numar_valori: implicit sistemul genereaz i
ine n memorie urmtoarele 20 de valori din
secven. n cazul n care se dorete ca numrul de
valori din memorie s fie altul folosete aceast
opiune.
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

33

SECVENTE - FOLOSIRE

Pentru a genera noi numere matricole


care s porneasc de la valoarea 5000,
pasul de incrementare s fie 2 iar
valoarea maxim s fie 9998 se creaz
secvena MATRICOLA cu cererea:
CREATE SEQUENCE MATRICOLA
INCREMENT BY 2
START WITH 5000
MAXVALUE 9998;
F. Radulescu. Curs: Baze de date

34

OBSERVATIE

Fiecare secven se folosete prin intermediul celor


dou pseudocoloane pe care le are:
 nume_secventa.NEXTVAL returneaz urmtoarea
valoare din secven.
 nume_secventa.CURRVAL returneaz ultima valoare
furnizat deja de secven.

Inserarea unui nou student pentru care LUCA


este tutor nu se poate face cu cererea:

Exemplu: inserarea unui nou student folosind un numr


matricol generat de secvena:

n acest caz, dei CURRVAL este folosit n


lista de valori naintea lui NEXTVAL, att n
coloana MATR ct i n TUTOR va fi inserat
aceeai valoare (cea dat de NEXTVAL).

INSERT INTO STUD (TUTOR, MATR, NUME,


AN, GRUPA, DATAN, LOC, PUNCTAJ, CODS)
VALUES(MATRICOLA.CURRVAL,
MATRICOLA.NEXTVAL, 'GEO', 1, '1111B',
'14-MAY-85', 'IASI', 1500, 11);

INSERT INTO STUD VALUES(MATRICOLA.NEXTVAL,


'LUCA', 4, '1141B', '14-MAY-82', 'IASI',
NULL, 1500, 24);

F. Radulescu. Curs: Baze de date

35

F. Radulescu. Curs: Baze de date

36

Florin Radulescu - Baze de date (note de curs)

NEXTVAL: DA!

NEXTVAL: NU!

Pe lng lista de valori pentru inserarea


unei noi linii, NEXTVAL i CURRVAL mai
pot fi folosite:
n clauza SET a unui UPDATE,
n clauza SELECT a unei subcereri doar
dac aceasta face parte dintr-o
comand de inserare a rezultatelor sale,
ntr-o clauz SELECT a unei cereri
aflat pe primul nivel.
F. Radulescu. Curs: Baze de date

37

SECVENTE - MODIFICARE

F. Radulescu. Curs: Baze de date

38

SECVENTE - STERGERE

 Cererea prin care se modific parametrii unei secvene are


urmtoarea sintax:

tergerea unei secvene se face prin


comanda

ALTER SEQUENCE nume_secventa


[INCREMENT BY pas]
[MAXVALUE valoare_maxima | NOMAXVALUE]
[MINVALUE valoare_minima | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE numar_valori | NOCACHE];

DROP SEQUENCE nume_secventa;

Fiind o comand DDL, tergerea unei


secvene nu poate fi revocat cu
ROLLBACK.

 Semnificaia clauzelor este cea deja menionat la cererea de


creare. Singurul element care nu se poate modifica este
valoarea de start.
 Noile valori ale parametrilor se aplic pentru valorile generate
dup modificarea secvenei. n cazul clauzelor MAXVALUE i
MINVALUE, valorile respective nu pot fi mai mici, respectiv mai
mari decat valoarea curent a secvenei.

F. Radulescu. Curs: Baze de date

NEXTVAL i CURRVAL nu se pot folosi:


n clauza SELECT a cererii care definete o
vedere,
ntr-o cerere SELECT DISTINCT
ntr-o cerere SELECT coninnd GROUP BY,
HAVING sau ORDER BY,
n subcereri ale unor cereri SELECT, DELETE
sau UPDATE,
ca valoare implicit de coloan n cereri
CREATE TABLE sau ALTER TABLE.

39

OBIECTE

F. Radulescu. Curs: Baze de date

40

INDECSI
 Un index este o structur de cutare rapid care
poate fi folosit de sistem pentru creterea vitezei de
evaluare a cererilor prin faptul c parcurgerea
tabelelor nu se mai face secvenial, nregistrare cu
nregistrare, ci sunt accesate direct liniile necesare
cererii respective.
 Sistemul Oracle creaz automat indeci de tip unic
pentru cheile specificate la crearea tabelei prin
constrngerile PRIMARY KEY i UNIQUE.
 n plus fa de acetia se pot crea i alii, unici sau
neunici (n acest ultim caz valorile indexate se pot
repeta) prin cererea CREATE INDEX

 vederi,
 secvene,
 indeci
 sinonime.

F. Radulescu. Curs: Baze de date

41

F. Radulescu. Curs: Baze de date

42

Florin Radulescu - Baze de date (note de curs)

INDECSI SINTAXA

EXEMPLE cont.
Exemplul 2: n cazul n care se execut
frecvent cereri de cutare dup locul
naterii i codul specializrii studenilor,
se poate crea un index multi-coloan:

CREATE INDEX nume index


ON nume_tabela (expresie1 [,
expresie2, ...]);

Exemplul 1: n cazul n care se execut


frecvent cereri de cutare dup locul
naterii studenilor, se poate crea un
index mono-coloan dup acesta:

CREATE INDEX INDEX_LOC_CODS


ON STUD (LOC, CODS);

CREATE INDEX INDEX_LOC


ON STUD (LOC);
F. Radulescu. Curs: Baze de date

43

F. Radulescu. Curs: Baze de date

44

EXEMPLE cont.

OBSERVATII

Exemplul 3: n cazul n care se execut


frecvent cereri de cutare dup anul i locul
naterii studenilor, se poate crea indexul
urmtor.
Acesta folosete o expresie pentru
extragerea anului naterii:
CREATE INDEX INDEX_AN_LOC ON STUD
(TO_NUMBER(TO_CHAR(DATAN, 'YYYY')),
LOC);

Indecii sunt meninui automat de sistem.


Orice modificare a tabelei este nsoit de
reactualizarea indecilor dac valorile pe baza
crora acetia au fost creai se modific.
Din aceast cauz crearea unui numr mare
de indeci pentru tabele care se actualizeaz
frecvent poate duce nu la creterea vitezei de
execuie ci la scderea sa.
n documentaia sistemului sunt enumerate
cazurile n care este indicat crearea de
indeci i cazurile n care aceasta este
contraproductiv.

F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

45

46

INDECSI: DA!

INDECSI: NU!

Coloanele conin un procent nsemnat de


valori nule (crete viteza de regsire a
nregistrrilor care conin valori nenule).
Coloana/coloanele/expresiile respective sunt
folosite n clauza WHERE a unor cereri
executate frecvent.
Coloanele conin o mare varietate de valori,
Tabela are un numr mare de linii i
majoritatea execuiilor de cereri afecteaz un
procent de maxim 4% din acestea

Tabela are un numr mic de linii.


Majoritatea execuiilor de cereri afecteaz un
procent mai mare de 4% din liniile tabelei.
Coloana/coloanele/expresiile respective nu
sunt folosite n clauza WHERE a unor cereri
executate frecvent.
Tabela este frecvent modificat (prin INSERT,
UPDATE sau DELETE).
Condiiile din WHERE conin expresii calculate
pe baza coloanelor respective. n acest caz
indexul nu poate fi utilizat pentru a crete
viteza de execuie.

F. Radulescu. Curs: Baze de date

47

F. Radulescu. Curs: Baze de date

48

Florin Radulescu - Baze de date (note de curs)

INDEX - STERGERE

OBIECTE

tergerea unui index se face prin


cererea

 vederi,
 secvene,
 indeci
 sinonime.

DROP INDEX nume_index;

Fiind o comand DDL, tergerea unui


index nu poate fi revocat cu
ROLLBACK.

F. Radulescu. Curs: Baze de date

49

SINONIME

51

EXEMPLU

Cererea de creare a unui sinonim are


urmtoarea sintax:
CREATE [PUBLIC] SYNONYM sinonim
FOR obiect;

Opiunea PUBLIC specific faptul c


sinonimul este accesibil i celorlali
utilizatori ai sistemului.

F. Radulescu. Curs: Baze de date

52

EXEMPLU cont.

 Exemplu:
CREATE PUBLIC SYNONYM ST
FOR STUD;
 Dup crearea acestui sinonim, ST poate apare n
cereri n locul lui STUD, dar nu i mpreun cu acesta.
 De exemplu, cererea:
SELECT A.NUME, B.NUME
FROM STUD A, SPEC B
WHERE ST.CODS = B.CODS;
va semnala o eroare deoarece n contextul clauzei
FROM coninute, pentru coloanele din STUD se poate
folosi pentru prefixare fie STUD fie A.
F. Radulescu. Curs: Baze de date

50

SINTAXA

Obiectelor din baza de date li se pot asocia nume


alternative - sinonime.
Crearea sinonimelor are ca obiect simplificarea
operrii cu obiectele respective, putnd asigura:
Nume alternative mai sugestive pentru obiecte
care la creare au primit o denumire criptic.
Nume alternative mai scurte pentru obiecte care
la creare au primit o denumire lung.
Nume alternative mai scurte pentru obiectele
create de ali utilizatori (pentru a fi accesate
acestea trebuie prefixate cu numele utilizatorului
care le deine).
F. Radulescu. Curs: Baze de date

F. Radulescu. Curs: Baze de date

53

n schimb cererea:
SELECT ST.NUME, SPEC.NUME
FROM ST, SPEC
WHERE ST.CODS = SPEC.CODS;

va returna rezultatul dorit: numele


studenilor i numele specializrilor
acestora.

F. Radulescu. Curs: Baze de date

54

Florin Radulescu - Baze de date (note de curs)

SINONIM - STERGERE
tergerea unui sinonim se face prin
cererea
DROP [PUBLIC] SYNONYM nume_sinonim;

PUBLIC se folosete pentru tergerea


sinonimelor create cu aceast opiune.
Fiind o comand DDL, tergerea unui
sinonim nu poate fi revocat cu
ROLLBACK.
F. Radulescu. Curs: Baze de date

Sfarsitul capitolului

ALTE OBIECTE ALE BAZEI


DE DATE

55

F. Radulescu. Curs: Baze de date

56

10

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