Sunteți pe pagina 1din 14

Alte obiecte ale bazelor de date

Obiective:

Dupa parcurgerea acestei lectii, studentii vor asimila cunostinte despre:


 Descrierea catorva dintre obiectele bazelor de date si folosirea lor
 Crearea, mentinerea si folosirea secventelor
 Crearea si întretinerea indecsilor
 Crearea de sinonime publice si private

Scopul lectiei:
În aceasta lectie, se va prezenta crearea si modul de utilizare a catorva dintre cele mai
folosite obiecte ale bazelor de date. Acestea includ secvente, indecsi si sinonime.

Obiecte ale bazelor de date

Obiect Descriere
Baza de date Unitatea principala de stocare a datelor; alcatuita din linii si
coloane
Vizualizare Reprezentare logica a subseturilor de date din una sau mai
multe baze de date
Secventa Generator ale valorii cheii primare
Index Îmbunatateste performantele anumitor interogari
Sinonim Un alt nume dat unui obiect

Obiecte ale bazelor de date:


Multe aplicatii necesita folosirea de numere distincte ca valori ale cheii primare. Acest lucru
se poate realiza prin inserare de cod, direct în aplicatie, sau se poate folosi o secventa pentru a
genera aceste numere distincte.
Pentru a îmbunatati performantele anumitor interogari, este necesara crearea unui index.
Indecsii pot de asemenea fi folositi pentru a impune unicitatea într-o coloana sau într-o grupare de
coloane.
De asemenea pot fi folosite sinonime pentru a redenumi obiectele.

Ce este o secventa?

 Genereaza automat numere distincte


 Este un obiect care poate fi folosit de mai multi utilizatori
 Este folosit de obicei pentru a crea valorile unei chei primare
 Înlocuieste cod în aplicatie
 Realizeaza o crestere a eficientei accesarii valorilor secventei cand este stocata în memorie.

1
Ce este o secventa?
Un generator de secvente poate fi folosit pentru a genera valori pentru liniile din tabel. O
secventa este un obiect creat de un utilizator si poate fi folosit de mai multi utilizatori.
Secventa este generata si incrementata (sau decrementata) de o procedura interna Oracle8.
Acest obiect înlocuieste partea de cod, fiind economisit timpul necesar implementarii rutinei de
generare a secventei.
Numerele secventei sunt retinute si generate independent de bazele de date existente. Prin
urmare, aceeasi secventa poate fi folosita în mai multe baze de date.

Declaratia CREATE SEQUENCE

Defineste o secventa ce va genera automat numere secventiale.

CREATE SEQUENCE sequence


[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];

Crearea unei secvente


Generarea automata de numere folosind CREATE SEQUENCE
În sintaxa:

2
sequence este numele generatorului de secventa

INCREMENT BY n specifica intervalul dintre numerele secventei,


unde n este un întreg. Daca aceasta clauza
lipseste, implicit n este 1

START WITH n specifica primul numar al secventei. Daca


aceasta clauza lipseste, implicit n=1

specifica valoarea maxima pe care secventa o


MAXVALUE n poate genera
NOMAXVALUE specifica o valoare maxima de 1027 pentru o
secventa crescatoare si –1 pentru o secventa
descrescatoare. Aceste valori sunt implicite
MINVALUE n specifica valoarea minima a secventei
NOMINVALUE specifica o valoare minima de 1 pentru o
secventa crescatoare si –(1027) pentru una
descrescatoare. Aceste numere sunt implicite

specifica daca secventa continua sa genereze


CYCLE | NOCYCLE
valori dupa ce s-a atins valoarea maxima sau
minima, sau nu genereaza în continuare.
NOCYCLE este implicit

CACHE n | NOCACHE specifica serverului Oracle pentru cate valori


sa aloce spatiu în memorie. Implicit este 20.

Crearea unei secvente

 Crearea unei secvente numita DEPT_DEPTNO pentru a fi folosita drept cheie primara a bazei
