Documente Academic
Documente Profesional
Documente Cultură
C9 BD PDF
C9 BD PDF
Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
BAZE DE DATE
LECTOR DR. ADRIAN RUNCEANU
10.05.2013
Curs 9
Limbajul SQL
10.05.2013
Limbajul SQL
Constrngeri
10.05.2013
10.05.2013
Tipuri de constrangeri
Constrangere
NOT NULL
UNIQUE
PRIMARY
KEY
FOREIGN
KEY
CHECK
Descriere
specifica faptul ca o coloana nu poate avea valoarea nula
specifica o coloana sau o combinatie de coloane a carei valori trebuie
sa fie unice pentru toate randurile din tabel
identifica fiecare rand al tabelei
stabileste o relatie de cheie straina intre coloana si coloana tabelei de
referinta
specifica o conditie care trebuie sa fie adevarata
10.05.2013
Ghidul Constrngerilor
1. Toate constngerile sunt cuprinse ntr-un dicionar.
d nume sugestive.
3. Numele unei constrngeri trebuie s urmeze un anumit
standard.
4. Dac nu se denumete constrngerea, server-ul Oracle
genereaz un nume de forma SYS_Cn, unde n este un
numar ntreg astfel nct numele constrgerii este unic.
5. Constrngerile definite pentru un anumit tabel pot fi
vizualizate n USER_CONSTRAINTS (dicionarul
tabelei).
10.05.2013
Definirea Constrangerilor
Sintaxa
[table_constraint][...]);
10.05.2013
10.05.2013
EXEMPLU
Adugarea unei constrngeri unui tabel odat cu
crearea lui.
Constrngere
CREATE TABLE angajati(
pentru coloan
ANGAJAT_ID number(6)
NUME varchar2(20)
SALARIU number(4)
MANAGER number(4)
FUNCTIE varchar2(20) NOT NULL CONSTRAINT
angajat_id_pk PRIMARY KEY(ANGAJAT_ID))
Constrngere
pentru tabel
10.05.2013
10
timp cu tabelul.
Constrngerile pot fi adugate tabelului dup
creearea lui.
Constrngerile pot fi definite pe 2 nivele:
Nivelul
constrangerii
Coloana
Tabel
Descriere
Face referire la o singura coloana; poate defini orice tip de
constrangere de integritate
Face referire la una sau mai multe coloane; poate defini orice
constrangere exceptand pe cea de tip NOT NULL
10.05.2013
11
Sintaxa:
10.05.2013
12
In sintaxa avem:
10.05.2013
13
10.05.2013
14
Exemplu
10.05.2013
15
10.05.2013
16
10.05.2013
17
Constrngerea UNIQUE
Constrngerea UNIQUE de integritate impune
ca fiecare valoare a unei coloane sau set de coloane
s fie unic - dou rnduri ale aceluiai tabel s nu
aib aceleai valori ntr-o anumit coloana sau set
de coloane.
Permite includerea de valori nule numai dac
constrngerea NOT NULL nu este definit pentru
aceeai coloan (valoarea nul nu este considerat
a fi echivalent cu ceva).
Constrngerea UNIQUE poate fi definit att la
nivel de linie ct i la nivel de tabel.
10.05.2013
18
Exemplu
n exemplul de mai jos se aplic constrngerea
UNIQUE coloanei EMAIL a tabelei angajat_nou1.
Numele constrngerii este angmail_un.
CREATE TABLE angajat_nou1(
ANGAJAT_ID number(6)
NUME varchar2(10) NOT NULL
EMAIL varchar2(20)
SALARIU number(4)
COMISION number(4)
DATA_ANG number(4) NOT NULL
CONSTRAINT angmail_un UNIQUE(EMAIL))
10.05.2013
19
10.05.2013
20
10.05.2013
21
10.05.2013
22
Exemplu
n urmtorul exemplu se definete o constrngere de
tip FOREIGN KEY coloanei ID_DEPT a tabelei
ANGAJAT_NOU2 utiliznd sintaxa la nivel de tabel.
CREATE TABLE ANGAJAT_NOU2(
ID_EMPNO number(6)
NUME varchar2(10)
SALARIU number(4)
COMISION number(4)
EMAIL varchar2(25)
ID_DEPT number(4) CONSTRAINT angdept_fk FOREIGN
KEY(ID_DEPT)
REFERENCES DEPARTAMENTE (ID_DEPT)
CONSTRAINT angmail_un UNIQUE (EMAIL))
10.05.2013
23
10.05.2013
24
10.05.2013
25
10.05.2013
26
10.05.2013
27
Exemplu
10.05.2013
28
10.05.2013
29
n sintax avem:
10.05.2013
30
Observaii
Se poate aduga, terge, activa sau
dezactiva o constrngere, dar nu-i putem
modifica structura.
Se poate aduga o constrngere NOT
NULL la o coloan existent utiliznd
clauza MODIFY a declaraiei ALTER
TABLE.
10.05.2013
31
Exemplu
Se poate aduga o constrngere i unui tabel
existent (nu numai odat cu crearea lui).
n urmtorul exemplu vom creea o
constrngere FOREIGN KEY n tabela ANG.
Constrngerea asigur existena unui manager
dac exist angajat n tabela ANG.
ALTER TABLE ANG
ADD CONSTRAINT angmgr_fk FOREIGN
KEY(MANAGER)
REFERENCES ANG (ID_ANGAJAT))
10.05.2013
33
n sintaxa avem
10.05.2013
34
Exemplu
1.
n exemplul urmtor vom terge
constrngerea la nivelul coloanei MGR din tabel.
ALTER TABLE ANG
DROP CONSTRAINT angpmgr_fk
10.05.2013
35
10.05.2013
36
10.05.2013
n sintaxa avem
37
10.05.2013
38
Observaii
Se poate utiliza clauza DISABLE att n
declaraia CREATE TABLE ct i n ALTER
TABLE.
Clauza CASCADE dezactiveaz constrngeri
de integritate dependente
Exemplu
ALTER TABLE DEPARTAMENTE
DISABLE CONSTRAINT id_dept_pk
CASCADE
10.05.2013
39
10.05.2013
n sintaxa avem
este numele tabelului
table
constraint este numele constrangerii
40
10.05.2013
41
Observaii
Dac se activeaz o constrngere, acest
10.05.2013
Exemplu
42
10.05.2013
43
Constrngeri Cascadate
Constrngerile de tip CASCADE sunt utilizate
10.05.2013
44
Vizualizare Constrngeri
Dup ce creem un tabel putem verifica
10.05.2013
45
Exemplu
10.05.2013
46
Exerciii Propuse
10.05.2013
Soluie 1:
47
10.05.2013
Soluie 2:
48
10.05.2013
49
Soluie 3:
10.05.2013
ntrebri?
50