Documente Academic
Documente Profesional
Documente Cultură
Curs 1
Biliografie
1.
2.
3.
4.
5.
6.
7.
8.
9.
Baze de date
Curs 1
1. Introducere
1.
2.
3.
4.
5.
6.
Baze de date
Curs 1
1. Definitii
Baze de date
Curs 1
Structura
Top
Randuri
(inregistrari
records)
Bottom
Curs 1
- Numeric generic
Baze de date
din sir. Ex 20
Integer
Float
Real
Serial
Baze de date
Curs 1
Baze de date
Curs 1
Baze de date
Curs 1
BACKUP
RECOVERY
ROLLBACK
ROLLFORWARD
ARHITECTURA CLIENT/SERVER
SISTEM TRANZACTIONAL1010
ACCES CONCURENT
ADMINISTRARE DREPTURI ACCES
Baze de date
Curs 1
10
Model distribuit
Model ierarhizat
2. Dupa cost
Medii multiuser
4. Dupa limbajul de dezvoltare aplicatii:
Limbaj nativ
Limbaj gazda
Baze de date
Curs 1
11
Baze de date
Curs 1
12
Baze de date
Curs 1
13
Baze de date
Curs 1
14
Baze de date
Curs 1
15
Baze de date
Curs 1
16
Baze de date
Curs 1
17
Baze de date
Curs 1
18
Curs 2-3
Prof. dr. ing. Dorin Carstoiu
Baze de date
Curs 2-3
Cuprins
1.
2.
3.
4.
5.
Modelul datelor
Enttitati, atribute, relatii
Modelul entitate relatie (E-R)
Memorarea datelor, fisiere, organizare
Metode de cautare pentru acces la date
Baze de date
Curs 2-3
Grup 1
Grup n
Schema conceptuala
Schema interna
Mediul de stocare
Baze de date
Curs 2-3
Baze de date
Curs 2-3
Curs 2-3
Baze de date
Curs 2-3
Baze de date
Curs 2-3
Baze de date
Curs 2-3
Curs 2-3
Baze de date
Curs 2-3
10
3. Model E-R
Modelul pentru BD Companie
Ini
Nume
Ssn
Pren
Numar Nume
Nume
Loc
Adresa
(1.1)
Salariu
ANGAJAT
(4.N)
Lucreaza
Sex
DEPARTAMENT
(0.n)
(1.1)
Dat_n
(0.n)
(1.n)
(0.n)
Manager
Ore
Supervisor
(0.n)
(1.n)
Relatie
Control
Lucreaza_la
(1.n)
Nume
(1.n)
INTRETINUT
Relatie
Nume
PROIECT
Dat_n
Numar
Sex
Baze de date
(1.1)
Loc
Curs 2-3
11
Baze de date
Curs 2-3
12
Baze de date
Curs 2-3
13
Baze de date
Curs 2-3
14
Baze de date
Curs 2-3
15
5. Metode de cautare
1.
2.
Baze de date
Curs 2-3
16
HASH
Pointer = functie_hash(camp_hash) si indica grupul in care se
gaseste inregistrarea.
Utilizata atat la stocare cat si la citire
Baze de date
Curs 2-3
17
Hash
Grup1
Grup2
Grup3
Grupuri initiale (date de
valorile functiei hash)
Grup n
Overflow 1
Grupuri overflow
Overflow k
Baze de date
Curs 2-3
18
Curs 4
Prof. dr. ing. Dorin Carstoiu
Baze de date
Curs 4
Cuprins
1.
2.
3.
4.
5.
6.
Definire index
Tipuri de indecsi
Index primar
Index secundar
Index de grup (cluster)
Index multinivel (arbori B, arbori B+)
Baze de date
Curs 4
1. Definire index
Acest capitol trateaza structurile de date aditionale, numite si index,
index ce
sint stocate pe disc si sunt utilizate pentru accesul la inregistrari.
Ideea structurii de acces indexate este similara cu cea utilizata uzual in
textele din carti. O carte, listeaza la sfirsit termenii importanti aranjati
in ordine alfabetica.
La fiecare termen din aceasta lista este furnizata o succesiune a
numarului paginilor la care termenul apare si este explicat.
Utilizind indexul se gaseste lista adreselor (in cazul de fata numarul
paginii) de localizare a termenului in carte.
In concluzie, scopul indexarii este de a indica adresa exacta a datei de
interes.
Un index este construit uzual dupa un singur cimp al fisierului numit
si cimp index,
index ce asociaza la fiecare valoare a cimpului index o lista
de pointeri catre toate blocurile ce contin inregistrarea cu valoarea
specificata. Avantajul indexarii rezida in faptul ca valorile in index
sint ordonate, asa ca aici pot fi aplicate metode de cautare binara.
Cum structura index este mult mai redusa decit tabela de date,
eficienta cautarii binare in acesta structura creste.
Baze de date
Curs 4
2. Tipuri de indecsi
Baze de date
Curs 4
3. Index primar
Un index primar este un fisier ordonat cu inregistrari de lungime fixa
avind doua cimpuri. Primul cimp al indexului este de acelasi tip cu
un cimp cheie ordonat al tabelei de date, al doilea cimp este un
pointer catre un bloc de date (o adresa a blocului). Cimpul cheie de
ordonare se mai numeste si cheia primara a tabelei de date.
Asociatia celor doua cimpuri formeaza intrarea index sau
inregistrarea index, pentru fiecare bloc al tabelei de date. Cum
tabela de date este ordonat dupa valorile cimpului index in fisierul
index valoarea primului cimp este data de valoarea cimpului index
de la prima inregistrare a blocului. Al doilea cimp, cel ce semnifica
un pointer este de tip intreg si indica adresa blocului. Se poate
descrie structura fisierului index ca fiind formata din perechi de
forma < K(i) , P(i) >, pentru i luind valori de la 1 la numarul blocurilor
in care este stocata tabela de date.
Numarul total al intrarilor index in fisierul index este egal cu numarul
blocurilor disc folosite pentru stocarea tabelei de date. Valoarea
cimpului index al primei inregistrari dintr-un bloc al tabelei de date
se mai numeste si valoare de ancorare si inregistrarea, inregistrare
de ancorare a blocului.
Baze de date
Curs 4
Baze de date
Curs 4
Fisier in dex
C h eie
Poin ter
an corare bloc
T A BE LA D E D A T E
N um e Ssn . D ep_n r
A brudan
A costa
A brudan
A dam
A dam
V ovc
V ovc
Baze de date
Curs 4
Baze de date
Curs 4
4. Index secundar
Baze de date
Curs 4
Baze de date
Curs 4
10
Fisier index
Cheie
Pointer
ancorare bloc
1
2
3
4
5
TABELA DE DATE
Dep_nr Nume Ssn .
5
2
1
102
31
1042
3
312
1042
513
4
Baze de date
Curs 4
11
F isier in d ex
C h eie
P oin ter
a n cor a r e bloc
1
2
3
4
5
TABELA DE DATE
D ep _ n r
N u m e S sn .
1
1
1
2
2
3
3
4
102
102
Baze de date
Curs 4
12
Tabela nordonata
TABELA DE DATE
Dep_nr Nume Ssn .
1
21
3
7
Fisier index
Cheie
Pointer
ancorare bloc
1
3
7
21
23
3
21
1234
3
Baze de date
Curs 4
13
1.
2.
Baze de date
Curs 4
14
Baze de date
Curs 4
15
Top index
Cheie
Pointer
ancorare bloc
1
21
TABELA DE DATE
Dep_nr Nume Ssn .
1
21
22
7
Index
nivel 1
1
3
4
7
3
4
21
22
1032
Baze de date
Curs 4
16
Arbori B
Un arbore B de ordin p, construit dupa un cimp cheie al fisierului de
date satisface urmatoarele restrictii:
1. Fiecare nod intern in arborele B are structura
<P1,<K1,Pr1>,P2,<K2,Pr2>,...,<Kq-1,Prq-1>,Pq>
cu q<=p, in care, Pi este un pointer la un nou nod arbore numit si
pointer arbore,
arbore pointerii Pri fiind pointeri data,
data pointeri catre blocuri in
tabela de date ce contin inregistrarea cu cheia k.
2 In fiecare nod K1<K2<....<Kq-1
Valoarea inregistrarii cu cheia X in subarborele punctat de Pi este data
de conditiile Ki-1<X<Ki pentru 1<i<q, X<Ki pentru i=1 si Ki-1<X
pentru i=q
4. Fiecare nod are cel mult p pointeri arbore
5. Fiecare nod exceptind radacina si nodurile frunza au cel putin
[p/2] pointeri arbore. Nodul radacina are cel putin doi pointeri.
6. Un nod cu q pointeri arbore, q<=p, contine q-1 valori ale cimpului
cheie, deci q-1 pointeri data
7. Toate nodurile frunza sint la acelasi nivel, au aceeasi structura
exceptind faptul ca toti pointeri arbore Pi sint nuli.
Baze de date
Curs 4
17
X
----------Ki-1<X<Ki
X
---------Kq-1<X
Pointer arbore
Baze de date
Pointer data
Curs 4
18
Exemplu de arbore B
* 5,o * 8,o *
1,o
Baze de date
3,o
6,o
7,o
Curs 4
o pointer data
* pointer arbore
pointer null
9,o
12,o
19
Arbori B+
Baze de date
Curs 4
20
Arbore B+
< P 1 , K 1 , P 2 ... , K i-1 , P i , K i , .. , K q -1 , P q , ...
In d ex
X
-------X K 1
X
----------K i-1 < X K i
>
X
---------K q -1 < X
Pointer data
Baze de date
Curs 4
21
Operare arbore B+
A r b o r e in itia l
* 5
1 o
Baze de date
in ser a r e 1
in ser a r e 3 si 7
5 o
* 3 * 5
1 o
Curs 4
7 o
22
Curs 5
Prof. dr. ing. Dorin Carstoiu
Baze de date
Curs 5
Cuprins
1.
2.
3.
4.
5.
6.
7.
Baze de date
Curs 5
Baze de date
Curs 5
Baze de date
Curs 5
Curs 5
Baze de date
Curs 5
2. Operatia SELECT
Baze de date
Curs 5
S<cond1>(S<cond2>(R))=S<cond2>(S<cond2>(R))
O cascada de operatii SELECT se pot combina utilizind operatorul
AND.
S<cond1>(S<cond2>(...(S<condn>(R))..)=S<cond1>.AND.<cond2>
.AND..AND. <condn>(R)
Baze de date
Curs 5
3. Operatia PROJECT
Curs 5
Baze de date
Curs 5
10
Baze de date
Curs 5
11
Baze de date
Curs 5
12
Baze de date
Curs 5
13
5. Operatia JOIN
Baze de date
Curs 5
14
Baze de date
Curs 5
15
Baze de date
Curs 5
16
JOIN aditional
Operatia JOIN se aplica doar la n-uplurile ce satisfac conditia de
join. Ca exemplu, la NATURAL JOIN intre relatiile R si S, toate
n-uplurile ce au atribute identice in cele doua relatii apar in rezultat,
iar cele ce nu satisfac conditia sint eliminate din rezultat. Un set de
operatii numit si JOIN ADITIONAL este creat pentru pastrarea
tuturor n-uplurilor din R , S sau din ambele. De exemplu, pentru lista
tuturor angajatilor si lista departamentelor la care sint manageri se
poate aplica o operatie JOIN ADITIONAL STING (LEFT OUTER
JOIN), operatie cu simbulul ]><, care va retine fiecare n-uplu din
prima relatie sau relatia stinga R, iar acolo unde conditiile join nu
sint adevarate atributele lui S in rezultat au valori nule.
REL1 = (ANGAJAT) ]>< SSN=DEP_MANAGER(DEPARTAMENT)
REZ = PNUME,INI,PREN,DEP_NUME(REL1)
Similar pentru JOIN ADITIONAL DREPT
Baze de date
Curs 5
17
6. Functii
Baze de date
Curs 5
18
Baze de date
Curs 5
19
Baze de date
Curs 5
20
7. Exemple
Ex.1. Sa se gaseasca adresa tuturor angajatilor ce lucreaza pentru
departamentul 'Cercetare,.
CERCET_DEPART = SDEP_NUME='Cercetare'(DEPARTAMENT)
CERCET_DEPART_ANGAJAT = (CERCET_DEPART ><
D_NR=DEP_NR ANGAJAT)
REZ = PNUME,INI,PREN,ADR(CERCET_DEPART_ANGAJAT)
Ex.2. Pentru fiecare proiect localizat in 'Bucuresti', se cere lista
numarului proiectului, numarul departamentului coodornator,
numele managerului departamentului, adresa si data sa de nastere.
BUC_PROIECT = SP_LOC='BUCURESTI'(PROIECT)
COORD_DEP = (BUC_PROIECT >< DEP_NR=DEP_NR
DEPARTAMENT)
PROIECT_DEP_MANAGER = (COORD_DEP ><
DEP_MANAGER=SSNANGAJAT)
REZ =
PP_NR,DEP_NR,NUME,INI,PREN,ADR,DAT_NA(PROIECT_DEP_MANAGER)
Baze de date
Curs 5
21
Baze de date
Curs 5
22
Baze de date
Curs 5
23
Curs 6
Prof. dr. ing. Dorin Carstoiu
Baze de date
Curs 6
Cuprins
1.
2.
3.
4.
5.
6.
Baze de date
Curs 6
Baze de date
Curs 6
Baze de date
Curs 6
Schema BD
Relatie
Tabela
Atribut
Camp
Atribut cheie
Cheie candidata
Baze de date
Curs 6
Definitii:
Cheie candidata un camp sau o asociatie de campuri ce are valori
distincte NOT NULL pentru fiecare inregistrare din baza de date
Cheie primara (PRIMARY KEY) o cheie candidata a tabelei
Cheie straina (FOREIGN KEY) un camp al unei tabele ce are
asociat acelasi tip de data cu un camp al altei tabele ce este o cheie
primara
Camp UNIQUE un camp al unei tabele ce are valori distincte
pentru fiecare inregistrare, dar care poate avea si valoare nula.
Doua valori nule in acelasi camp al unei tabele sunt considerate
distincte.
Camp NOT NULL un camp al unei tabele ce nu poate avea valori
nule fara nici o restrictie de existenta a valorilor identice.
Camp cu valoare DEFAULT un camp al unei tabele a carui
valoare implicita este data de o expresie. Cand valoarea nu a fost
precizata acesta ia valoarea default
Baze de date
Curs 6
Baze de date
Curs 6
Baze de date
Curs 6
Baze de date
Curs 6
Primary key
Restrictia precizeaza faptul ca un camp sau o asociatie de campuri
reprezinta o cheie primara.
Baze de date
Curs 6
10
Baze de date
Curs 6
11
2. FOREIGN KEY
Restrictia precizeaza faptul ca un camp este o cheie straina fiind cheie
primara a altei tabele
Definire in tabela angajat a cheii straine pentru campul D_nr:
CREATE TABLE Angajat
(NUME
VARCHAR(15),
INI
CHAR(1),
PREN
VARCHAR(12),
SSN
CHAR(9) CONSTRAINTS ang_PK
PRIMARY KEY,
DAT_NA
CHAR(8),
ADR
VARCHAR(30),
SEX
CHAR(1),
SALARIU
INTEGER,
SSSN
CHAR(9),
D_NR
INTEGER CONSTRAINTS ang_FK
REFERENCES departament(D_nr) FOREIGN KEY(D_nr) on delete
cascade|on delete set NULL);
Baze de date
Curs 6
12
OBS:
1.
2.
1.
2.
3.
Baze de date
Curs 6
13
3. UNIQUE
Restrictie impusa oricarui camp prin care nu se accepta valori diferite
de NULL identice
Exemplu in tabela departament
CREATE TABLE departament (DEP_NUME VARCHAR(20),
DEP_NR
INTEGER CONSTRAINT dep_PK
PRIMARY KEY,
DEP_MAN CHAR(9) CONSTRAINT dep_FK
REFERENCES angajat(SSN) FOREIGN KEY on delete cascade,
DAT_I_MAN CHAR(8) UNIQUE);
Sau
DAT_I_MAN CHAR(8) CONSTRAINT data_unic UNIQUE
Sau la tabela
CONSTRAINT data_unic UNIQUE(DAT_I_MAN)
Pot fi precizate mai multe campuri avand restrictia UNIQUE
Baze de date
Curs 6
14
4. NOT NULL
Restrictia statueaza faptul ca valoare campului nu poate fi nula la nici o
inregistrare
Fie tabela angajat
CREATE TABLE Angajat
(NUME VARCHAR(15) NOT NULL,
INI
CHAR(1),
PREN
VARCHAR(12) NOT NULL,
SSN
CHAR(9) CONSTRAINTS ang_PK
PRIMARY KEY,
DAT_NA
CHAR(8) NOT NULL,
ADR
VARCHAR(30),
SEX
CHAR(1),
SALARIU
INTEGER,
SSSN
CHAR(9),
D_NR
INTEGER CONSTRAINTS ang_FK
REFERENCES departament(D_nr) FOREIGN KEY on delete
cascade|on delete set NULL);
Baze de date
Curs 6
15
5. CHECK
Restrictie privind valorile posibile ale unui camp ce poate fi atasata unui
camp sau global mal multor campuri
Ex: Sa consideram tabela student intr-o universitate la care pentru
campurile an studiu si bursa se impun restrictii de valori intre 1 si
5, respectiv trei valori distincte posibile pentru bursa 120, 160 210.
CREATE TABLE Student (nume VARCHAR(10) NOT NULL,
an studiu
INTEGER CHECK(an studiu BETWEEN 1
and 5),
bursa
INTEGER CHECK(bursa = 120 or bursa = 160
or bursa = 210).)
sau
CREATE TABLE Student (nume VARCHAR(10) NOT NULL,
an studiu
INTEGER,
bursa
INTEGER,
CONSTRAINT bursa_an CHECK(an studiu >0 and an studiu<6
and (bursa = 120 or bursa = 160 or bursa = 210)).)
Baze de date
Curs 6
16
OBS:
Curs 6
17
Baze de date
Curs 6
18
Baze de date
Curs 6
19
Baze de date
Curs 6
20
Baze de date
Curs 6
21
Baze de date
Curs 6
22
Baze de date
Curs 6
23
Baze de date
Curs 6
24
Baze de date
Curs 6
25
Curs 7
Prof. dr. ing. Dorin Carstoiu
Baze de date
Curs 7
Cuprins
1.
2.
3.
4.
5.
Tipuri de cereri
Dictionarul de date
Cereri SQL la o singura tabela
Cereri SQL la mai multe tabele
Join SQL-3
Baze de date
Curs 7
1. Tipuri de cereri
1.
2.
3.
1.
2.
3.
4.
1.
2.
Baze de date
Curs 7
1. Dictionarul de date
Baze de date
Curs 7
Vedere USER_CATALOG
Contine numele tabelelor, vederilor, secventelor si sinonimelor detinute
de utilizator. Aceasta vedre are doua coloane (numele obiectului,
tipul obiectului)
SELECT * FOM USER_CATALOG
TABLE_NAME
TABLE_TYPE
ANGAJAT
TABLE
Vedere USER_OBJECTS
Contine numele, tipul si alte informatii despre obiectele detinute de
utilizator, inclusiv indecsi
SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS
Vedere USER_CONSTRAINTS
Vederea contine informatii despre constrangerile definite de utilizator.
Baze de date
Curs 7
Baze de date
Curs 7
Vedere USER_CONS_COLUMNS
Contine informatii despre coloanele ce sunt implicate in restrictiile de
integritate
Ex:
SELECT CONSTRAINT_NAME, COLUMN_NAME
FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME=nume_constrangere
Produce a tabela cu 2 coloane avand numele restrictiei specificata in
caluza WHERE si numele coloanei la care se aplica restrictia
Obs: In Oracle exista peste 2000 de vederi puse la dispozitia
utilizatorului grupate in diferite categorii. Liata tuturor vederilor este
obtinuta prin cererea:
SELECT VIEW_NAME FROM ALL_VIEWS
Baze de date
Curs 7
O cerere SQL este formata din mai multe clauze, fiecare clauza
incepe cu un cavant cheie. Prima clauza determina si tipul cererii.
SELECT [DISTINCT] lisata de expresii
FROM nume_tabela
WHERE conditie_coloane
ORDER BY criterii_sortare_rezultat
Efect:
Se parcurg toate liniile tabelei invocate prin clauza FORM.
Daca conditia din clauza WHERE este indeplinita se adauga liniile la
rezultat. Cand WHERE lipseste sunt adaugate toate liniile.
Listaq rezultat este data de lista de expresii a clauzei SELECT
Fara DISTINCT se vor elimina duplicatele din rezultat
Rezultatul este sortat functie de criteriile specificate in clauza
ORDER BY. Daca lipseste ordinea este dependenta de ordinea din
tabela initiala.
Baze de date
Curs 7
Caracteristici rezultatat:
Numar de coloane este egal cu numarul de expresii din clauza
SELECT
Numarul de linii este egal cu numarul liniilor ce indeplinesc conditia
WHERE
Parcurgerea liniilor este facuta pe baza serverului de baze de date
si nu se garanteaza ordinea rezultratelor daca nu se invoca clauza
ORDER BY.
O cerere simpla:
SELECT nume, prenume
FROM Angajat
Returneaza numele si prenumele angajatilor companiei.
Daca sae doreste afisare tuturor coloanelor se poate utiliza caracterul
*. Ordinea fizica este data de ordinea fizica a coloanelor tabelei.
SELECT *
FROM angajat
Baze de date
Curs 7
Invocarea constantelor
In select pot fi invocate constante numerice, sir de caractere sau NULL.
Ex: SELECT Salariul persoanei , Nume, Prenume, este , Salariu
FROM Angajat
va genera o tabela cu 5 coloane in care in prima coloana se culege
constanta Salariul persoanei si in coloana 4 constanta este,
coloanele 2, 3 si 5 aduc informatii din tabela Angajat.
Expresii aritmetice
Elementele din lista SELECT pot fi expresii complexe continand functii
si operatori. Operatori disponibili: *, /, +, -.
Ex: SELECT Nume, Prenume, Salariu, (Salariu + 100)*1.1
FROM Angajat
Genereaza o tabela cu 4 coloane, coloana 4 fiind o coloana calculata
dupa expresia precizata.
Baze de date
Curs 7
10
Expresii concatenate
Operatorul de concatenare (||) permite crearea de coloane ce culeg
informatii dintr-o expresie ce contine constante si rezultate ale
operatiilor efectuate asupra coloanelor.
Ex: SELECT Salariul persoanei || Nume || || Prenume || este ||
Salariu || lei
FROM Angajat
Genereaza o tabela cu un singur camp. In acest exemplu numele
coloanei este data de expresia din clauza SELECT. Aceasta
expresia poate excede numarul de caractere permise pentru
definirea unui camp si este necesara redefinirea sa prin
introducerea de ALIAS la coloana.
Ex: SELECT Salariul persoanei || Nume || || Prenume || este ||
Salariu || lei AS Descriere
FROM Angajat
AS poate fi omis fara nici un efect asupra rezultatului:
. lei Descriere
Baze de date
Curs 7
11
Eliminarea duplicatelor
Pot fi obtinute inregistrari identice daca nu se invoca in clauza SELECT
un camp cheie.
Ex: SELECT Slalariu FROM Angajat
Va genera inregistrari identice daca in companie sunt angajati cu
acelasi salariu. Utilizarea cuvantului cheie DISTICT elimina
duplicatele
Ex: SELECT DISTINCT Slalariu FROM Angajat
In toate cererile anterioare operatiile se executa pentru toate
inregistrarile din tabela. Specificarea unei conditii de selectie poate fi
realizata prin introducerea clauzei WHERE expresie_logica,
expresie ce este evaluata pentru fiecare inregistrare a tabelei
aducand in rezultat acele inregistrari pentru care rezultatul evaluarii
este TRUE
Ex: SELECT Nume, Prenume FROM Angajat WHERE D_nr=4
Baze de date
Curs 7
12
Conditii compuse
Pot fi formulate conditii complexe cu operatorii logici AND OR NOT si
paranteze de gruppare
Ex: (D_nr = 3 and Salariu >400) or (D_nr = 5 and Salariu*1.1<=300)
Baze de date
Curs 7
13
Operatorul BETWEEN
Operatorul specifica apartenenta unei valori la un interval inchis
expresie BETWEEN valoare_minima AND valoare_maxima
Ex: SELECT Nume, Prenume, Salariu
FROM Angajat
WHERE Salariu >300 and D_nr BETWEEN 2 AND 5
Operatorul IN
Operatorul testeaza apartenenta unei valori la o multime
expresie IN (val_1, val_1,,val_N)
EX: SELECT Nume, Prenume, Salariu
FROM Angajat
WHERE Salariu >300 and D_nr IN (2, 4, 6)
In lista de valori a operatorului IN poate fi inclus si NULL, NOT NULL
Operatorul poate fi negat NOT IN (lista_valori)
Baze de date
Curs 7
14
Operatorul LIKE
Se utilizeaza pentru a testa daca valoarea unei expresii respecta un
anumit sablon
expresie LIKE SABLON [ESCAPE caracter]
Sablonul se pune intre apostrofi si poate contine caracterele _ si %:
_ inlocuieste un caracter
% inlocuieste orice sir de caractere, inclusiv sir vid
Ex: SELECT Nume, Prenume FROM Angajat
WHERE UPPER(Prenume) LIKE A%A
Operatorul IS NULL
Valorile NULL au proprietati deferite, ele nu pot fi utilizate in expresii cu
operatori de egalitate sau diferit. Pentru acestea se utilizeaza IS
NULL si IS NOT NULL
Ex: SELECT Nume, Prenume FROM Angajat
WHERE sssn IS NULL
Baze de date
Curs 7
15
Clauza ORDER BY
ORDER BY specifica ordinea inregistrarilor in tabela produsa de
cerere. Pot fi invocate atat nume de coloane ce apar in rezultat cat
si nume de coloane ce nu apar in rezultat. Coloanele de ordonare
sunt tratate un ordinea specificarii la clauza ORDER BY, ordinea
default este ascendent (ASC), DESC specifica ordine
descrescatoare.
Ex: SELECT Nume, Prenume, D_nr, Salariu
From Angajat
WHERE D_nr IN (1,3,5) and Salariu >200 and Sssn IS NULL
ORDER BY D_nr ASC, Salariu DESC, Nume
Poate fi invocata in ORDER BY si ordinea coloanelor
Ex: SELECT Nume, Prenume, D_nr, Salariu
From Angajat
WHERE D_nr IN (1,3,5) and Salariu >200 and Sssn IS NULL
ORDER BY 3 ASC, 4 DESC, 1
Baze de date
Curs 7
16
Baze de date
Curs 7
17
Produs cartezian
Operatia se produce atunci cand in clauza WHERE nu se specifica nici
o conditie intre campurile tabelelor.
Ex: SELECT *
FROM Angajat, Departament
WHERE D_nr = 4
Equjoin
Consideram doar combinarea inregistrarilor tabelei Angajat cu cele din
departament dar numai pentru departamentul din care face parte un
anumit angajat.
SELECT Nume, Prenume, D_nume, D_location
FROM Angajat, Departament
WHERE D_nr = Dep_nr
Daca cele doua campuri au acelasi nume in tabelele Angajat si
Departament obtinem o operatie natural JOIN. Din punctul de
vedere al rezultatului nu este nici o diferenta.
Baze de date
Curs 7
18
Baze de date
Curs 7
19
Baze de date
Curs 7
20
SELECT
P_NR,DEP_NUME,NUME,INI,PREN,ADR,DAT_NA
FROM
PROIECT P,DEPARTAMENT D,ANGAJAT
WHERE
P.DEP_NR=D.DEP_NR AND DEP_MAN=SSN AND
P_LOC='Brazi
Join ext ern (out her j oin)
Cererea de list are a numelor si prenumelor angaj at ilor impreuna cu
supervizorii lor, iar pent ru angaj at ii ce nu au supervizor numele si
prenumele supervizorilor va fi NULL.
SELECT
A.NUME,A.PREN,S.NUME, S.PREN
FROM
ANGAJAT A, ANGAJAT S
WHERE
A.SSSN (+)=S.SSN
Join extern poate fi invocat si cu alte conditii decat egalitate sau
BETWEEN sau LIKE
Baze de date
Curs 7
21
5. JOIN SQL-3
De la versiunea 9i Oracle recunoaste si sintaxa SQL-3. Se remarca
faptul ca aceste operatii pot fi executate utilizand sintaxele descrise.
Clauza CROSS JOIN
Realizeaza produs cartezian. Spre deosebire de sintaxele anterioare a
doua tabela nu se precizeaza in FROM ci in caluza CROSS JOIN
SELECT [DISTINCT] lista_expresii
FROM tabela1
CROSS JOIN tabela2
Clauza JOIN .. USING
Se utilizeaza cand in cele doua tabele invocate la join coloanele au
acelasi nume, operatia fiind de tip equjoin
SELECT [DISTINCT] lista_expresii
FROM tabela1
JOIN tabela2 USING (nume_coloane)
Baze de date
Curs 7
22
Baze de date
Curs 7
23
Baze de date
Curs 7
24