de date DEPT.
 Nu se foloseste optiunea CYCLE
SQL> CREATE SEQUENCE dept_deptno
2 INCREMENT BY 1
3 START WITH 91
4 MAXVALUE 100
5 NOCACHE
6 NOCYCLE;
Sequence created.

Crearea unei secvente (continuare)


Exemplul anterior creeaza o secventa DEPT_DEPTNO pentru a folosi coloanei DEPTNO a
bazei de date DEPT. Secventa începe cu 91, nu permite alocare de memorie, si nu permite cicluri de
generare.
Nu se recomanda folosirea clauzei CYCLE atunci cand secventa este folosita pentru a
genera valori cheii primare, daca nu exista la îndemana un mecanism sigur de îndepartare a vechilor
înregistrari mai rapid decat ciclurile secventei.

Pentru mai multe informatii, vezi:


Oracle Server SQL Reference, Release 8.0, “CREATE SEQUENCE”
3
Confirmarea secventelor

 Verifica valorile secventei generate în dictionarul de date


SQL> SELECT sequence_name, min_value, max_value,
2 increment_by, last_number
3 FROM user_sequences;
 Coloana LAST_NUMBER afiseaza urmatorul numar disponibil al secventei.

Confirmarea secventelor
Odata creata propria secventa, ea este înscrisa într-un dictionar de date. Odata ce secventa
este un obiect al bazelor de date, ea poate fi identificata cu ajutorul dictionarului de date
USER_OBJECTS, care este de asemenea o baza de date.
De asemenea, se pot confirma setarile unei secvente prin selectarea acestora din dictionarul
de date USER_SEQUENCES.

SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER


-------------------------- --------------------- --------------------- ----------------------- ---------------------
CUSTID 1 1.000E+27 1 109
DEPT_DEPTNO 1 100 1 91
ORDID 1 1.000E+27 1 622
PRODID 1 1.000E+27 1 200381

4
Pseudocoloanele NEXTVAL si CURRVAL

 NEXTVAL returneaza urmatoarea valoare disponibila a secventei.


Returneaza o valoare unica de fiecare data cand este apelata, chiar în cazul unor utilizatori
diferiti.
 CURRVAL contine valoarea curenta a secventei
NEXTVAL trebuie sa rezulte înainte ca CURRVAL sa contina o valoare.

Folosirea unei secvente


Odata creata secventa, ea poate fi folosita pentru a genera numere folosite ulterior în tabele.
Referirea valorilor secventei se face cu NEXTVAL si CURRVAL.
Pseudocoloanele NEXTVAL si CURRVAL
Pseudocoloana NEXTVAL este folosita pentru a extrage numere succesive dintr-o anumita
secventa. Referirea lui NEXTVAL se face împreuna cu numele secventei. La referirea lui
sequence.NEXTVAL un nou numar al secventei este generat si numarul curent este plasat în
CURRVAl.
Pseudocoloana CURRVAL este folosita pentru a referi numarul unei secvente pe care
utilizatorul abia l-a creat. NEXTVAL trebuie folosita pentru a genera un numar înainte ca referirea
lui CURRVAL sa aiba loc. Referirea lui CURRVAL se face împreuna cu numele secventei. Cand
sequence.CURRVAL este referita, este afisata ultima valoare returnata spre acel proces al
utilizatorului.

Pseudocoloanele NEXTVAL si CURRVAL

 NEXTVAL returneaza urmatoarea valoare disponibila a secventei.


Returneaza o valoare unica de fiecare data cand este apelata, chiar în cazul unor utilizatori
diferiti.
 CURRVAL contine valoarea curenta a secventei
NEXTVAL trebuie sa rezulte înainte ca CURRVAL sa contina o valoare.

Reguli pentru folosirea lui NEXTVAL si CURRVAL


Se pot folosi NEXTVAL si CURRVAL în urmatoarele situatii:
 într-o lista SELECT a unei instructiuni SELECT care nu face parte dintr-o subinterogare
 într-o lista SELECT a unei subinterogari într-o lista INSERT
 în clauza VALUES a unei instructiuni INSERT
 în clauza SET a unei instructiuni UPDATE
