Documente Academic
Documente Profesional
Documente Cultură
Obiective:
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.
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
Ce este o secventa?
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.
2
sequence este numele generatorului de secventa
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.
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.
4
Pseudocoloanele NEXTVAL si CURRVAL
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.
Schimbarea valorii incrementului, valorii maxime, minime, optiuni de ciclu sau de stocare.
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.
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.
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.
Sintaxa
DROP SEQUENCE sequence;
unde: sequence este numele generatorului de secventa.
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.
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.
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.
Confirmarea indecsilor
Î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;
Î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.
Rezumat
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