Documente Academic
Documente Profesional
Documente Cultură
La nivel logic, o bază de date Oracle este alcătuită din scheme. O schemă este o mulţime de structuri logice de date numite
obiecte. Ea aparţine unui utilizator al bazei de date şi poartă numele său.
Limbajul de definire a datelor permite definirea bazelor de date şi a obiectelor care compun aceste baze de date. Definirea
unui obiect include, în general, crearea, modificarea şi suprimarea obiectului. Limbajul de definire a datelor constă din acele
comenzi SQL (CREATE, ALTER, DROP) care permit crearea, modificarea şi distrugerea obiectelor bazei de date.
În cadrul unei scheme se pot defini obiecte ca: tabel (table), vedere/vizualizare (view), secvenţă (sequence), index (index),
sinonim (synonim), grupare (cluster), procedură (procedure) / funcţie (function) stocată, declanşator (trigger), pachet stocat
(package) etc.
1
Baze de date— DDL&DML Lab.8
calendaristică de acest tip este transformată corespunzător timpului regiunii (setat la nivelui bazei). La
utilizare această valoare va fi transformată corespunzător timpului regiunii caracteristice sesiunii
respective.
o INTERVAL YEAR (precizie_an) TO MONTH stochează o perioadă de timp specificată în ani şi luni,
unde precizie_an reprezintă numărul de cifre din câmpul YEAR. Valorile acceptate pentru precizie an
sunt între 0 şi 9. Valoarea implicită este 2.
o INTERVAL DAY (precizie_zi) TO SECOND (precizie_fractiuni_secunda) stochează o perioadă de timp
reprezentată în zile, ore, minute şi secunde. Argumentul precizie_zi corespunde numărului maxim de
cifre din câmpul DAY. Valorile acceptate pentru precizie_zi sunt între 0-9, valoarea implicită fiind 2.
Definirea tabelelor
Tabelul reprezintă o structură de date ce conţine datele unei baze de date relaţionale. Definirea tabelelor presupune crearea
de noi tabele (CREATE), modificarea structurii tabelelor (ALTER) şi suprimarea tabelelor (DROP).
Crearea unui tabel constă în generarea structurii sale, adică atribuirea unui nume tabelului şi definirea caracteristicilor
sale.
CREATE TABLE angajati (cod NUMBER(4) NOT NULL, nume VARCHAR2(15), salariu NUMBER(10),
comision NUMBER(10));
Exemplu: se creează un tabel cu structura cod, nume, salariu având câmpurile preluate din tabelul emp:
Modificarea structurii unui tabel se realizează cu ajutorul comenzii ALTER TABLE care permite:
adăugarea unei coloane la tabelul existent
modificarea unei coloane existente-pot fi modificate tipul de date, dimensiunea sau valoarea implicită
ştergerea unei coloane.
marcarea unor coloane nefolosite fără eliberarea spațiului de memorie
ștergerea coloanelor marcate ca nefolosite
activare/ dezactivare constrangeri
Sintaxa:
2
Baze de date— DDL&DML Lab.8
Exemple:
- să se modifice structura tabelului angajati, prin adăugarea coloanei meserie:
- să se modifice structura tabelului angajati, prin modificarea dimensiunii coloanei cod din NUMBER(4) în
NUMBER(5):
- să se modifice structura tabelului angajaţi prin modificarea tipului de date al coloanei cod din numeric
(NUMBER) în şir de caractere (VARCHAR2):
Sintaxa:
Un tabel ( vedere sau index) șters prin comanda DROP va fi mutat în RECYCLEBIN- ul atașat fiecărei scheme.
Pot fi vizualizate obiectele din acesta prin interogarea vederii USER_RECYCLEBIN.
Un tabel șters din greșeală poate fi ”refăcut” prin comanda FLASHBACK TABLE.
Sintaxa:
Pentru a şterge doar continutul unui tabel cu eliberarea spaţiului de memorie ocupat se poate folosi comanda
TRUNCATE TABLE. Execuţia acestei comenzi este ireversibilă.
Adăugarea de comentarii (până la 2000 caractere) despre o coloană, tabel, vedere poate fi realizată prin comanda
COMMENT.
Sintaxa:
COMMENT ON TABLE tabel | COLUMN coloana IS 'comentariu';
3
Baze de date— DDL&DML Lab.8
Dicționarul datelor
Pentru a vizualiza toate vederile disponibile din dicționar se poate folosi comanda:
SELECT *
FROM DICTIONARY;
Alte vederi ce pot fi interogate:
USER_TABLES
USER_OBJECTS
USER_CATALOG (USER_CAT / CAT)
Constrângeri
O constrângere este un mecanism ce asigură faptul că valorile unei coloane sau mulţimi de coloane satisfac o anumită
condiţie. Constrângerile implementează reguli la nivel de tabel. Serverul Oracle utilizează constrângeri pentru a preveni
existenţa datelor invalide în tabele.
Constrângerile sunt stocate în dicţionarul de date. Dacă utilizatorul nu specifică un nume pentru constrângere, serverul
Oracle generează un nume de forma SYS_Cn, unde n este un număr întreg ales astfel încât numele constrângerii să fie unic.
Constrângerile pot fi adăugate sau şterse, dar nu pot fi modificate. Ele pot fi activate sau dezactivate în funcţie de necesităţi.
Constrângerile pot fi definite în momentul creării tabelului sau ulterior. În comanda de creare a tabelului,
constrângerile se pot specifica la nivel de coloană sau de tabel.
Clauza constr_coloana prezentă în în sintaxa comenzii CREATE TABLE are următoarea formă:
[CONSTRAINT nume_constrangere]
[NOT] NULL | UNIQUE | PRIMARY KEY | REFERENCES [schema.]{nume_vedere | nume_tabel} [(nume_coloana)]
[CONSTRAINT nume_constrangere]
{ UNIQUE (nume_coloana_1 [, nume_coloana_2]…)
| CHECK (conditie)
| PRIMARY KEY (nume_coloana_1 [,nume_coloana_2]…)
| FOREIGN KEY (nume_coloana_1 [,nume_coloana_2]…)
REFERENCES [schema.]{nume_vedere | nume_tabel} [(nume_coloana_1 [, nume_coloana_2]…)] }
4
Baze de date— DDL&DML Lab.8
Constrângeri de domeniu
Constrângerile de domeniu restrâng mulţimea valorilor ce pot fi atribuite unei coloane. Ele pot fi de tip CHECK,
UNIQUE sau NOT NULL.
Constrângerea CHECK poate fi definită la nivel de coloană sau tabel şi defineşte o condiţie booleană care trebuie
satisfăcută de fiecare linie.
Constrângerea de tip NOT NULL poate fi specificată numai la nivel de coloană şi asigură ca valorile acestei coloane
sunt diferite de null.
Constrângerea UNIQUE poate fi definită la nivel de coloană sau tabel şi specifică o coloană sau o combinaţie de coloane
ale căror valori trebuie să fie unice în raport cu toate liniile tabelului.Coloana sau mulţimea de coloane inclusă în definiţia
constrângerii UNIQUE se numeşte cheie unică.
** creare tabel cu definire constrângere UNIQUE la nivel de coloană, fără atribuire de nume constrângerii:
** creare tabel cu definire constrângere UNIQUE la nivel de coloană, cu atribuire de nume constrângerii:
** creare table cu definire constrângere UNIQUE la nivel de tabel fără atribuire de nume constrângerii:
** creare table cu definire constrângere UNIQUE la nivel de tabel cu atribuire de nume constrângerii:
5
Baze de date— DDL&DML Lab.8
Această constrângere poate fi definită la nivel de coloană sau tabel şi precizează cheia primară a tabelului. Cheia primară
este reprezentată de o coloană sau o mulţime de coloane care identifică în mod unic o linie din tabel. O cheie primară compusă
poate fi definită doar la nivel de tabel.
Constrângerea PRIMARY KEY impune unicitatea valorilor coloanei sau combinaţiei de coloane şi asigură că nicio
coloană care face parte din cheia primară nu poate conţine valoarea null.
Un tabel poate avea o singură cheie primară, deci o singură constrângere PRIMARY KEY, dar poate avea mai multe
constrângeri UNIQUE.
Serverul Oracle creează în mod automat câte un index unic pentru fiecare coloană a constrângerii PRIMARY KEY.
**se creează tabelul stud care are coloana nr_matricol cu atributul de cheie primară (cu numele nr_matricol_pk) definită
la nivel de coloană:
**se creează tabelul stud care are coloana nr_matricol cu atributul de cheie primară (cu numele nr_matricol_pk) definită
la nivel de tabel:
Această constrângere poate fi definită la nivel de coloană sau tabel şi asigură coerenţa între cheile primare şi cheile
străine corespunzătoare.
Constrângerea FOREIGN KEY desemnează o coloană sau o combinaţie de coloane drept cheie externă şi stabileşte
relaţia cu o cheie primară sau o cheie unică din acelaşi tabel sau din altul. O cheie externă compusă poate fi definită doar la
nivel de tabel.
Cheia externă se defineşte în tabelui „copil”, iar tabelul care conţine coloana referită reprezintă tabelul „parinte”.
Valoarea unei chei externe trebuie să fie egală cu o valoare existentă în tabelul „părinte” sau să fie null.
**se creează tabelul note care are coloana nr_matricol cu atributul de cheie străină (cu numele nr_matricol_fk) definită
la nivel de tabel:
**se creează tabelul note care are coloana nr_matricol cu atributul de cheie străină (cu numele nr_matricol_fk) definită
la nivel de coloana:
Definiţiile şi numele constrângerilor definite pot fi consultate prin interogarea vederilor USER_CONSTRAINTS şi
ALL_CONSTRAINTS din dicţionarul datelor.
6
Baze de date— DDL&DML Lab.8
**afişarea numelui, tipului de constrângere şi a condiţiilor de căutare corespunzătoare constrângerilor definite asupra
tabelului angajaţi creeat mai sus :
OBS: Adăugarea/ eliminarea unei constrângeri poate fi făcută şi cu ajutorul comenzii ALTER TABLE.
Constrângerea NOT NULL poate fi introdusă asupra unei coloane existente folosind clauza MODIFY a comenzii
ALTER TABLE. Această constrângere poate fi impusă numai atunci când tabelul este vid sau când coloana respectivă conţine
valori pe toate liniile tabelului.
Activarea sau dezactivarea unei constrângeri poate fi făcută tot cu ajutorul comenzii ALTER TABLE:
SQL furnizează patru comenzi care permit consultarea, modificarea şi actualizarea conţinutului bazei de date.
Actualizarea se referă la adăugarea unor noi rânduri într-un tabel (INSERT), la modificarea uneia sau mai multor valori
dintr-un rând (UPDATE) şi la ştergerea unor rânduri dintr-un tabel (DELETE). De asemenea, DML furnizează o comandă
puternică ce permite interogarea obiectelor create cu ajutorul limbajului de definire a datelor (DDL). Consultarea se face cu
ajutorul comenzii SELECT (deja studiată).
Cererile limbajului DML pot fi formulate direct, utilizând interfeţe ale sistemului ORACLE (SQL Plus / SQL Plus
Worksheet etc.). Ele pot fi, de asemenea, încapsulate într-un program PL/SQL.
O tranzacție constă într-o colecție de comenzi DML ce formează o unitate logică de lucru. Ea începe când e întâlnită
prima comandă DML și se încheie în una din urmatoarele situații:
- o comandă COMMIT sau ROLLBACK
- o comandă DDL cum ar fi CREATE
- o comandă DCL
- părăsirea interfeței prin care s-a realizat conexiunea la baza de date
- o “defecțiune” a sistemului.
În funcţie de momentul în care se doreşte realizarea actualizărilor asupra bazei de date, utilizatorul poate folosi una din
comenzile
- SET AUTOCOMMIT ON- schimbările asupra bazei de date se efectuează automat
- SET AUTOCOMMIT OFF- schimbările sunt păstrate într-un buffer până la execuţia uneia din instrucţiunile:
o COMMIT- are rolul de a permanentiza schimbările efectuate;
o SAVEPOINT name – marchează un punct de salvare în cadrul tranzacției curente
o ROLLBACK- determină anularea schimbărilor realizate
o ROLLBACK TO SAVEPOINT name - determină anularea schimbărilor realizate până la punctul de
salvare.
7
Baze de date— DDL&DML Lab.8
Forme:
Prima formă permite inserarea directă a unei linii într-un tabel, iar a doua formă permite inserarea mai multor linii care sunt
rezultatul unei comenzi SELECT.
Ex:- inserarea în tabelul deptartamente a unui nou departament cu codul 70, numele CONTROLLING şi sediul în LOS
ANGELES:
Obs:
- dacă nu a fost specificată lista coloanelor şi dacă există câmpuri care nu au valori efective, acestor câmpuri li se va
atribui valoarea NULL ;
- este permisă folosirea variabilelor de substituţie.
Comanda DELETE se foloseşte pentru suprimarea rândurilor unui tabel, dar fără eliberarea spaţiului.
Forme:
UPDATE tabel
SET coloana1=expresie1[, coloana2=expresie2,…]
[WHERE conditie];
UPDATE table
SET (coloana1, coloana2, …)=(subinterogare)
[WHERE conditie];
UPDATE deptartamente
SET locatie=’LAS VEGAS’
WHERE cod_dept=70;
8
Baze de date— DDL&DML Lab.8
Temă:
Să se creeze următoarea structură de tabele:
ANGAJATI
DEPARTAMENTE