Nu se pot folosi NEXTVAL si CURRVAL în urmatoarele situatii:
 într-o instructiune SELECT ce contine DISTINCT
 într-o instructiune SELECT ce contine clauzele GROUP BY, HAVING sau ORDER BY
 într-o subinterogare în instructiuni SELECT, DELETE sau UPDATE
 într-o expresie DEFAULT în instructiuni CREATE TABLE sau ALTER TABLE
Pentru mai multe informatii, vezi:
Oracle Server SQL Reference, Release 8.0, “Pseudocolomns” si “CREATE SEQUENCE”.
Utilizarea unei secvente

 Inserarea unui nou departament numit “MARKETING” în San Diego.


SQL> INSERT INTO dept (deptno, dname, loc)
2 VALUES (dept_deptno.NEXTVAL,
3 ‘MARKETING’, ‘SAN DIEGO’);
1 row created.

 Vizualizarea valorii curente pentru secventa DEPTNO_DEPTNO.


SQL> SELECT dept_deptno.CURRVAL
2 FROM dual;

Utilizarea unei secvente


Exemplul de mai sus insereaza un nou departament în baza de date DEPT. Se utilizeaza
secventa DEPT_DEPTNO pentru generarea unui nou numar pentru departament.
Vizualizarea valorii curente a secventei:
SQL> SELECT dept_deptno.CURRVAL
2 FROM dual;

