Documente Academic
Documente Profesional
Documente Cultură
NDRUMAR DE LABORATOR
Liviu erbnescu
UNIVERSITATEA HYPERION
LISTA LUCRRILOR
1. Utilizarea unui modul de administrare a bazelor de date, instalare, conectare,
prezentare, comenzi simple. Organizarea SGBD PostgreSQL;
. !rearea bazelor de date, a sesiunilor "i a utilizatorilor. !reare tabele cu di#erse
tipuri de c$mpuri;
% &nterogarea bazei de date 'cazul unui singur tabel(
). Popularea bazei de date
*. !ombinarea interog+rilor
,. !ondi-ii de selec-ie a datelor
.. /0presii condi-ionale
1. 2ipuri de asocieri 3ntre 3nregistr+rile unor tabele
4. &nterogarea mai multor tabele
15. 6o"tenirea;
11. Subinterog+ri
1; 2ipul !7S2
1%. 8unc-ii SQL la ni#el de ser#er
1). 2este.
LABORATORUL NR.1
UTILIZAREA UNUI MODUL DE ADMINISTRARE A BAZELOR DE DATE, INSTALARE,
CONECTARE, PREZENTARE, COMENZI SIMPLE.
ORGANIZAREA SGBD PostgreSQL;
Scop:
1. Familiarizarea cu mediul PgAdmin3
2. nelegerea structurii unei !B"
Consideraii teoretice:
Definire SGBD
Termenul de baz de date (database) reprezint o colecie de informaii corelate, relaiile
logice dintre aceste informaii i tehnicile de prelucrare corespunztoare (cutare, sortare, tergere,
inserare, modificare, etc.).
Sistemul de gestiune a bazelor de date S.G.B.D. (Database Management System -
DBMS) reprezint sistemul de programe care permite accesarea bazei de date de ctre utilizatori,
accesare ce permite realizarea de operaii asupra bazei de date.
2.Arhitecturi SGBD
Clasificri SGBD
Clasificare dupa modelul de date:
odelul de ierarhic de date ! legturile dintre date sunt ordonate unic, accesul se
face numai prin "#rful ierarhiei, un subordonat nu poate a"ea dec#t un singur superior direct i nu
se poate a$unge la el dec#t pe o singur cale%
odelul de date retea ! datele sunt reprezentate ca &ntr!o mulime de ierarhii, &n
care un membru al ei poate a"ea oric#i superiori, iar la un subordonat se poate a$unge pe mai
multe ci%
odelul relational (aplicaii comerciale, "olum de date mare si tipuri de date simple)
! structura de baz a datelor este aceea de relaie ' tabel, limba$ul ()* ((tructured )uer+
*anguage) este specializat &n comenzi de manipulare la ni"el de tabel%
odelul obiect!orientat (aplicaiilor tiintifice, multimedia)!,ceste modele sunt
orientate pe reprezentarea semnificaiei datelor. (tructura de baz folosit pentru reprezentarea
datelor este cea de clas de obiecte definit prin abstractizare din entitatea fizic pe care o
regsim &n lumea real. ,ici e-ist entiti simple i clase de entiti care se reprezint prin obiecte
simple sau clase de obiecte, ordonate &n ierarhii de clase i subclase. ,cest tip de baz de date a
aprut din necesitatea gestionrii obiectelor comple-e: te-te, grafice, hri, imagini, sunete (aplicaii
multimedia) i a gestionrii obiectelor dinamice: programe, simulri
odelul obiect!relational
Clasificare dupa numarul de utilizatori
(isteme mono!utilizator
(isteme multi!utilizator
Clasificare dupa numarul de statii pe care este memorat baza de date:
.aze de date centralizate ( toate datele (si (/.0) sunt memorate pe un singur
host)
.aze de date distribuite ( at#t datele c#t i (/.0!ul sunt memorate pe mai multe
host!uri, conectate printr!o retea de comunicaie)
,rhitectura client!ser"er:
(er"er (bac1!end): (/.0!ul si baza de date
Client (front!end): program (programe) de aplicatie
,rhitectur local (fiiere comune mapate &n interiorul reelei) ' pentru controlul accesului
se folosesc fisiere s+stem
O baza de date trebuie s asigure:
abstractizarea datelor (date unice),
integrarea datelor (controlul corelaiei datelor),
integritatea datelor (respectarea restriciile de integritate a datelor pe parcursul operaiilor
()*),
securitatea datelor (controlul accesului la baza de date),
parta$area datelor (datele pot fi accesate de mai muli utilizatori, e"entual &n acelai timp),
Un SGBD trebuie s asigure urmtoarele activiti:
definirea i descrierea structurii bazei de date ' se realizeaz printr!un limba$ propriu,
limba$ de definire a datelor (*00)%
ncrcarea datelor n baza de date ' se realizeaz prin comenzi &n limba$ propriu(limba$
de manipulare a datelor (*0))%
accesul la date ' se realizeaz prin comenzi specifice din limba$ul de manipulare a datelor
(()*). ,ccesul la date se refer la operaiile de interogare i actualizare.
2nterogarea este comple- i presupune "izualizarea, consultarea, editarea de situaii de
ieire (rapoarte, liste, regsiri punctuale).
,ctualizarea presupune 3 operaiuni: adugare, modificare efectuate prin respectarea
restriciilor de integritate ale .0 i tergere%
ntreinerea bazei de date ' se realizeaz prin utilitare proprii ale (/.0%
securitatea datelor ' se refer la asigurarea confidenialitii datelor prin autorizarea i
controlul accesului la date pe mai multe ni"ele, criptarea datelor.
Arhitectura ostgreS!"
4ostgre()* utilizeaz un model client5ser"er. 6 sesiune 4ostgre()* const &n mai multe
procese:
7n !roces ser"er, care gestioneaz fiierele bazei de date, accept cone-iuni la bazele de
date dinspre aplicaiile client, realizeaz actiunile cerute de client pe bazele de date.
(er"erul de base de date se numete postgres .
A!licaia client a utilizatorului care dorete sa e-ecute operaii pe baza de date. ,plicaiile
client pot fi foarte di"erse: un client poate fi un utilitar linie de comand, o aplicaie grafic,
un ser"er 8eb care acceseaz baza de date pentru a afia pagini de 8eb sau un utilitar
specializat de gestiune a bazelor de date. 7nele aplicaii client sunt puse la dispoziie &n
distribuia 4ostgre()*. a$oritatea sunt dez"oltate de utilizatori.
Ca i &n cazul altor aplicaii client5ser"er, clientul si ser"er!ul pot fi pe host!uri diferite. 9n
acest caz ele comunic prin cone-iuni TC4524.
(er"erul de 4ostgre()* poate gestiona multiple cone-iuni concurente de la clieni a"#nd
chiar "ersiuni diferite pentru 4ostgre()*. 4entru aceasta el pornete c#te un nou proces pentru
fiecare cone-iune. 0in acel punct, clientul si un proces al ser"er!ului comunic far inter"enia
procesului iniial postgres. ,stfel procesul principal al ser"er!ului continu s atepte noi clieni.
#odul de lucru al serverului ostgreS!"
4ostgres:l foloseste un model client5ser"er numit ;proces per!user<. 6 sesiune 4ostgres consta din
cooperarea urmatoarelor procese (programe): 7n proces daemon de super"izare ($ostmaster),
aplicatia frontend a userului (programul $s%l), si unul sau mai multe ser"ere bac1end de baze de
date (procesul $ostgres el insusi)
7n singur proces postmaster conduce o colectie de baze de date pe o singura gazda.
,plicatiile frontend care doresc sa acceseze o baza de date printr!o instalare face apelul la librarie.
*ibraria trimite cererea userului prin retea la postmaster. 4aii prin care trece o cerere ()* pentru
a se obine un rezultat:
&'6 cone-iune dinspre o aplicaie la ser"er!ul de 4ostgre()* a fost stabilit. Clientul trimite o
cerere ctre ser"er i ateapt s primeasc rezultatele trimise de ser"er (aplicatia frontend trimite
o cerere la postmaster prin so1et!ul de retea). C#nd o cone-iune este stabilita, aceasta porneste
un nou proces ser"er bac1end si conecteaza procesul frontend la un nou ser"er. 0in acel punct,
procesul frontend si ser"erul bac1end comunica fara inter"entia postmasterului. Cu toate ca,
postmasterul merge intotdeauna, asteptand cereri, procesele frontend si bac1end "in si pleaca.
*ibraria libp: permite unui singur frontend sa faca multiple cone-iuni la procesele bac1end.
,plicatia frontend este un singur fir de e-ecutie suportat prin intermediul libp:.
postmasterul creaza un ser"er bac1end (porneste un nou proces ser"er bac1end si conecteaza
procesul frontend la un nou ser"er).
(.Parser!ul "erific cererea trimis de aplicaie si corectitudinea sinta-ei i creeaz un query tree.
3.Sistemul de rescriere preia :uery tree!ul creat de parser i caut e"entualele reguli (depozitate &n
cataloagele sistemului) care trebuie aplicate query tree!ului. ,cesta aplic transformarile descrise
&n regulile respecti"e.
=.4lanificatorul56ptimizatorul preia query tree!ul rescris si creeaz un plan de execuie al cererii
care "a fi de fapt intrarea pentru sistemul de e-ecuie a comenzilor.
>.(er"er!ul e-ecut recursi! plan tree!ul.
4ostmasterul si bac1endul ruleaza pe o aceeasi masina (ser"erul de date), in timp ce aplicatia
frontend poate rula oriunde.
*imba$ul S!")Structured !uer* "anguage+
()*(Structured !uer+ "anguage) este limba$ul de baze de date cel mai frec"ent utilizat iar
cele mai utilizate sunt standardele ()*?@(0.ase, Ao-4ro, (,cces, 4arado-, etc) i
()*@BB3(4ostgre()* ! 6pen(ource, 6racle, (!()*, etc) . Tipurile de baze de date "or fi
detaliate &n cursul ;,rhitecturi (/.0<.
*imba$ul ()* este ;case insensiti"e< (nu ine cont de litere mari i litere mici), &ns pentru
anumite denumiri pot e-ista reguli specifice fiecrei baze de date.
Desfurarea lucrrii:
1. e lanseaz# inter$aa %gAdmin3
2. e adaug# un n&u ser'er de (aze de date
3. e creaz# & n&u# (az# de date
). e creaz# d&u# gru%uri n&i de utilizat&ri
*. e creaz# utilizat&ri +i se adaug# ,n gru%urile de acces
-. e creaz# & n&u# sesiune
.. e creaz# ta(ele +i se adaug# c/m%uri cu di$erite ti%uri de date
0. e 'izualizeaz# ta(elele +i se ,ncearca editarea din mediu integrat 1%entru $iecare
ta(el '&m a'ea & c2eie %rimar# creat# ,n mediul integrat3
LABORATORUL NR.2
CREAREA BAZELOR DE DATE, A SESIUNILOR I A UTILIZATORILOR.
CREARE TABELE CU DIVERSE TIPURI DE CMPURI;
Scop:
1. negerea &%eraiil&r necesare alc#tuirii unei (aze de date
2. Analiza ti%uril&r de date din cadrul 4L
Consideraii teoretice:
&,& -AB.". )fr legturi /ntre ele+
#$#$# Definire tabele
%abelele sunt entiti logice de re!rezentare a informaiei stocate asemntoare foilor
de calcul tabelare. &entru bazele de date a"ansate ele nu au o cores!onden fizic cu un
anumit fiier. 'oloanele dintr$un tabel cores!und c(m!urilor (fields) din cadrul bazelor de
date iar r#ndurile din tabel corespund nregistrrilor (records). Crearea unei baze de date &ncepe
cu definirea i crearea tabelelor necesare.
#$#$2 %i!uri de date !redefinite) frec"ent utilizate
-0U10 D. DA-. 21.C3.4- U-0"05A-.
Baze de date ce au la
baz S!"6(
.7: ostgreS!" .7:Alias $gS!"
Descriere
bigint intC &ntreg, cu semn pe C octei
boolean boolean bool logic (True sau Aalse)
b+tesDnE b+tea
stocare binar (utilizat inclusi" pentru stocarea
imaginilor &n di"erse formate sau a metafiierelor)
character(n) character "ar+ing D (n) E "archar D (n) E ir cu ma-im n caractere
character D (n) E char D (n) E ir cu e-act n caractere
date date calendar date (+ear, month, da+)
double precision floatC real, precizie F> dubl
inet 24"= sau 24"G adres gazd (host address)
integer integer int, int= &ntreg, cu semn pe = octei
macaddr adres ,C
mone+ mone+ ;currenc+ ;(moned)
float(p,s) numeric D (p, s) E decimal D (p, s) E numeric cu precizie prestabilit
real float= real, precizie simpl
smallint smallint int@ intreg pe @ octei
autoinc serial serial= autoincrementare, intreg = octei
bigserial serialC autoincrementare, intreg C octei
te-t ir de caractere cu lungime "ariabil
time time D (p) E timp (ore,minute,secunde, ms)
timestamp timestamp D (p) E dat i timp &mpreun
-ml 0ate format H*
#$#$* 'reare tabele
I-:
(inta-a (simplificat):
+ot" parantezele drepte din expresie indic# o expresie opional# iar acoladele o sec!en# ce se
repet# $i este separat# prin !irgul#. De asemenea simbolul %&' semni(ic# %sau'.
2ar column,constraint - ... . este :
unde:
&/01A/2 342 reprezint cheia primar de ordonare(c#mpul sau c#mpurile dup care se
face ordonarea)
+5% +677 semnific faptul c nu se accept "alori "ide (fr date) pentru c#mpul
respecti"
C8.C9 permite "erificri suplimentare (de e-emplu: tem!,ma89:;)
.7: )rearea unui tabel cu denumirea !arm in cadrul sc*emei c2+ c,mpul data este de tipul dat#
calendaristic# i !a (i ini ializat cu data curent# atunci c,nd se adaug# o nou# -nregistrare+ la (el
se procedeaz# i pentru c,mpul moment+ c,mp ce contine ora+ minutul secunda i (ractiunea de
secund#. .abelul con ine !alorile m#surate dintr-un proces.
4ot: C#mpul sau c#mpurile care constituie cheia !rimar nu pot a"ea "alori 4U""
#$#$< Stergere tabele
I-: (inta-a:
#$#$: 'reare indecsi
Tabelele pot fi inde-ate &n scopul obinerii unor date ordonate dup unul sau mai multe criterii (de
obicei se ordoneaz dup unul sau mai multe c#mpuri). 2nde-area J7 schimb ordinea fizic a
&nregistrrilor. 4rin definirea indecsilor se creaz automat tabele de coresponden dintre ordinea
fizic a &nregistrrilor i cea logic (corespunztoare ordonrii).
simpli,
e-:
multipli,
e-:
pariali,
CREATE TABLE c2.parm!a"a !a"e DEFAULT CURRENT_DATE#
m$men" "ime DEFAULT CURRENT_TIME#m$!u% varc&ar'()#
pc" varc&ar*()#par varc&ar'*)#va% numeric#um c&ar'()#
i!+ seria%#CONSTRAINT ,-parm PRIMARY KEYi!+)).
CREATE TABLE c2.parm!a"a !a"e DEFAULT CURRENT_DATE#
m$men" "ime DEFAULT CURRENT_TIME#m$!u% varc&ar'()#
pc" varc&ar*()#par varc&ar'*)#va% numeric#um c&ar'()#
i!+ seria%#CONSTRAINT ,-parm PRIMARY KEYi!+)).
CREATE /TEMPORARY0TEMP1 TABLE
"ab%e-name (/2 c$%umn-name !a"a-"3pe
/ c$%umn-c$ns"rain" / ... 1 141)
CREATE /TEMPORARY0TEMP1 TABLE
"ab%e-name (/2 c$%umn-name !a"a-"3pe
/ c$%umn-c$ns"rain" / ... 1 141)
CREATE TABLE vremea$ras varchar5()#"emp-min int#
"emp-ma+ int#precipi"a"ii rea#!a"a !ate).
CREATE TABLE vremea$ras varchar5()#"emp-min int#
"emp-ma+ int#precipi"a"ii rea#!a"a !ate).
/ CONSTRAINT c$ns"rain"-name 1
2NOT NULL0NULL0UNI"UE in!e+-parame"ers0
PRIMARY KEY in!e+-parame"ers 0 C#ECK e+pressi$n )4
/ CONSTRAINT c$ns"rain"-name 1
2NOT NULL0NULL0UNI"UE in!e+-parame"ers0
PRIMARY KEY in!e+-parame"ers 0 C#ECK e+pressi$n )4
CREATE TABLE vremea2$ras varchar5() NOT NULL#
"emp-min int#"emp-ma+ int C#ECK("emp-ma+$*()
#precipi"a"ii rea#!a"a !ate PRIMARY KEY).
CREATE TABLE vremea2$ras varchar5() NOT NULL#
"emp-min int#"emp-ma+ int C#ECK("emp-ma+$*()
#precipi"a"ii rea#!a"a !ate PRIMARY KEY).
DROP vremea
DROP vremea
DROP TABLE "ab%ename
DROP TABLE "ab%ename
CREATE INDE% in!e+p"rVremea ON vremea(!a"a)
CREATE INDE% in!e+p"rVremea ON vremea(!a"a)
CREATE INDE% in!e+p"rVremea2
ON vremea(!a"a&$ras)
CREATE INDE% in!e+p"rVremea2
ON vremea(!a"a&$ras)
e-:
6rdonarea dat de indeci poate fi cresctoare (,(C ' implicit) sau descresctoare (0I(C) ' &n
e-emplul dat, c#mpul data "a fi ordonat cresctor iar c#mpul ora ul "a fi ordonat descresctor
(inta-a (simplificat):
unde:
ASC 5 D.SC semnific tipul de ordonare ascendent5descendent %
4U"" 201S- K "alorile 4U"" ("ide) sunt puse la &nceput iar (implicit pentru ASC)%
4U"" "AS- K "alorile 4U"" ("ide) sunt puse la sf#rit (implicit pentru D.SC).
#$#$: Stergere indecsi
I-:
(inta-a (simplificat):
Desfurarea lucrrii:
1. e e5ecut# e5em%lele c&res%unz#t&are din seciunea T6T6
CREATE INDE% in!e+p"rVremea6
ON vremea(!a"a#$ras) '#ERE (!a"a782.'.2((58)
CREATE INDE% in!e+p"rVremea6
ON vremea(!a"a#$ras) '#ERE (!a"a782.'.2((58)
CREATE INDE% in!e+p"rVremea9 ON vremea(!a"a& $ras DESC)
CREATE INDE% in!e+p"rVremea9 ON vremea(!a"a& $ras DESC)
CREATE/UNI"UE1INDE% name ON "ab%e(c$%umn/ASC0DESC 1
/ NULLS 2 FIRST 0 LAST 4 1) /'#ERE pre!ica"e1
CREATE/UNI"UE1INDE% name ON "ab%e(c$%umn/ASC0DESC 1
/ NULLS 2 FIRST 0 LAST 4 1) /'#ERE pre!ica"e1
DROP in!e+p"rVremea
DROP in!e+p"rVremea
DROP INDE% / IF E%ISTS 1 name
DROP INDE% / IF E%ISTS 1 name
LABORATORUL NR.3
INTEROGAREA BAZEI DE DATE !"#$% $&$' s'&g$r t"(e%)
Scop:
Utilizarea &%eraiil&r de inter&gare 1un singur ta(el3
Consideraii teoretice:
F!@!F &/476A/4A DA%475/ D0+ %AB47
4reluarea datelor din tabel (interogarea bazei de date) se realizeaz prin utilizarea instruciunii
S474'%.
+ot= /u conteaz# dac# codul S01 este scris pe un singur rand sau pe mai multe r,nuri $i nici
dac# -ntre cu!inte exist# un spaiu sau mai multe. Se recomand# scriere ast(el -nc,t codul s# se
citeasc# c,t mai u$or.
I-: preia &ntregul tabel "remea
( : specific preluarea tuturor c#mpurilor )
I-: afi eaz toate c#mpurile i toate &nregistrrile din tabel
I-: preia doar c#mpurile specificate &n interogare
preia numai ce &ndeplinete condiiilor din cadrul ;LMINI< (condiii la ni"el de &nregistrare)
ordoneaz date descresctor
(e-:data) i cresctor (e-% oras)
grupeaz datele dup anumite c#mpuri &n "ederea realizrii anumitor operaii
(e-. calc. mediei temp. min.)
aplic condiii la ni"el de grup
(e-: doar orasele cu media temp. min O>)
aplic condiii5restricii at#t la ni"el de grup c#t i la ni"el de &nregistrare
SELECT ( FROM vremea
SELECT ( FROM vremea
SELECT ( FROM c2.parm ORDER BY i!+.
SELECT ( FROM c2.parm ORDER BY i!+.
SELECT $ras# !a"a FROM vremea
SELECT $ras# !a"a FROM vremea
SELECT $ras# !a"a# precipi"a"ii
FROM vremea
'#ERE"emp-min)*()AND"emp-ma+$'())ORprecipi"a"ii)()
ORDER BY !a"a :ES;# $ras
SELECT $ras# !a"a# precipi"a"ii
FROM vremea
'#ERE"emp-min)*()AND"emp-ma+$'())ORprecipi"a"ii)()
ORDER BY !a"a :ES;# $ras
SELECT $ras# av+("emp-min) FROM vremea ,ROUP BY $ras
SELECT $ras# av+("emp-min) FROM vremea ,ROUP BY $ras
SELECT $ras# av+("emp-min)
FROM vremea ,ROUP BY $ras #A-IN, av+("emp-min)<*
SELECT $ras# av+("emp-min)
FROM vremea ,ROUP BY $ras #A-IN, av+("emp-min)<*
+ot= .oate c,mpurile din cadrul S212). trebuie s# se reg#seasc# -n G345P B6+ alt(el nu
este posibil# gruparea acestora
efectueaz operaii &ntre c#mpuri i afieaz rezultatul &ntr!un c#mp nou
&ntoarce un numr ma-im de &nregistrri
(e-: primele FB obinute &n urma ordonrii)
(inta-a (simplificat):
#$2$2 >uncii ce !ot fi a!licate asu!ra c(m!urilor n cadrul S474'% (selecie)
Auncia 0escriere
a"g(expresie) edia aritmetic a e-presiei
count(P) Jumrul de &nregistrri
count(expresie) Jumrul de &nregistrri pentru care "aloarea e-presiei nu este nul
ma-(expresie) Qaloarea ma-im pentru e-presie
min(expresie) Qaloarea minimm pentru e-presie
sum(expresie) (uma e-presiei
+ot" (e8!resie) poate (i un c,mp sau rezultatul unor operaii aplicate mai multor c,mpuri
I-emplu:
;REATE TA=LE c2.parm!a"a !a"e :E>AULT ;URRENT-:ATE#m$men" "ime :E>AULT
;URRENT-TI?E#m$!u% varc&ar'()#
pc" varc&ar*()#par varc&ar'*)#va% numeric#um c&ar'()#i!+ seria%#
;ONSTRAINT ,-parm PRI?ARY @EYi!+)).
se%ec" A >RO? c2.parm $r!er b3 i!+.
INSERT INTO c2.parmm$!u%#pc"#par#va%#um) VALUES 8?'8#8P'8#8par'8#'26.9#8V8)#
8?68#8P98#8par'8#'6.9#8V8)#
8?28#8P'8#8par'8#'*6.9#8V8)#8?'8#8P28#8par28#'.9#8V8)#8?'8#8P28#8par68#*6.9#8V8)#
8?28#8P'8#8par28#6'.9#8V8)#8?98#8P'8#8par'8#6.'9#8A8).
BBsca!e * Ci%e pen"ru !a"a in caCu% in care '(7va%7'((.
UP:ATE c2.parm SET !a"aD!a"aB* EHERE va%<'( an! va% 7'((.
SELECT $ras# av+("emp-min) '#ERE !a"a ) 82(.''.2((F8
FROM vremea ,ROUP BY $ras #A-IN, av+("emp-min)<*
SELECT $ras# av+("emp-min) '#ERE !a"a ) 82(.''.2((F8
FROM vremea ,ROUP BY $ras #A-IN, av+("emp-min)<*
SELECT $ras# "emp-min# "emp-ma+#
("emp-min."emp-ma+)/2.( AS me!ia FROM vremea
SELECT $ras# "emp-min# "emp-ma+#
("emp-min."emp-ma+)/2.( AS me!ia FROM vremea
SELECT $ras# !a"a# precipi"a"ii FROM vremea
ORDER BY !a"a#$ras LIMIT '(
SELECT $ras# !a"a# precipi"a"ii FROM vremea
ORDER BY !a"a#$ras LIMIT '(
SELECT / ALL 0 DISTINCT 1
A 0 e+pressi$n / AS $u"pu"-name 1
/ FROM Gr$m-i"em /# ...1 1
/ '#ERE c$n!i"i$n 1
/ ,ROUP BY e+pressi$n /# ...1 1
/ #A-IN, c$n!i"i$n /# ...1 1
/ ORDER BY e+pressi$n / ASC 0 DESC 1
/ NULLS 2 FIRST 0 LAST 4 11
/ LIMIT 2 c$un" 0 ALL 4 1
SELECT / ALL 0 DISTINCT 1
A 0 e+pressi$n / AS $u"pu"-name 1
/ FROM Gr$m-i"em /# ...1 1
/ '#ERE c$n!i"i$n 1
/ ,ROUP BY e+pressi$n /# ...1 1
/ #A-IN, c$n!i"i$n /# ...1 1
/ ORDER BY e+pressi$n / ASC 0 DESC 1
/ NULLS 2 FIRST 0 LAST 4 11
/ LIMIT 2 c$un" 0 ALL 4 1
BBaGiseaCa va%$ri%e me!ii Ci%nice p"r. Giecare m$!u%Bpc"Bpar
SELE;T !a"a#m$!u%#pc"#par# AVHva%) as va%m >RO? c2.parm HROUP =Y !a"a#m$!u%#pc"#par.
BB aGiseaCa va%$ri%e me!ii %a nive% !e m$!u%
SELE;T m$!u%#um# AVHva%) as va%m >RO? c2.parm HROUP =Y m$!u%#um.
BBaGisare m$!u%e ce au va%$ri <*(
SELE;T m$!u%#va% >RO? c2.parm EHERE va%<*(
BBaGiseaCa m$!u%e%e pen"ru care va%$ri%e me!ii sun" <'(
SELE;T m$!u%#AVHva%) as va%m >RO? c2.parm HROUP =Y m$!u% HAVINH AVHva%)<'(
BBaGiseaCa m$!u%e%e pen"ru care va%$ri%e me!ii sun" <'(# iar va%$ri%e c$mp$nen"e sun"
7'2(
SELE;T m$!u%#AVHva%) as va%m >RO? c2.parm EHERE va%7'2( HROUP =Y m$!u% HAVINH
AVHva%)<'(
BBca"e masura"$ri au va%$ri%e in"re 2( si '((I
SELE;T c$un"A) >RO? c2.parm EHERE va%<2( an! va% 7'((
BBaGiseaCa numaru% !e parame"rii i!en"ici pen"ru Giecare m$!u%
SELE;T m$!u%#par#c$un"par) as nr >RO? c2.parm HROUP =Y m$!u%#par.
BB
INSERT INTO c2.parmm$!u%#pc"#par#va%#um#i!+) VALUES 8?98#8P(8#8par'8#'26.9#8V8#5)
BB
se%ec" m$!u%#pc"#par# sumva%) as suma >RO? c2.parm HROUP =Y m$!u%#pc"#par.
BBB
BBinserrare inreJis"rare cu !a"a ca%en!aris"ica
INSERT INTO c2.parm!a"a#m$!u%#pc"#par#va%)
VALUES"$-!a"e86'.'2.2('28#8!!.mm.33338)#8?Y8#8p8#8par68#K*.*).
BBsau
INSERT INTO c2.parm!a"a#m$!u%#pc"#par#va%) VALUES82(''B'2B6'8#8?Y8#8p8#8par68#K*.*).
Desfurarea lucrrii:
1. e ruleaz# e5em%lele din seciunea te&retic#
2. e c&ntinu# cu e5em%lele c&res%unz#t&are din seciunea T6T6
LABORATORUL NR.4
POPULAREA BAZEI DE DATE
Scop:
Utilizarea $unciil&r de inserare7 c&%iere +i +tergere
Consideraii teoretice:
4opularea bazei de date cu &nregistrri noi se poate realiza &n dou moduri:
4rin utilizarea cu"#ntului cheie 04S.1-
4rin utilizarea cu"#ntului cheie CO;
&,<,& Adugarea de /nregistrri ) 04S.1- +
&,<,& ,& Adugarea unei singure /nregistrri
I-
9n acest caz, tipul i ordinea "alorilor introduse trebuie s corespund cu cea din C1.A-. -AB".
I-emplul de mai sus se mai poate scrie:
I-:
9n acest caz, tipul i ordinea "alorilor introduse &n ;"remea()< trebuie s corespund cu cea din
;Q,*7I(()<
(e pot aduga doar anumite c#mpuri din tabel (se adaug obligatoriu c#mpurile din cheia primar
' e-cepie fac c#mpurile de tip autoincrementare )
I-:
&,<,& ,( Adugarea mai multor /nregistrri= e7$licit
&,<,& ,< Adugarea mai multor /nregistrri= dintr,un alt tabel
4resupunem c e-ist un alt tabel denumit "remea@ cu o structur asemntoare cu primul tabel
("reamea)
INSERT INTO vremea -ALUES
(0=acau0& B2(& 92& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea -ALUES
(0=acau0& B2(& 92& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea$ras#"emp-min#"emp-ma+#
precipi"a"ii#!a"a) -ALUES
(0=acau0& B2(& 92& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea$ras#"emp-min#"emp-ma+#
precipi"a"ii#!a"a) -ALUES
(0=acau0& B2(& 92& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& (.2*& 06(.'2.2((FL)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& NULL& 06(.'2.2((FL)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& NULL& 06(.'2.2((FL)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& (.2*& 06(.'2.2((FL)&
(0Iasi0& NULL& 06'.'2.2((F0)&
(0;araca%0& 2344& 056.'2.2((F0)1
INSERT INTO vremea$ras#precipi"a"ii#!a"a)
-ALUES (0=acau0& (.2*& 06(.'2.2((FL)&
(0Iasi0& NULL& 06'.'2.2((F0)&
(0;araca%0& 2344& 056.'2.2((F0)1
I-:
9n cazul &n care cele dou tabele au aceeai ordine i aceleai tipuri de date se poate scrie
I-:
sau
I-:
(inta-a simplificat:
&,<,( Co$ierea datelor /n tabel utiliz>nd comada CO; )im$ortul datelor+
(e pot copia fiiere &ntregi cu date &ntr!un tabel. ,ceste fiiere, de regul, sunt fiiere format
CS3 )comma!separated values + , fiiere te-t a"#nd "alorile separate prin "irgul, iar "alorile ce
conin caracterul ;,< sunt scrise &ntre ghilimele.
I-:
9n acest e-emplu tabelul "remea este populat cu datele din fiierul tem!"remea.cs".
(inta-a simplificat:
unde:
D."0#0-.1 specific un alt delimitator &ntre "alorile din fiierul C(Q (implicit fiind "irgula)
4U"" specific sirul ce reprezint "aloarea J7** (implicit nu se scrie nimic ' adic dup
"irgul urmeaz tot "irgul)
CS3 specific faptul c este "orba de un fiier format C(Q (pot e-ista transferuri i cu
fiiere binare sau alte fiiere te-t ' aceste cazuri nu sunt tratate &n prezentul curs)
8.AD.1 specific dac primul r#nd din cadrul fiierului format C(Q este reprezentat de
numele coloanelor5 c#mpurilor
!UO-. specific caracterele &ntre care sunt puse "alorile ce conin i caracterul separator
(implicit caracterul ?).
0e obicei, aceast comand este utilizat la preluarea iniial a datelor, date e-istente &n alte baze
INSERT INTO vremea$ras#"emp-min#"emp-ma+#
precipi"a"ii#!a"a)
SELECT $ras#"emp-min#"emp-ma+#precipi"a"ii#
!a"a FROM vremea2 '#ERE !a"a ) 82(.''.2((F81
INSERT INTO vremea$ras#"emp-min#"emp-ma+#
precipi"a"ii#!a"a)
SELECT $ras#"emp-min#"emp-ma+#precipi"a"ii#
!a"a FROM vremea2 '#ERE !a"a ) 82(.''.2((F81
INSERT INTO vremea$ras#"emp-min#"emp-ma+
#precipi"a"ii#!a"a)
SELECT A FROM vremea2 '#ERE !a"a ) 82(.''.2((F81
INSERT INTO vremea$ras#"emp-min#"emp-ma+
#precipi"a"ii#!a"a)
SELECT A FROM vremea2 '#ERE !a"a ) 82(.''.2((F81
INSERT INTO vremea SELECT A FROM vremea2
'#ERE !a"a ) 82(.''.2((F81
INSERT INTO vremea SELECT A FROM vremea2
'#ERE !a"a ) 82(.''.2((F81
INSERT INTO "ab%e / ( c$%umn /# ...1 ) 1
2 DEFAULT -ALUES 0 -ALUES
2 e+pressi$n 0 DEFAULT 4 /# ...1 )
/# ...1 0 Muer3 4
INSERT INTO "ab%e / ( c$%umn /# ...1 ) 1
2 DEFAULT -ALUES 0 -ALUES
2 e+pressi$n 0 DEFAULT 4 /# ...1 )
/# ...1 0 Muer3 4
COPY vremea FROM L;NO"es"O"empvremea.csvL 'IT# csv.
COPY vremea FROM L;NO"es"O"empvremea.csvL 'IT# csv.
COPY "ab%ename / c$%umn /# ...1 ) 1 FROM 0Gi%ename0
// 'IT# 1
/ DELIMITER / AS 1 0!e%imi"er0 1
/ NULL / AS 1 0nu%% s"rinJ0 1
/ CS- / #EADER 1 / "UOTE / AS 1 LMu$"eL 1
COPY "ab%ename / c$%umn /# ...1 ) 1 FROM 0Gi%ename0
// 'IT# 1
/ DELIMITER / AS 1 0!e%imi"er0 1
/ NULL / AS 1 0nu%% s"rinJ0 1
/ CS- / #EADER 1 / "UOTE / AS 1 LMu$"eL 1
de date sau &n fiiere de tip @"S 5 te7t. Comanda CO; adaug noile date la cele "echi. 0e
asemenea, &n cursurile urmtoare se "a detalia utilizarea comenzii CO; pentru e-portul datelor &n
format CS3.
&,<,< Atergerea /nregistrrilor dintr,un tabel
I-:
terge toate &nregistrrile din tabelul "remea.
I-:
terge toate &nregistrrile anterioare datei specificate
(inta-a simplificat:
unde
O4"; este utilizat &n cazul tabelelor ierarhizate pentru a nu terge i &nregistrrile din
;tabelele copil< ce depind de tabelul respecti"
US04G specific alte tabele utilizate &n condiia ?@4/4
I-: presupunem e-istena unui nou tabel munici!ii
I-
:
i tergem toate &nregistrrile din "remea care apar i &n tabelul munici!ii
I-:
&,<,B Actualizarea datelor dintr,un tabel
Comanda UDA-. actualizeaz "alorile din tabelul dat, pentru &nregistrrile rezultate &n urma
aplicrii condiiei din cadrul ?@4/4, cu "alorile i pentru c#mpurile e-plicitate &n seciunea S4%
I-:
(unt modificate doar "alorile c#mpurilor date de S4% pentru &nregistrrile date de ?@4/4
(inta-a simplificat:
DELETE FROM vremea .
DELETE FROM vremea .
DELETE FROM vremea '#ERE !a"a 7 82(.''.2((F81
DELETE FROM vremea '#ERE !a"a 7 82(.''.2((F81
DELETE FROM / ONLY 1 "ab%e / / AS 1 a%ias 1
/ USIN, usinJ%is" 1/ '#ERE c$n!i"i$n 1
DELETE FROM / ONLY 1 "ab%e / / AS 1 a%ias 1
/ USIN, usinJ%is" 1/ '#ERE c$n!i"i$n 1
CREATE TABLE municipii
!enumire-$ras c&arac"er var3inJ5() NOT NULL#
p$pu%a"ie in"eJer# supraGa"a numeric)
CREATE TABLE municipii
!enumire-$ras c&arac"er var3inJ5() NOT NULL#
p$pu%a"ie in"eJer# supraGa"a numeric)
DELETE FROM vremea USIN, municipii
'#ERE vremea3$rasDmunicipii3!enumire-$ras
DELETE FROM vremea USIN, municipii
'#ERE vremea3$rasDmunicipii3!enumire-$ras
UPDATE vremea SET "emp-min * "emp-min7'#
"emp-ma+ * "emp-minP2(# precipi"a"ii * (
'#ERE $ras * 8Iasi8) AND !a"a ) 8'.(F.2((F8)
AND !a"a $ 86'.(5.2((F8).
UPDATE vremea SET "emp-min * "emp-min7'#
"emp-ma+ * "emp-minP2(# precipi"a"ii * (
'#ERE $ras * 8Iasi8) AND !a"a ) 8'.(F.2((F8)
AND !a"a $ 86'.(5.2((F8).
UPDATE / ONLY 1 "ab%e / / AS 1 a%ias 1
SET 2 c$%umn D 2 e+pressi$n 0 DEFAULT 4 4 /# ...1
/ FROM Gr$m%is" 1 / '#ERE c$n!i"i$n 1
UPDATE / ONLY 1 "ab%e / / AS 1 a%ias 1
SET 2 c$%umn D 2 e+pressi$n 0 DEFAULT 4 4 /# ...1
/ FROM Gr$m%is" 1 / '#ERE c$n!i"i$n 1
unde:
O4"; este utilizat &n cazul tabelelor ierarhizate pentru a nu modifica i &nregistrrile din
;tabelele copil< ce depind de tabelul respecti"
21O# specific alte tabele utilizate &n condiia ?@4/4
D4>A67% A preia "alorile implicite sau +677 dac nu sunt specificate
I-:
I-emplu:
BBmai mu%"e "abe%eN
BBin "abe% cu in"rari%e
BBs" "abe% cu s"$curi%e
BBbp "abe% cu reCervari%e b$r!er$u !e preparare) BBB "abe%u% se "ransG$rma in b%
BBb% "abe% cu %ivrari%e
BB"r "abe% cu "ransG. in"re maJaCii
BB!iG "abe% cu !iGeren"e%e aparu"e
BBn$m "abe% n$menc%a"$r
;REATE TA=LE c6.ini! seria%# sn varc&ar2()#c$! varc&ar2()#GurniC$r varc&ar*()#
c!a varc&ar'()# !a"a !a"e :E>AULT ;URRENT-:ATE#M"3 numeric# um varc&ar'()#
!ep varc&ar'()#amp varc&ar'()#;ONSTRAINT ,-in PRI?ARY @EYi!)).
;REATE TA=LE c6.s"!ep varc&ar'()#amp varc&ar'()#i! in"#M"3GiC numeric#M"3!isp numeric#
;ONSTRAINT ,-s" PRI?ARY @EY!ep#amp#i!)).
crea"e "ab%e c6.bpnrbp in"#!ep varc&ar'()#amp varc&ar'()#i! in"#M"3 numeric#
!a"a !a"e :E>AULT ;URRENT-:ATE#!es" varc&ar*()#
;ONSTRAINT ,-bp PRI?ARY @EYnrbp#!ep#amp#i!)).
;REATE "ab%e c6.b%nrb% in"#!ep varc&ar'()#amp varc&ar'()#i! in"#M"3 numeric#
!a"a !a"e :E>AULT ;URRENT-:ATE#!es" varc&ar*()#
;ONSTRAINT ,-b% PRI?ARY @EYnrb%#!ep#amp#i!)).
crea"e "ab%e c6."r!a"a !a"e :E>AULT ;URRENT-:ATE#!epsrs varc&ar'()#ampsrs varc&ar'()#
!ep!es" varc&ar'()#amp!es" varc&ar'()#i! in"# M"3 numeric#i!+ seria%#
;ONSTRAINT ,-"r PRI?ARY @EYi!+)).
crea"e "ab%e c6.!iG!a"a !a"e :E>AULT ;URRENT-:ATE# !ep varc&ar'()#amp varc&ar'()#
i! in"#M"3 numeric#i!+ seria%# ;ONSTRAINT ,-!iG PRI?ARY @EYi!+)).
crea"e "ab%e c6.n$mc$! varc&ar2()#!escriere varc&ar'(()#reG-"e&nica varc&ar*()#
reG-c$mercia%a varc&ar*()#;ONSTRAINT ,-n$m PRI?ARY @EYc$!)).
INSERT INTO c6.insn#c$!#GurniC$r#c!a#M"3#um#!ep#amp)
VALUES8s'8#8c$!'8#8GurniC$r'8#NULL#'#8buc8#8A'8#8A'('8)#
8s'28#8c$!'98#8GurniC$r'A8#NULL#'#8buc8#8A'8#8A'('8)#
8s'68#8c$!'8#8GurniC$r'8#NULL#'#8buc8#8A'8#8A'('8)#
NULL#8c$!('8#8GurniC$r'8#NULL#*#8buc8#8A'8#8A'(28)#
NULL#8c$!(28#8GurniC$r'8#NULL#'(#8buc8#8A'8#8A'('8)#
NULL#8c$!'8#8GurniC$r'8#NULL#'#8buc8#8A'8#8A'('8).
se%ec" A Gr$m c6.in
ALTER TA=LE c6.in A:: ;OLU?N br in".
up!a"e c6.in se" brD' Q&ere !a"aD82(''B(6B''8.
Desfurarea lucrrii:
1. e ruleaz# e5em%lul din seciunea te&retic#
2. e c&ntinu# cu e5em%lele c&res%unz#t&are din seciunea T6T6
UPDATE vremea SET "emp-min D "emp-minB'#
"emp-ma+ D "emp-minP2(# precipi"a"ii D DEFAULT
FROM municipii
'#EREvremea.$ras D municipii.!enumire-$ras )
AND!a"a<8'.(F.2((F8)AND!a"a786'.(5.2((F8).
UPDATE vremea SET "emp-min D "emp-minB'#
"emp-ma+ D "emp-minP2(# precipi"a"ii D DEFAULT
FROM municipii
'#EREvremea.$ras D municipii.!enumire-$ras )
AND!a"a<8'.(F.2((F8)AND!a"a786'.(5.2((F8).
LABORATORUL NR.5
COMBINAREA INTEROGRILOR
Scop:
1. Realizarea de &%eraii de selecie cu mai multe ta(ele
2. Realizarea de &%eraii de ti%ul UP"AT6 ,n care sunt im%licate mai multe ta(ele.
3. Realizarea de &%eraii de ti%ul "6L6T6 ,n care sunt im%licate mai multe ta(ele.
). O%eraii de ti% UN8ON
*. O%eraii de ti% 69:6PT
Consideraii teoretice
a+ Uniune
2mplicit (D0S%0+'%), prin uniunea celor dou interogri, &nregistrrile multiple, identice, "or aprea
o singur dat. 4rin utilizarea comenzii A77 acestea nu "or mai fi eliminate.
I-:
4utem a"ea :
0enumirea c#mpului rezultat "a fi cea din prima interogare
b+ 0ntersecie
4rin utilizarea comenzii 04-.1S.C- "or fi selectate doar &nregistrrile comune din cadrul
interogrilor
I-:
c+ Diferen
in"er$JareR' UNION /ALL1 in"er$JareR2
in"er$JareR' UNION /ALL1 in"er$JareR2
SELECT $ras FROM vremea
UNION
SELECT !enumire-$ras FROM municipii
SELECT $ras FROM vremea
UNION
SELECT !enumire-$ras FROM municipii
in"er$JareR' UNION in"er$JareR2 ... UNION in"er$JareRn
in"er$JareR' UNION in"er$JareR2 ... UNION in"er$JareRn
in"er$JareR' INTERSECT /ALL1 in"er$JareR2
in"er$JareR' INTERSECT /ALL1 in"er$JareR2
SELECT $ras FROM vremea INTERSECT
SELECT !enumire-$ras FROM municipii
SELECT $ras FROM vremea INTERSECT
SELECT !enumire-$ras FROM municipii
in"er$JareR' E%CEPT /ALL1 in"er$JareR2
in"er$JareR' E%CEPT /ALL1 in"er$JareR2
4rin utilizarea comenzii .@C.- "or fi selectate doar &nregistrrile care se regsesc &n rezultatul
primei interogri dar care nu se regsec i &n rezultatul celei de a doua interogri.
I-:
9n toate cele trei cazuri c#mpurile din cadrul seleciilor trebuie s fie de acelasi timp, altfel fiind
necesar con"ertirea acestora la tipul respecti" prin utilizarea operatorului 'AS%.
&,C O$eratorul CAS-
Iste utilizat pentru con"ertirea tipului datelor
I-:
I-:
I-:
I-:
(inta-a simplificat:
Desfurarea lucrrii:
1. e ruleaz# e5em%lele din seciunea te&retic#
2. e c&ntinu# cu e5em%lele c&res%unz#t&are din seciunea T6T6
SELECT $ras FROM vremea
E%CEPT
SELECT !enumire-$ras FROM municipii
SELECT $ras FROM vremea
E%CEPT
SELECT !enumire-$ras FROM municipii
SELECT 6.2' AS Sn9:ericS
UNION SELECT '.
SELECT 6.2' AS Sn9:ericS
UNION SELECT '.
SELECT ' AS Sn9:ericS
UNION
SELECT CAST86.'98 AS n9:eric).
SELECT ' AS Sn9:ericS
UNION
SELECT CAST86.'98 AS n9:eric).
SELECT 8=acau8 AS Svarchar2()S
UNION
SELECT CAST86.'98 AS varchar2()).
SELECT 8=acau8 AS Svarchar2()S
UNION
SELECT CAST86.'98 AS varchar2()).
SELECT $ras# ca;t"emp-min a; varchar'())
AS "emp-min-c& FROM vremea
SELECT $ras# ca;t"emp-min a; varchar'())
AS "emp-min-c& FROM vremea
CAST e+pressi$n AS "3pe )
CAST e+pressi$n AS "3pe )
LABORATORUL NR.6
CONDIII DE SELECIE A DATELOR
Scop:
1. Utilizarea c&ndiiil&r de selecie ,n c&n$&rmitate cu ti%ul datel&r
2. Utilizarea $iltrel&r %ariale
3. Utilizarea seleciil&r ,n di'erse cazuri
Consideraii teoretice:
Iste utilizat pentru con"ertirea tipului datelor
I-:
I-:
I-:
I-:
(inta-a simplificat:
Desfurarea lucrrii:
1. e ruleaz# e5em%lele din seciunea te&retic#
2. e c&ntinu# cu e5em%lele c&res%unz#t&are din seciunea T6T6
SELECT 6.2' AS Sn9:ericS
UNION SELECT '.
SELECT 6.2' AS Sn9:ericS
UNION SELECT '.
SELECT ' AS Sn9:ericS
UNION
SELECT CAST86.'98 AS n9:eric).
SELECT ' AS Sn9:ericS
UNION
SELECT CAST86.'98 AS n9:eric).
SELECT 8=acau8 AS Svarchar2()S
UNION
SELECT CAST86.'98 AS varchar2()).
SELECT 8=acau8 AS Svarchar2()S
UNION
SELECT CAST86.'98 AS varchar2()).
SELECT $ras# ca;t"emp-min a; varchar'())
AS "emp-min-c& FROM vremea
SELECT $ras# ca;t"emp-min a; varchar'())
AS "emp-min-c& FROM vremea
CAST e+pressi$n AS "3pe )
CAST e+pressi$n AS "3pe )
LABORATORUL NR.7
EXPRESII CONDIIONALE
Scop: Realizarea e5%resiil&r c&ndii&nale ,n cadrul inter&g#ril&r
Consideraii teoretice:
(inta-a simplificat:
I-:
Nezultatul e-presiei este pus &n noul c#mp e"aluare.
BB TRANTA;TIONS SUL BB
:ROP TA=LE c'(."'.
;REATE TA=LE c'(."'a seria% PRI?ARY @EY# b in").
INSERT INTO c'(."'b) VALUES *)#F)#5).
=EHIN.
INSERT INTO c'(."'b) VALUES V)#'()#'').
BBSAVEPOINT abc.
BBse simu%eaCa $ er$are
INSERT INTO c'(."'b) VALUES '2)#'6)#a'9).
BBROLL=A;@ TO abc.
INSERT INTO c'(."'b) VALUES '*)#'*)#'F).
UP:ATE c'(."' SET bDbP'(((.
;O??IT.
BBse%ec" A >RO? c'(."'.
BB a"en"ie %a =EHIN BB nu se va se%ec"a in b%$cu% !e sus# p"r. e+ecu"ie
BB raman prime%e "rei inreJ nem$!iGica"e W
Desfurarea lucrrii:
1. e ruleaz# e5em%lele din seciunea te&retic#
2. e c&ntinu# cu e5em%lele c&res%unz#t&are din seciunea T6T6
CASE '#EN c$n!i"i$n T#EN resu%"
/'#EN ...1
/ELSE resu%"1
END
CASE '#EN c$n!i"i$n T#EN resu%"
/'#EN ...1
/ELSE resu%"1
END
SELECT "emp-minP"emp-ma+)O2.( a; "emp-me!ie#
CASE '#EN"emp-minP"emp-ma+)O2.( )7D( T#EN 8HER8
'#EN"emp-minP"emp-ma+)O2.( )<()AND
"emp-minP"emp-ma+)O2.( )7'*) T#EN 8>RIH8
'#EN "emp-minP"emp-ma+)O2.( )<6( T#EN 8;AL:8
ELSE 8NOR?AL8
END AS eva%uare
FROM vremea
SELECT "emp-minP"emp-ma+)O2.( a; "emp-me!ie#
CASE '#EN"emp-minP"emp-ma+)O2.( )7D( T#EN 8HER8
'#EN"emp-minP"emp-ma+)O2.( )<()AND
"emp-minP"emp-ma+)O2.( )7'*) T#EN 8>RIH8
'#EN "emp-minP"emp-ma+)O2.( )<6( T#EN 8;AL:8
ELSE 8NOR?AL8
END AS eva%uare
FROM vremea
LABORATORUL NR.8
TIPURI DE ASOCIERI NTRE NREGISTRRILE UNOR TABELE
Scop:
nelegerea %&si(ilit#il&r de as&ciere ,ntre ,nregistr#ri
Consideraii teoretice:
9ntr!o baz de date relaional tabelele sunt corelate, pentru ca datele memorate &n tabele
diferite s poat fi asociate corect atunci c#nd din baza de date se solicit anumite informaii. (e
pot realiza asocieri datele din tabele dup criterii logice i de &nrudire a datelor. ,socierile sunt
posibile &n faza de definire a structurii tabelelor. C#mpurile comune prin care se face corelarea sunt
date de cheia $rimar pentru un tabel i respecti" chei e7terne pentru tabelele asociate.
6rice tabel cuprine unul sau mai multe c#mpuri, care intr &n componena unei c*ei primare,
utilizat pentru diferenierea unei &nregistrri de celelalte. ,socierea a dou tabele (tabel !rinte i
tabel co!il) se face printr!un c#mp special cu o trimitere la cheia primar a tabelului subordonat
(tabelul copil).
6 baz de date poate fi format din mai multe tabele a"#nd diferite legturi &ntre acestea.
Tipurile de legturi dintre dou tabele pot fi:
asocierea( legtura ) de ti! unu la unu )&:&+ ' unei &nregistrri dintr!un tabel &i
corespunde o singur &nregistrare &n cealalt tabel%
asocierea( legtura ) de ti! unu la mai muli (&:#) ' unei &nregistrri dintr!un tabel &i
corespund mai multe &nregistrri &n cealalt tabel%
asocierea( legtura ) de ti! muli la muli (#:4) ' mai multor &nregistrri dintr!un tabel &i
corespund mai multe &nregistrri &n cealalt tabel.
Asocierea( legtura ) de ti! unu la unu )&:&+
9nregistrrile din dou tabele se afl &n asocierea unu la unu dac unei &nregistrri dintr!un
tabel &i corespunde (sau nu) o singur &nregistrare din cellalt tabel. *egatura dintre cele doua
tabele se face pe baza cheilor primare.
,cest tip de asociere este utilizat mai rar. I-ist, totui, cazuri &n care este necesar i
util stabilirea unei astfel de relaii.
I-:
Asocierea( legtura ) de ti! unu la mai muli (&:4)
0ou tabele , i . se afl &n asociere F:J dac unei &nregistrri din tabelul , &i corespund mai
multe &nregistrri &n tabelul .. Cheia primara din tabelul ;parinte<(,) se adaug &n tabelul ;copil<(.)
sub forma de cheie e-tern.
I-:
VREMEA
oras
temp_min
temp_max
precipitatii
MUNICIPII
denumre!ora
s
populatie
supraata
!"!
Asocierea( legtura ) de ti! muli la muli (#:4) ' mai multor &nregistrri dintr!un tabel le
corespund mai multe &nregistrri &n cealalt tabel. 9n "ederea implementrii practice se adaug un
tabel suplimentar care "a contine cheile primare ale tabelelor initiale si campuri referitoare la
asocierea dintre tabelele ;parinti<. Cheia primar din tabela intermediar "a fi o cheie compusa.
'rearea cheilor !rimare i a cheilor e8terne
Cheia $rimar din tabel impune unicitatea "alorilor c#mpurilor din cadrul cheii primare pentru
fiecare &nregistrare. (pecificarea cheii primare se face cu modificatorul 10#A1; 9.;. 'heia
strin sau e8tern se declar prin modificatorul 2O1.0G4 9.;.
I-:
sau
#U$ET
nume
supraata
populatie
LOCALITATE
denumre
supraata
populatie
po%itie_&eo&r'
!"N
AUTORI
nume
""#u
ed"ura
an_aparitie
(I(LIOTECA
cota
""#u
autor1
ed"ura
an_aparitie
M"N
CREATE TABLE municipii
!enumire-$ras varchar5() PRIMARY KEY#
supraGa"a n9:eric#
p$pu%a"ie int
).
CREATE TABLE municipii
!enumire-$ras varchar5() PRIMARY KEY#
supraGa"a n9:eric#
p$pu%a"ie int
).
CREATE TABLE vremea2
$ras varchar5() PRIMARY
KEY REFERENCES municipii!enumire-$ras)#
"emp-min int#"emp-ma+ int#
precipi"a"ii rea#!a"a !ate).
CREATE TABLE vremea2
$ras varchar5() PRIMARY
KEY REFERENCES municipii!enumire-$ras)#
"emp-min int#"emp-ma+ int#
precipi"a"ii rea#!a"a !ate).
CREATE TABLE vremea
$ras varchar5() REFERENCES municipii!enumire-$ras)#
"emp-min int#
"emp-ma+ int#
precipi"a"ii rea#
!a"a !ate
).
CREATE TABLE vremea
$ras varchar5() REFERENCES municipii!enumire-$ras)#
"emp-min int#
"emp-ma+ int#
precipi"a"ii rea#
!a"a !ate
).
,t#t pentru 4N2,NR SIR c#t i pentru A6NI2/J SIR putem a"ea unul sau mai multe c#mpuri,
separate prin "irgul.
Asigurarea integritii refereniale
7na din problemele importante ale unei baze de date este asigurarea consistenei i
corelrii datelor. 4entru aceasta putem impune respectarea unei restricii la adugarea sau
eliminarea &nregistrrilor &n tabelele corelate. ,plicarea acestor restricii ne d posibilitatea s
asigurm o proprietate important a bazelor de date relaionale numit integritate referenial.
,ceste restricii se refer la tergerea datelor, la inserareaBadugarea datelor sau
modificarea lor.
6peraiile de tergere i inserare au &n clauza LMINI i c#mpurile ce constituie cheile primare.
0e asemenea operaia de adugare impune specificarea obligatorie a c#mpurilor din cheia
primar, acestea fiind diferite de J7** i fiind unice &n cadrul tabelului.
I-emplu:
INSERT INTO c9.in SELE;T A >RO? c6.in
INSERT INTO c9.s" SELE;T A >RO? c6.s"
se%ec" A Gr$m c9.in
se%ec" A Gr$m c9.s"
se%ec" A Gr$m reCervari
se%ec" A Gr$m c9.bp
se%ec" A Gr$m se%ec"ie
se%ec" A Gr$m c9.b%
se%ec" A Gr$m c9."r
BBup!a"e se%ec"ie se" nrbpD'(' Q&ere nrbpD'
BB aGiseaCa can"i"a"i reCerva"e
se%ec" A Gr$m c9.s" Q&ere M"3GiC7<M"3!isp
BBa!auJarea b$r!er$u%ui !e recep"ie curen" in s"$c
INSERT INTO c9.s"!ep#amp#i!#M"3GiC#M"3!isp)
SELE;T !ep#amp#i!#M"3#M"3 >RO? c9.in EHERE brD'.
BB reCervarea can"i"a"i%$r si crearea %inii%$r !in bp
BBpp . ca reCervam i! 2#6 si !in * reCervam 6 buc
BB ceea ce reCervam punem in"rBun "abe% "emp$rar p"r.se%ec"ie)
;REATE TE?PORARY TA=LE reCervari!ep varc&ar'()#
amp varc&ar'()#i! in"eJer# M"3 numeric).
INSERT INTO reCervari VALUES8A'8#8A'('8#2#')#8A'8#8A'('8#6#')#8A'8#8A'('8#*#6).
BB caCu% a) !in s"$c se sca!e "$a"a %inia D< %inia va Gi s"earsa
BB caCu% b) !in s"$c# !e pe $ %inie se reCerva !$ar $ par"e !in can"i"a"e
UP:ATE c9.s" SET M"3!ispDM"3!ispBM"3 >RO? reCervari
EHERE s".i!DreCervari.i! an! s".!epDreCervari.!ep an! s".ampDreCervari.amp
CREATE TABLE vremea2