Sunteți pe pagina 1din 9

Baze de date— DDL&DML Lab.

Limbajul de definire a datelor (DDL- Data Definition Language)

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.

Reguli de numire a obiectelor bazei de date:


- identificatorii obiectelor trebuie să înceapă cu o literă şi să aibă maxim 30 caractere, cu excepţia numelui bazei
de date care e limitat la 8 caractere.
- numele poate conţine caracterele A-Z, a-z, 0-9, _, $, #
- două obiecte ale unui utlizator nu pot avea acelaşi nume.

Tipuri de date SQL:


o VARCHAR2(n) [BYTE | CHAR] defineşte un şir de caractere de dimensiune variabilă, cu lungime
maximă n octeţi sau caractere. Valoarea maximă a lui n este 4000 octeţi, iar cea minimă 1 octet. BYTE şi
CHAR indică faptul că lungimea coloanei de acest tip se va specifica în octeţi, respectiv în caractere.,
deoarece un caracter poate ocupa între 1 şi 4 octeţi.
o NVARCHAR2(n) e similar tipului VARCHAR2, cu menţiunea că defineşte un şir de caractere ce
aparţine setului naţional de caractere.
o CHAR(n) [BYTE | CHAR] reprezintă un şir de caractere de lungime fixă ce are n octeţi sau caractere.
Valoarea maximă a lui n este 2000 octeţi; valoarea implicită şi minimă este 1 octet.
o NCHAR(n) e similar tipului CHAR, cu menţiunea că defineşte un şir de caractere, de lungime fixă ce
aparţine setului naţional de caractere.
o NUMBER(p,s) reprezintă un număr cu precizia p şi scala s. Precizia poate lua valori între 1 şi 38, iar
scala între -84 şi 127. Aceasta înseamnă ca tipul conţine valori de forma x·105, unde x este un număr
întreg ce poate avea cel mult p cifre.
o LONG conţine şiruri de caractere cu lungime variabilă care nu pot ocupa mai mult de 2GB.
o DATE reprezintă date calendaristice valide între 1 ianuarie 4712 î.Hr. şi 31 decembrie 9999 d.Hr.
o RAW(n) e un tip binar ale cărui valori ocupă n octeţi. Valoarea maximă a argumentului n este 2000.
o LONG RAW e un tip binar ce conţine valori de dimensiune variabilă, nu mai mult de 2 GB.
o ROWID conţine şiruri hexazecimale care reprezintă adresele unice ale liniilor în tabelele din care fac
parte. Acest tip de date corespunde valorilor returnate de pseudocoloana ROWID.
o UROWID [(n)] conţine şiruri hexazecimale care reprezintă adresele logice ale liniilor dintr-un tabel
indexat. Argumentul n specifică dimensiunea unei coloane de tip UROWID. Dimensiunea maximă şi
implicită e de 4000 octeţi
o CLOB conţine obiecte de dimensiuni mari (large object) de tip caracter. Elementele ce compun un astfel
de obiect aparţin setului de caractere al bazei de date. Dimensiunea maximă a unei valori CLOB este 4
GB.
o NCLOB e similar tipului CLOB, cu deosebirea că datele stocate corespund setului naţional de caractere.
o BLOB stochează obiecte de tip binar de dimensiune maximă 4 GB.
o BFILE conţine un locator către un fişier binar de dimensiune maximă 4GB, stocat în afara bazei de date.
Acest tip de date permite accesul la obiecte care rezidă în fişierele sistemului de operare al serverului
bazei de date.
o TIMESTAMP(precizie_fracţiuni_secundă) cuprinde valori pentru anul, luna, ziua, ora, minutul şi
secunda unei date calendaristice. Argumentul precizie_ fractiuni_ secunda reprezintă numărul de cifre
din partea fracţionară a câmpului corespunzător secundelor. Valorile acceptate pentru
precizie_fracţiuni_secundă sunt între 0 şi 9, iar valoarea implicită este 6.
o TIMESTAMP (precizie_fracţiuni_secundă) WITH TIME ZONE cuprinde pe lângă informaţiile
corespunzătoare tipului anterior şi deplasarea fusului orar.
o TIMESTAMP (precizie_fracţiuni_secundă) WITH LOCAL TIME ZONE conţine valorile tipului
TIMESTAMP WITH TIME ZONE. Diferenţa constă în faptul că la stocarea în baza de date, o dată

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.

Forma simplificată a comenzii CREATE TABLE este următoarea:

CREATE TABLE [schema.]nume_tabel (nume_coloana_1 tip_date [DEFAULT expresie],


...
nume_coloana_n tip_date [DEFAULT expresie] );

Exemplu: se creează un tabel cu numele angajati şi cu structura cod, nume,salariu:

CREATE TABLE angajati (cod NUMBER(4) NOT NULL, nume VARCHAR2(15), salariu NUMBER(10),
comision NUMBER(10));