CURRVAL
--------------
91
Sa presupunem ca se doreste încadrarea de personal pentru noul departament creat.
Instructiunea INSERT este executata în mod repetat pentru toti noii angajati:
SQL> INSERT INTO emp…
2 VALUES (emp_empno.NEXTVAL, deptno.CURRVAL, …

Nota: Exemplul anterior presupune existenta unei secvente EMP_EMPNO pentru generarea de
numere noilor angajati.

Utilizarea unei secvente

 Stocarea valorilor secventelor în memorie permite o accesare mai rapida a acestora


 Pot apare goluri în cadrul secventei atunci cand:
- survine un “rollback”
- sistemul nu mai lucreaza
- secventa este folosita în alta baza de date
 Vizualizarea urmatoarei secvente disponibile, daca a fost creata cu NOCACHE, prin interogarea
bazei de date USER_SEQUENCES

Stocarea valorilor secventei


Stocarea secventelor în memorie permite o accesare mai rapida a valorilor secventei.
Stocarea se realizeaza la prima referire a secventei. Fiecare cerere pentru urmatoarele valori este
regasita în secventa stocata. Dupa ce s-a folosit ultima secventa, urmatoarea cerere pentru secventa
determina o alta stocare a secventei în memorie.

Evitarea golurilor din secvente


Desi generatorul de secvente determina numere consecutive, fara goluri, aparitia golurilor se
petrece independent de rollback. De aceea daca se revine asupra aceleasi declaratii de secventa,
numarul este pierdut.
Un alt eveniment ce poate provoca goluri în secventa este o cadere a sistemului. Daca
valorile secventei sunt stocate în memorie, acestea se pierd daca are loc o cadere a sistemului.
Deoarece secventele nu sunt legate direct de bazele de date, aceeasi secventa poate fi
folosita pentru mai multe baze de date. Daca se întampla acest lucru fiecare baza de date poate
contine goluri în secventa.

Vizualizarea urmatoarei valori disponibile a secventei fara a o incrementa


Este posibila o vizualizare a urmatoarei valori disponibile a secventei fara a o incrementa,
doar daca secventa a fost creata cu NOCACHE, prin interogarea bazei de date
USER_SEQUENCES.

Modificarea unei secvente

Schimbarea valorii incrementului, valorii maxime, minime, optiuni de ciclu sau de stocare.

SQL> ALTER SEQUENCE dept_deptno


2 INCREMENT BY 1
3 MAXVALUE 999999
4 NOCACHE
5 NOCYCLE;
Sequence altered.

Modificarea secventei
Daca se atinge MAXVALUE în cazul unei secvente, nu va mai fi atribuita nici o valoare în
plus secventei si se va primi o eroare ce va indica faptul ca secventa a atins valoarea MAXVALUE.
Pentru a putea folosi în continuare aceasta secventa, ea necesita o modificare cu ajutorul
instructiunii ALTER SEQUENCE.

Sintaxa
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
unde: sequence este numele generatorului de secventa.

Pentru mai multe informatii vezi


Oracle Server SQL Reference, Release 8.0, “ALTER SEQUENCE”

Sfaturi pentru modificarea unei secvente

 Modificarea o realizeaza numai cel care a creat secventa sau cel ce detine privilegiul ALTER.
 Sunt afectate doar numerele ce urmeaza a fi generate.
 Secventa trebuie întrerupta si recreata pentru a începe secventa cu un alt numar decat cel initial.
 Sunt efectuate cateva validari.

Sfaturi:
 Numai cel ce a creat o secventa sau cel ce detine un privilegiu ALTER pot modifica secventa.
 Doar numerele ce urmeaza a fi generate sunt afectate de instructiunea ALTER SEQUENCE.
 Numarul cu care începe secventa (cel din optiunea START WITH) nu poate fi modificat cu
ALTER SEQUENCE, secventa trebuie întrerupta si recreata pentru a reîncepe cu alt numar.
 Sunt realizate cateva validari. De exemplu, nu poate fi fixata o noua valoare MAXVALUE care
este mai mica decat valoarea curenta a numarului generat de secventa.

SQL> ALTER SEQUENCE dept_deptno


2 INCREMENT BY 1
3 MAXVALUE 90
4 NOCACHE
5 NOCYCLE;
ALTER SEQUENCE dept_deptno
*
ERROR at line 1:
ORA-04009: MAXVALUE cannot be made to be less than the current value

Stergerea unei secvente

 Stergerea unei secvente din dictionarul de date folosind instructiunea DROP SEQUENCE
 Odata stearsa, secventa nu mai poate fi referita
SQL> DROP SEQUENCE dept_deptno;
Sequence dropped.

Stergerea unei secvente


Pentru stergerea unei secvente din dictionarul de date se utilizeaza instructiunea DROP
SEQUENCE. Acest lucru îl poate realiza doar cel care a creat secventa sau cel care are privilegiul
DROP ANY SEQUENCE.

Sintaxa
DROP SEQUENCE sequence;
unde: sequence este numele generatorului de secventa.

Pentru mai multe informatii, vezi:


Oracle Server SQL Reference, Release 8.0 “DROP SEQUENCE”.

Ce este un index?

 Obiect schema.
 Folosit de serverul Oracle pentru o mai buna regasire a înregistrarilor prin utilizarea unui
pointer.
 Reduce numarul operatiilor de citire/scriere pe disc prin utilizarea unei metode de accesare
rapida a caii pentru o mai eficienta localizare a datelor.
 Este independent de tabelele pe care le indexeaza.
 Este folosit si întretinut de serverul Oracle.

Ce este un index?
Un index este un obiect schema care îmbunatateste regasirea înregistrarilor folosind un
pointer. Indecsii pot fi creati explicit sau automat.
Un index furnizeaza un acces direct si rapid la înregistrarile unei baze de date. Scopul
utilizarii indecsilor este reducerea numarului de citire/scriere pe disc prin folosirea unei cai indexate
pentru a localiza mai rapid datele. Indexul este automat folosit si întretinut de serverul Oracle.
Odata indexul creat, nu este necesara nici o interventie din partea utilizatorului.
Indecsii sunt logic si fizic independenti de bazele de date pe care le indexeaza. Acest lucru
înseamna ca indecsii pot fi creati sau stersi oricand fara nici un efect asupra bazelor de date sau a
altor indecsi.
Nota: Cand este sters un tabel, indecsii corespunzatori sunt de asemenea stersi.

Pentru mai multe informatii, vezi:


Oracle Server Concepts Manual, Release 8.0, sectiunea “Schema Objects”, “Indexes”.

Cum sunt creati indecsii?

 Automat
- cand este definita o cheie primara (PRIMARY KEY) sau unica (UNIQUE KEY) în definitia unui
tabel.
 Manual
- utilizatorii pot crea indecsi mecanic pentru a accelera accesul la înregistrarile bazelor de date.

Cum sunt creati indecsii?


Pot fi create doua tipuri de indecsi. Un tip îl reprezinta indexul unic. Serverul Oracle creeaza
automat acest index cand este definita o cheie primara sau una unica. Numele indexului este numele
dat acestui camp.
Alt tip de indecsi este indexul mecanic. De exemplu, se poate crea o cheie straina
(FOREIGN KEY) pentru a realiza o eficienta mai buna la interogari.

Crearea unui index

 Crearea unui index pentru unul sau mai multe campuri


CREATE INDEX index
ON table (column[, column]…);
 Îmbunatatirea accesului campului ENAME în baza de date EMP
SQL> CREATE INDEX emp_ename_idx
2 ON emp(ename);
Index created.

Crearea unui index


Crearea unui index se face cu instructiunea CREATE INDEX.
În sintaxa:
index – este numele indexului.
table – numele bazei de date.
column – numele campului în baza de date ce urmeaza a fi indexat.

Pentru mai multe informatii, vezi:


Oracle Server SQL Reference, Release 8.0, “CREATE INDEX”.
Sfaturi pentru crearea unui index

 Pentru un camp ce este folosit des în clauzele WHERE sau în conditii de join.
 Pentru campuri cu mare varietate de valori.
 Pentru campuri cu un numar mare de valori NULL.
 Doua sau mai multe campuri ce sunt folosite împreuna frecvent într-o clauza WHERE sau într-o
conditie join.
 Baza de date este mare si majoritatea interogarilor nu vizeaza mai mult de 2-4% din înregistrari.

Mai mult nu înseamna întotdeauna mai bun


Mai multi indecsi într-o baza de date nu înseamna o optimizare a interogarilor. Fiecare
operatie DML ce se realizeaza într-o baza de date ce contine indecsi implica o actualizare a
indecsilor. Cu cat sunt mai multi indecsi asociati tabelului, cu atat va dura mai mult pana cand
serverul Oracle va actualiza indecsii dupa DML.

Cand se creeaza un index


 Campul este folosit frecvent într-o clauza WHERE sau într-o conditie join.
 Campul contine o varietate mare de valori.
 Campul contine un numar mare de valori NULL.
 Doua sau mai multe campuri folosite împreuna într-o clauza WHERE sau într-o conditie
join.
 Baza de date este mare si multe interogari nu vizeaza decat 2-4% dintre înregistrari.

Sfaturi pentru crearea unui index

Nu este necesara crearea unui index atunci cand:


 Baza de date este mica.
 Campurile nu sunt des folosite într-o conditie.
 Majoritatea interogarilor vizeaza mai mult de 2-4% dintre înregistrari.

Cand nu este necesara crearea unui index:


 Baza de date este mica.
 Majoritatea interogarilor vizeaza mai mult de 2-4% dintre înregistrari.
 Baza de date este actualizata frecvent. Daca exista unul sau mai multi indecsi într-o baza de
date, instructiunile DML care acceseaza baza de date ocupa un timp relativ mai mare decat
întretinerea indecsilor.

Confirmarea indecsilor

USER_INDEXES contine numele indexului si unicitatea lui.


Componenta USER_IND_COLUMNS contine numele indexului, numele bazei de date si numele
campului.
SQL> SELECT ic.index_name, ic.column_name,
2 ic.column_position col_pos, ix.uniques
3 FROM user_indexes ix, user_ind_columns ic
4 WHERE ic.index_name = ix.index_name
5 AND ic.table_name = ‘EMP’;
Confirmarea indecsilor
Confirmarea indecsilor existenti se realizeaza prin vizualizarea lui USER_INDEXES. De
asemenea se pot verifica campurile implicate într-o indexare prin interogarea lui
USER_IND_COLUMNS.
Exemplul urmator afiseaza toti indecsii creati anterior, numele campurilor afectate si
unicitatea în baza de date EMP.

INDEX_NAME COLUMN_NAME COL_POS UNIQUENES


----------------------- ---------------------------- ---------------------------- ----------------------------
EMP_EMPNO_PK EMPNO 1 UNIQUE
EMP_ENAME_IDX ENAME 1 NONUNIQUE

Nota: Iesirea a fost formatata anterior.

In cazul in care un index ocupa mult spatiu pot fi urmariti pasii:


1. Se creaza un nou tablespace (CREATE TABLESPACE)
2. Acest nou tablespace este declarat ca fiind temporar (ALTER USER -> TEMPORARY
TABLESPACE)
3. Creati indexul (CREATE INDEX)
4. Stergeti acest tablespace (DROP TABLESPACE), apoi resetati tablespace-ul temporar la cel
original (ALTER USER)

Stergerea unui index

 Stergerea unui index din dictionarul de date.


SQL> DROP INDEX index;
 Stergerea indexului EMP_ENAME_IDX din dictionarul de date.
SQL> DROP INDEX emp_ename_idx;
Index dropped.
 Stergerea unui index o realizeaza doar cel care l-a creat sau cel care are privilegiul DROP ANY
INDEX.

Stergerea unui index


Indecsii nu pot fi modificati. Pentru a modifica un index trebuie întai sters si apoi creat.
Stergerea unui index din dictionarul de date se realizeaza prin instructiunea DROP INDEX.
Stergerea unui index o poate efectua doar cel care l-a creat sau are privilegiul DROP ANY INDEX.

În sintaxa:
index – este numele indexului.

Sinonime

Simplifica accesarea obiectelor prin crearea unui sinonim (un alt nume pentru un obiect anume).
 Refera o baza de date detinuta de un alt utilizator.
 Scurteaza numele lungi ale obiectelor.
CREATE [PUBLIC] SYNONYM synonym
FOR object;

Crearea unui sinonim pentru un obiect


Pentru a referi o baza de date detinuta de alt utilizator, numele bazei de date trebuie precedat
de un prefix ce reprezinta numele utilizatorului care a creat-o. Crearea unui sinonim furnizeaza un
alt nume pentru o baza de date, secventa, procedura sau alte obiecte. Aceasta metoda este utila
atunci cand obiectele au nume lungi.

În sintaxa:
PUBLIC creeaza un sinonim accesibil tuturor utilizatorilor.
synonym este numele sinonimului creat.
object identifica obiectul pentru care este creat sinonimul.

Sfaturi:
 Obiectul nu trebuie sa fie continut în “package”.
 Numele unui sinonim privat trebuie sa fie diferit de numele celorlalte obiecte detinute de acelasi
utilizator.

Pentru mai multe informatii, vezi:


Oracle Server SQL Reference, Release 8.0, “CREATE SYNONYM”.

Crearea si stergerea sinonimelor

 Crearea unui nume mai scurt pentru DEPT_SUM_VU.


SQL> CREATE SYNONYM d_sum
2 FOR dept_sum_vu;
Synonym Created.
 Stergerea unui sinonim
SQL> DROP SYNONYM d_sum;
Synonym dropped.

Crearea unui sinonim pentru un obiect (continuare)


Exemplul anterior creeaza un sinonim pentru DEPT_SUM_VU pentru o referire mai rapida.
DBA poate crea un sinonim public accesibil tuturor utilizatorilor. Exemplul urmator creeaza
un sinonim public numit DEPT pentru baza de date DEPT a utilizatorului Alice:
SQL> CREATE PUBLIC SYNONYM dept
2 FOR alice.dept;
Synonym created.
Stergerea unui sinonim
Pentru stergerea unui sinonim se foloseste instructiunea DROP SYNONYM. Numai DBA
poate sterge un sinonim public.
SQL> DROP SYNONYM dept;
Synonym dropped.

Pentru mai multe informatii, vezi:


Oracle Server SQL Reference, Release 8.0, “DROP SYNONYM”.

Rezumat

 Generarea automata de secvente de numere folosind un generator de secventa.


 Vizualizarea informatiilor despre secvente în baza de date USER_SEQUENCES.
 Crearea de indecsi pentru a îmbunatati performantele interogarilor.
 Vizualizarea informatiilor despre indecsi în baza de date USER_INDEXES.
 Folosirea sinonimelor pentru a furniza alte nume obiectelor.
Secvente
Generatorul de secvente poate fi folosit pentru a genera automat numere pentru înregistrarile
bazelor de date. Aceasta facilitate poate salva timp si reduce din codul necesar aplicatiei.
O secventa este un obiect al bazelor de date care poate fi folosit si de alti utilizatori în afara
celui care a creat-o. Informatii despre secvente pot fi gasite în baza de date USER_SEQUENCES.
Pentru a folosi o secventa, referirea ei se face cu pseudocampurile NEXTVAL si
CURRVAL.
 Referirea urmatorului numar din secventa prin sequence.NEXTVAL.
 Returnarea numarului curent disponibil prin sequence.CURRVAL.
Indecsi
Indecsii sunt folositi pentru a optimiza interogarile.
Utilizatorii pot vizualiza definitiile indecsilor în USER_INDEXES.
Un index poate fi sters de cel care l-a creat sau de un utilizator cu privilegiul DROP ANY
INDEX prin instructiunea DROP INDEX.
Sinonime
DBA pot crea sinonime publice si utilizatorii pot crea sinonime private prin folosirea
instructiunii CREATE SYNONYM. Sinonimele reprezinta nume mai scurte sau nume alternative
pentru obiecte. Stergerea sinonimelor se realizeaza prin instructiunea DROP SYNONYM.

Lucrare practica

 Crearea de secvente.
 Folosirea secventelor.
 Crearea de indecsi neunici.
 Afisarea informatiilor despre secvente si indecsi.
 Stergerea indecsilor.

Lucrare practica
Se va crea o secventa pentru a fi folosita împreuna cu baza de date DEPARTMENT.
Se vor crea de asemenea indecsi impliciti si expliciti.

Lucrarea 13

1. Sa se creeze o secventa ce va fi folosita împreuna cu cheia primara a tabelei DEPARTMENT.


Secventa trebuie sa înceapa cu 60 si maxim 200. Incrementul secventei este de 10 numere. Numele
secventei va fi DEPT_ID_SEQ.

2. Sa se afiseze urmatoarele informatii despre secventa: nume, valoarea maxima, marimea


incrementului si ultimul numar creat. Numele fisierului creat va fi p13q2.sql.

SEQUENCE_NAME MAX_VALUE INCREMENT_BY LAST_NUMBER


---------------------------- --------------------------- ---------------------------- ----------------------------
CUSTID 1.000E+27 1 109
DEPT_ID_SEQ 200 1 60
ORDID 1.000E+27 1 622
PROID 1.000E+27 1 200381

3. Sa se realizeze un program interactiv pentru a insera o înregistrare în baza de date


DEPARTMENT. Fisierul creat se va numi p13q3.sql. Se va folosi secventa creata pentru campul
ID. Sa se creeze un prompter pentru a introduce numele departamentului. Sa se adauge doua
departamente numite Education si Administration. Sa se confirme adaugarea celor doua articole.
4. Sa se creeze un index neunic pentru campul FOREIGN KEY în baza de date EMPLOYEE.

5. Sa se afiseze indecsii si unicitatile ce exista în dictionarul de date pentru baza de date


EMPLOYEE. Fisierul creat se va numi p13q5.sql.

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