Un tabel poate fi creat dintr-un tabel existent:

CREATE TABLE tabel_nou (nume_coloana_1, nume_coloana_2, …, nume_coloană_n)


AS (SELECT nume_coloană_1, nume_coloană_2, …, nume_coloană_n
FROM tabel_vechi WHERE conditie);

Exemplu: se creează un tabel cu structura cod, nume, salariu având câmpurile preluate din tabelul emp:

CREATE TABLE ang (cod, nume, salariu)


AS SELECT empno, ename, sal FROM 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:

ALTER TABLE [schema.]nume_tabel


ADD | MODIFY ( nume_coloana_1 tip_de_date [DEFAULT expresie],
..., nume_coloana_n tip_de_date [DEFAULT expresie] )
| DROP (nume _coloana)[CASCADE CONSTRAINTS]
| SET UNUSED (coloana)
| DROP UNUSED COLUMNS
| ENABLE|DISABLE CONSTRAINT constrangere;

2
Baze de date— DDL&DML Lab.8

Exemple:
- să se modifice structura tabelului angajati, prin adăugarea coloanei meserie:

ALTER TABLE angajati


ADD (meserie VARCHAR2(10));

- să se modifice structura tabelului angajati, prin modificarea dimensiunii coloanei cod din NUMBER(4) în
NUMBER(5):

ALTER TABLE angajati


MODIFY (cod 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):

ALTER TABLE angajati


MODIFY (cod VARCHAR2(5));

- să se modifice structura tabelului angajati prin ştergerea coloanei comision.

ALTER TABLE angajati


DROP (comision) ;

Ştergerea unui tabel se realizează cu ajutorul comenzii DROP TABLE.

Sintaxa:

DROP TABLE [schema.]nume_tabel;

Exemplu: ştergerea tabelului ang:

DROP TABLE ang;

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:

FLASHBACK TABLE tabel TO BEFORE DROP;

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

TRUNCATE TABLE [schema.]nume_tabel;

Redenumirea unui tabel se face prin comanda RENAME


Sintaxa:

RENAME nume_vechi TO nume_nou;

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

Vederile și tabelele din dicționarul datelor conțin informații despre:


- utilizatori și privilegiile acestora
- tabele, coloane și tipurile de date ale acestora
- privilegii acordate asupra obiectelor din baza de date
- etc.

Datele stocate în dicționarul datelor se mai numesc ”meta-date”.


Există câteva sute de tabele și vederi în dicționar. Cele mai importante (pentru scopul acestui curs) sunt:
- USER_* - vederi care descriu obiectele din schema utilizatorului
- ALL_* - vederi care descriu obiecte din schemele altor utilizatori asupra cărora utilizatorul are privilegii
- DBA_* - vederi care descriu ”orice” din baza de date și pot fi folosite doar de DBA

USER_TABLES – vedere ce descrie tabelele din schema utilizatorului


USER_TAB_COLUMNS – vedere ce descrie coloanele tabelelor, vederilor ce aparțin utilizatorului
ALL_TABLES – vedere ce descrie tabelele la care utilizatorul are acces, inclusiv la cele ce aparțin schemei altor
utilizatori
DBA_TABLES – vedere ce conține toate tabelele din baza de date, indiferent cărui utilizator îi aparțin.

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.

Sintaxa comenzii CREATE TABLE:

CREATE TABLE [schema.]nume_tabel (nume_coloana_1 tip_date [DEFAULT expresie][constr_coloana_1],



nume_coloana_n tip_date [DEFAULT expresie] [constr_coloana_n]
[ ,constr_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)]

Sintaxa clauzei constr_tabel din comanda CREATE TABLE este următoarea:

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

CREATE TABLE angajati (


cod NUMBER(4),
nume VARCHAR2(10) NOT NULL,
functie VARCHAR2(9),
cod_sef NUMBER(4),
data_ang DATE,
sal NUMBER(7,2) CONSTRAINT sal_chk CHECK (sal BETWEEN 200 AND 20000),
com NUMBER(7,2),
cod_dept NUMBER(7,2) NOT 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:

CREATE TABLE departamente(


cod_dept NUMBER(2),
nume_dept VARCHAR2(14) UNIQUE
locatie VARCHAR2(13) );

** creare tabel cu definire constrângere UNIQUE la nivel de coloană, cu atribuire de nume constrângerii:

CREATE TABLE departamente(


cod_dept NUMBER(2),
nume_dept VARCHAR2(14) CONSTRAINT departamente_nume_dept_uk UNIQUE
locatie VARCHAR2(13) );

** creare table cu definire constrângere UNIQUE la nivel de tabel fără atribuire de nume constrângerii:

CREATE TABLE departamente(


cod_dept NUMBER(2),
nume_dept VARCHAR2(14),
locatie VARCHAR2(13),
UNIQUE (nume_dept) );

** creare table cu definire constrângere UNIQUE la nivel de tabel cu atribuire de nume constrângerii:

CREATE TABLE departamente(


cod_dept NUMBER(2),
nume_dept VARCHAR2(14),
locatie VARCHAR2(13),
CONSTRAINT nume_dept_uk UNIQUE (nume_dept));

5
Baze de date— DDL&DML Lab.8

Constrângerea de integritate a entităţii (PRIMARY KEY)

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

CREATE TABLE stud (


nr_matricol NUMBER(4) CONSTRAINT nr_matricol_pk PRIMARY KEY,
nume VARCHAR2(10),
adresa VARCHAR2(20));

**se creează tabelul stud care are coloana nr_matricol cu atributul de cheie primară (cu numele nr_matricol_pk) definită
la nivel de tabel:

CREATE TABLE stud (


nr_matricol NUMBER(4),
nume VARCHAR2(10),
adresa VARCHAR2(20),
CONSTRAINT nr_matricol_pk PRIMARY KEY(nr_matricol));

Constrângerea de integritate referenţială

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:

CREATE TABLE note (


nr_matricol NUMBER(4),
disciplina VARCHAR2(10),
nota NUMBER(2),
CONSTRAINT nr_matricol_fk FOREIGN KEY(nr_matricol) REFERENCES stud(nr_matricol));

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

CREATE TABLE note2 (


nr_matricol NUMBER(4) CONSTRAINT nr_matricol_fk REFERENCES stud(nr_matricol),
disciplina VARCHAR2(10),
nota NUMBER(2) );

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 :

SELECT constraint_name, constraint_type, search_condition


FROM USER_CONSTRAINTS
WHERE table_name='ANGAJATI';

**afişarea numelui constrângerilor şi a coloanelor asociate acestora:

SELECT CONSTRAINT_NAME, COLUMN_NAME


FROM USER_CONS_COLUMNS
WHERE table_name='ANGAJATI';

OBS: Adăugarea/ eliminarea unei constrângeri poate fi făcută şi cu ajutorul comenzii ALTER TABLE.

ALTER TABLE nume_tabel


ADD [CONSTRAINT nume_constrangere] tip_constrangere(nume_coloana);

ALTER TABLE nume_tabel


DROP PRIMARY KEY | UNIQUE (nume_coloana) | CONSTRAINT nume_constrangere;

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:

ALTER TABLE nume_tabel


ENABLE | DISABLE CONSTRAINT nume_constrangere;

Limbajul de manipulare a datelor (DML- Data Manipulation Language)

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

™ Comanda INSERT se foloseşte pentru a insera rânduri într-un tabel.

Forme:

a) INSERT INTO tabel [(col1, col2, …)]


VALUES (expresie 1, expresie2, …);

b) INSERT INTO table [(col1, col2,…)]


comanda_SELECT;

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:

INSERT INTO deptartamente


VALUES (70,’CONTROLLING’,’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.

DELETE FROM tabel


[WHERE conditie];

Ex:- ştergerea departamentului cu codul 70:

DELETE FROM deptartamente


WHERE cod_dept=70;

Dacă nu este specificată nici o condiţie se şterg toate rândurile tabelului.


În clauza WHERE pot fi folosite şi subinterogări.
Ştergerile accidentale pot fi omise, restaurându-se valorile iniţiale prin comanda ROLLBACK dacă setarea SET
AUTOCOMMIT are valoarea OFF.

™ Comanda UPDATE modifică rândurile unui tabel.

Forme:

UPDATE tabel
SET coloana1=expresie1[, coloana2=expresie2,…]
[WHERE conditie];

UPDATE table
SET (coloana1, coloana2, …)=(subinterogare)
[WHERE conditie];

Ex:-modificarea locaţiei departamentului 70

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

Coloana Tip/ dimensiune date Constrangeri


Cnp Number (13) Primary key
Nume Varchar2(10) Not null
Cod_dept Number(2) Foreign key
Cnp_sef Number(13) Foreign key
Data_nastere Date
Data_angajare Date
Salar Number(7,2) Check 200≤salar≤20000
Comision Number(7,2)
Loc_nastere Varchar2(10)

DEPARTAMENTE

Coloana Tip/dimensiune date Constrangeri


Cod_dept Number(2) Primary key
Nume_dept Varchar2(10) Unique
Localitate Varchar2(10)

ƒ Să se vizualizeze structura tabelelor, precum şi constrângerile aplicate asupra unor coloane.


ƒ Să se insereze 2 departamente în tabelul departamente şi cel puţin 4 angajaţi în fiecare departament.
ƒ Să se realizeze operaţii de inserare/actualizare/ştergere asupra înregistrărilor din tabele.

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