Você está na página 1de 58

PROBLEME ATESTAT 2015 .hr.

1. (Bergheva Evelina si Ulian Anca)


ENUNT
Funcia prima determin i returneaz prima cifr a unui numr natural n, cu cel mult 9
cifre, primit ca parametru. Se citesc de la tastatur numere naturale nenule, cu cel pu in
dou cifre fiecare, pn cnd se citete unul care are prima cifr egal cu ultima.
a) Scriei funcia prima definit mai sus.
b) Folosind apeluri utile ale subprogramului prima determinai i afia i pe ec bran cte
perechi de forma (x, y) de numere, citite consecutiv, au ultima cifr a lui x egal cu prima
cifr a lui y.
Exemplu: Dac se citesc, n aceast ordine, numerele:
1422 237 1447 721 1271
atunci se va afia:
3
REZOLVARE
#include<iostream.h>
#include<fstream.h> int prima(long n)
{
while (n>9)
n=n/10;
return n;
}
int main()
{
int nr=0; long x,y;
cin>>y;
while (prima(y) !=y%10)
{
x=y%10;
cin>>y;
if (prima(y)==x) nr++;
}
cout<<nr;
return 0;
}

2. (Brgovan Andrei si Alexandru Macovei)


Se citesc din fiser text numar.in n numere naturale de ce mult 9 cifre. Sa se realizeze un program care determina afiseaza
pe prima linie a fisierului text numar.out :
a. Numarul format cu prima cifra a fiecarui numar citit.
b. Sa se afiseze pe a doua linie a fisierului daca numarul astfel format este palindorm, astfel se va afisa
mesajulnumarul nu este palindrom
In cadrul programului, se vor defini doua subprograme:
-functia cifra, care returneaza prima cifra a valorii transmise prin intermediulunui parametru valoare.
-functia verifica daca valoarea transmisa prin intermediul parametrului este palindrom.
ex:
numar.in
7
12 34 567 78 988 3333 189
numar.out

1357931
REZOLVARE:
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("numar.in");
ofstream g("numar.out");
int invers;
int cifra(int nfp)
{
while(nfp!=0)
{
invers=invers*10+nfp%10;
nfp=nfp/10;
}
}
int verificare(int nfp)
{
if(nfp==invers)
g<<endl<<"palindrom";
else
{
g<<endl<<"nu este palindrom";
}
}
int main()
{
int n,pc,nfp=0,s, a[100];
f>>n;
for(int i=1; i<=n; i++)
f>>a[i];
for(int i=1; i<=n; i++)
{
s=a[i];
while(s>0)
{
pc=s%10;
s=s/10;
}
nfp=nfp*10+pc;
}
g<<nfp;
cifra(nfp);
verificare(nfp);
}

3.(Buliga Ilinca si Nistoroaie Ioana)


Se introduc de la tastatura numere intregi pana cand se introduce un numar de doua ori unul dupa altul. Sa se afiseze cate
dintre acestea sunt patrate perfecte.Ultimul numar introdus in sir(cel egal cu cel precedent)nu va fi numarat.
Exemplu: Daca numerele introduse sunt: 169,144,12,22,25,6,16,16 se va afisa numarul 4

#include <iostream>
#include <math.h>

using namespace std;


int pp(int n)
{
if (sqrt(double(n)) * sqrt(double(n)) == n)
return 1;
return 0;
}
int main ()
{
int x, nr = 0, y, p = 1;
cin >> x;
if(pp(x))
nr++;
while (p != 0)
{
cin >> y;
if (x == y)
p = 0;
else
if (pp(y))
{
nr++;
x = y;
}
}
cout << nr << " ";
return 0;
}
4. (Cojocaru Alexandru si Ghenghea Mihai)

Din fisierul text atestat.in se citesc trei numere naturale x, y, k; (1<x<y<2000000, k<1000).
din intervalul [x,y], pe primul rand al fisierului text atestat.out, separate prin cate un spatiu. Daca nu exista k numere prime
in intervalul [x,y] se vor afisa toate numerele prime gasite, iar pe al doilea rand ai fisierului atestat.out se va afisa mesajul
s-au gasit mai putine numere prime: urmat de numarul acestora
Exemplu: Daca fisierul atestat.in are forma:
3 12 5
atunci fisierul atestat.out va contine:
3 5 7 11
s-au gasit mai putine numere prime: 4

Rezolvare:
#include<fstream>
using namespace std;
int main()
{
int k, d, i, prim, l=0;
long x,y;
ifstream f("atestat.in");
ofstream g("atestat.out");

f>>x>>y>>k;
for(i=x;i<=y;i++)
{
prim=0;
for(d=2;d<=i/2;d++)
{
if(i%d==0)
prim=1;
}
if(prim==0)
{
g<<i<<" ";
l++;
}
}
if(l!=k)
g<<endl<<"s-au gasit mai putine numere prime: "<<l;
}
5.(Solcan Sorin si Danilov Dumitru)
Dou numere naturale cu proprietatea c suma divizorilor fiecrui numr (neconsidernd n acest caz numrul nsui ca
divizor) este egal cu cellalt numr plus 1, se numesc numere quasi-amiabile sau numere logodite.
Pe fiecare linie a fiierului text numere.txt se gsesc cte 2 numere naturale. tiind c 2
numere situate pe o linie a fiierului formeaz o pereche, s se afieze la ecran toate
perechile de numere quasi-amiabile din fiier.
Exemplu: Dac fiierul numere.txt conine:
25 18
48 75
195 140
260 310
atunci la ecran se vor afia perechile:
48 75
195 140
#include<iostream>
#include<fstream>
using namespace std;
int s=0;
int verificare(int a)
{
for(int i=1; i<a; i++)
{
if(a%i==0)
s=s+i;
}
}
int main()
{
int a=1, b, p=0;
ifstream f("numere.txt");
while(a!=p)
{
p=a;
f>>a>>b;
s=0;
verificare(a);
if(s==b+1)
cout<<a<<" "<<b<<endl;

}
}

6.(Nutu Diana si Ilie Gabriel)


(Problema 6)
Stiind ca se citeste de la tastatura un numar natural n (n>=5), sa se afiseze in fisierul numere.out toate numerele naturale
mai mici sau egale cu n care au prop. de numar puternic. Numerele vor fi separate prin cate un spatiu.
Un numar puternic este un numar natural cu proprietatea ca, daca este divizibil cu numarul prim p, atunci este divizibil si
cu p*p, deci toti factorii sai primi sunt cel mai putin la puterea a doua.
Spre exemplu: Daca se citeste numarul 200, fisierul numere.out va contine numerele:
4 8 9 16 25 27 32 36 49 64 72 81 100 108 121 125 128 144 169 196 200.

Rezolvare :
#include<iostream>
#include<fstream>
using namespace std;
ofstream g(numere.out);
int prim (int n)
{
int ok=1;
for(int i=2;i<n;i++)
if (n%i==0)
ok=0;
return ok;
}
int verific(int n)
{
int ok=0;
for(int p=2;p<n;p++)
if(prim(p))
if(n%p==0)
if(n%(p*p)==0)
ok=1;
else
ok=0;
return ok;
}
int main()
{
int n;
cout<<Dati n:;
cin>>n;
for(int i=4;i<=n;i++)
if(verific(i))
g<<i<< ;
}
(Problema 18)

Se citeste din fisierul text linie.in un tablou bidimensional a cu nxn(n <50) elemente numere naturale de cel mult 9 cifre.
Sa se realizeze un program care afiseaza in fisierul text linie.out:
1. Linia cu cele mai multe elemente prime.
2. Pe a doua linie se vor afisa elementele diagonalei principale ale tabloului.
Elemplu :
linie.in
3
235
462
793
Rezolvare :
#include<iostream.h>
#include<fstream>
using namespace std;+
int prim(int n)
{
int i, ok=1;
for (i=2; i<=n; i++)
if (n%i==0)
ok=0;
return ok;
}
int main()
{
int n, a[50][50], i, j, kv=0, is=0, nr=0;
ifstream f(linie.txt);
ofstream g(out.txt);
f>>n;
for(i=1; i<=n; i++)
for(j=1;j<=n;j++)
{
f>>a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
if(prim(a[i][i]))
nr++;
if(kv<nr)
{
kv=nr;
is=i;
}
nr=0;
}
g<<Linia este<<is;
g<<endl;
for(i=1;i<=n;i++)
g<<a[i][i]<< ;
}
7.(Vlaescu Cezar si Atat)

linie.out
1
263

Sa se creeze fisierul gemene.txt care sa contina primele n perechi de numere prime gemene stiind ca n este un numar
natural care se citeste de la tastatura.Se numesc prime gemene 2 numere naturale prime de forma p,p+2.
Exemplu:Daca se citeste numarul 3,fisierul numere.out va contine numerele
35
57
11 13
Rezolvare
#include<fstream>
using namespace std.
unsigned prim(unsigned n);
{
usingned ok,i,d;
ok=1;
for(i=2;i<=n/2 && ok;i++)
if(n%i==0)
return ok;
}
int main()
{
usingned n,nr,p;
ofstream f(gemene.txt);
cin>>n;
nr=0;
p=3;
while(nr<n)
if(prim(p))
if(prim(p+2))
{
f<<p<< <<p+2<<endl;
nr++;
p=p+2;
}
else
p=p+4;
else
p=p+2;
f.close();
}

8?????
9.(Miftode Ana si Lazareanu Sabina Stefana):
ENUNT:
Un numr n se numete rotund dac are un numr egal de cifre de 0 i 1 n reprezentarea sa matematic n baza 2. De
exemplu, numrul 184 este un numr rotund deoarece reprezentat n baza 2 conine 4 cifre de 0 i 4 cifre de 1. Numrul
120 nu este rotund deoarece reprezentat n baza 2 conine 3 cifre de 0 i 4 cifre de 1.
a) Scriei definiia complet a unui subprogram baza, cu trei parametri, care primete prin
intermediul parametrului n un numr natural nenul de cel mult 9 cifre; subprogramul
returneaz prin intermediul celui de-al doilea parametru, x, numrul de cifre de 0 din
reprezentarea n baza2 a numrului n, iar prin intermediul celui de-al treilea parametru, y,
numrul de cifre de 1 din reprezentarea n baza 2 a numrului n.
Exemplu: pentru n=28 subprogramul va returna prin parametrul x valoarea2, iar prin parametrul y
valoarea3.
b) Fiierul text atestat.in conine, pe o singur linie, cel mult 100 de numere naturale nenule, de cel puin dou cifre i cel
mult 9 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei programul C++ care creeaz fiierul text atestat.out

i scrie n el, pe prima linie, separate prin cte un spaiu, toate numerele din fiierul text atestat.in care sunt rotunde. Dac
nu exist niciun numr rotund, atunci n fiierul text atestat.out se va scrie Nu exist!.
REZOLVARE:
a)#include <iostream>
using namespace std;
int rotund(int n,int x,int y)
{
x=0;
y=0;
while(n!=0)
{
if(n%2==0)
{
x++;
n=n/2;
}
else
{
y++;
n=n/2;
}
}
cout<<"In reprezentarea sa in baza 2, numarul are "<<x<<" cifre de 0 si "<<y<<" cifre de 1."<<endl;
if(x==y)
cout<<"Numarul este rotund.";
else
cout<<"Numarul nu este rotund.";
}
int main()
{
int n,x,y;
cout<<"n=";
cin>>n;
rotund(n,x,y);
return 0;
}

b)#include <iostream>
#include<fstream>
using namespace std;
ifstream f("atestat.txt");
ofstream g("atestat.out");
int rotund(int n,int x,int y)
{
int c, ok=0, m;
x=0; y=0;
m=n;
while(m!=0)
{
c=m%2;
if(c==0)
x++;
else
y++;
m=m/2;
}
if(x==y)

{
g<<n<<" ";
ok=1;
}
if(ok==0)
g<<"Nu exista!";
}
int main()
{
int x,y, n;
while(f>>n)
{
rotund(n,x,y);
}
f.close();
g.close();
return 0;
}

10.(Rosca Claudia Maria si Obreja Marian Vladut)


Cifra de control a unui numar n se obtine efectuand suma cifrelor numarului, apoi suma cifrelor sumei obtinute si asa mai
departe pana cand se obtine un numar format dintr-o singura cifra.
Scrieti definitia completa a unui subprogram cifra, cu un parametru, care primeste prin intermediul parametrului a , un
numar natural nenul de cel mult 9 cifre; subprogramul returneaza cifra de control a numarului .
a.

#include<iostream>
#include<fstream>
int main()

{
ifstream f("date.in");
ofstream g("date.out");
int a,s[100],i;
while(f>>a)
s[1]=a;
for(i=1;i<=a;i++)
while(s[i]!=0)
{
s[i+1]=s[i]+s[i]%10;
s[i]=s[i]/10;
}
g<<s[i];
f.close();
g.close();
}

11.Pascovici Veronica-Mihaela si Varvaroi Maria


Enunt :
a).Scrieti definitia completa a unui subprogram cmmdc, cu doi parametri, care primeste prin intermediul parametrilor x si
y doua numere naturale de cel mult patru cifre fiecare. Subprogramul returneaza cel mai mare divizor comun al celor doua
numere x si y.

b).Fisierul text fractii.in contine, pe prima linie un numar natural n(n<=100), iar pe urmatoarele n linii,n fractii de forma
a/b,unde a si b sunt numaratorul,respectiv numitorul,numere naturale nenule de cel mult patru cifre fiecare,separate prin
cate un spatiu. Scrieti programul c++ care simplifica fractiile din fisierul de intrare si care creeaza fisierul text fractii.out si
scrie in el, pe cate o linie, numaratorul si numitorul fractie obtinute dupa simplificare,separate prin cate un spatiu, precum
si numarul fractiilor ireductibile.
Exemplu:
Daca fisierul fractii.in are forma:
4
26 12
19 4
20 15
17 17
atunci fisierul fractii.out va avea forma:
13 6
19 4
43
11
1
Rezolvare:
a).
int cmmdc(int a,int b)
{
while(a!=b)
{
if(a>b)
{
a=a-b;
}
else
{
b=b-a;
}
}
return a;
}
b).#include<fstream.h>
int cmmdc(int a, int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
int main()
{
int n,i,x,y,r,k=0;
ifstream f("fractii.n");
ofstream g("fractii.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>x>>y;
r=cmmdc(x,y);
g<<x/r<<" "<<y/r<<endl;
if(r==1)

k++;
}
g<<k;
f.close();
g.close();
return 0;
}

12.(Virvara Alexandru si Ucrainet Nicu)


Din fisierul text tablou.in se citesc: un numar natural n reprezentand numarul de componente ale unui vector cu numere
naturale nenule si cele n componente ale vectorului(n<=100).
a) Afisati elementele vectorului pe primul rand al fisierului text tablou.out, separate prin cate un spatiu, in ordinea inversa
citirii lor.
b) Pe al doilea rand al fisierului text tablou.out afisati media aritmetica a celor n elemente citite la punctul anterior, care
indeplinesc conditia ca au prima cifra egala cu ultima.
Exemplu: Daca fisierul tablou.in are forma:
6
1422 131 1445 9009 321 171
atunci fisierul tablou.out va contine:
171 321 9009 1445 131 142
3103.67
Rezolvare:
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
ifstream f("tablou.in");
ofstream g("tablou.out");
int n, a[100], pc=0, uc=0, nr=0, s=0;
double ma=0;
f>>n;
for(int i=1; i<=n; i++)
{
f>>a[i];
}
for(int i=n; i>=1; i--)
{
g<<a[i]<<" ";
}
for(int i=1; i<=n; i++)
{
uc=a[i]%10;
s=a[i];
while(s>0)
{
pc=s%10;
s=s/10;
}
if(uc==pc)
{
nr++;
ma=ma+a[i];
}
}

ma=ma/nr;
g<<endl<<ma;
}
13. Bergheva Evelina si Ulian Ancuta
ENUNT:
Din fiierul text tablou.in se citesc: un numr natural n reprezentnd numrul de componente ale unui vector cu
numere naturale nenule cu cel mult 9 cifre fiecare i cele n componente ale vectorului (n100).
a) Afiai elementele vectorului pe primul rnd al fiierului text tablou.out, ordonate cresctor.
b) Determinai cel mai mare i cel mai mic element din cele n citite care au ultima cifr par. Acestea se vor
afia, separate printr-un spaiu, pe a doua linie a fiierului tablou.out. Dac nu exist niciun element care s aib ultima
cifr par, se va afia n fiier mesajul Nuexist!.
Exemplu: Dac fiierul tablou.in are forma:
6
1431 142 1422 9009 32 72
atunci fiierul tablou.out va conine:
32 72 142 1422 1431 9009 1422 32
REZOLVARE:
#include<fstream>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int main()
{
int x,k,i,d,nr,ok;
long y;
f>>x>>y>>k;
nr=0;
i=x;
while((i>=x)&&(i<=y)&&(nr<k))
{
d=2;
ok=1;
while((d<=i/2)&&(ok==1))
if(i%d==0)
ok=0;
else
d++;
if(ok)
{
g<<i<<" ";
nr++;
}
i++;
}
g<<'\n';
if(nr<k)
g<<"s-au gasit mai putine numere prime:"<<nr;
return 0;
}

14. Birgovan Andrei si Macovei Alexandru


Enunt: Se citeste de la tastatura un tablou unidimensional a cu n(n<50) elemente numere naturale de cel mult 9
cifre.
a. Cifra maxima a fiecarui element
b. Cel mai mare divizor comun al elementelor tabloului
#include<iostream>
using namespace std;
int cifra(int x)
{
int maxim=0;
while(x)
{
if(x%10>maxim)
maxim=x%10;
x=x/10;
}
return maxim;
}
int cmmdc(int a, int b)
{
int r=0;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
int a[60],n,i,x;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
cout<<cifra(a[i])<< ;
cout<<endl;
x=cmmdc(x,a[i]);
cout<<x;
return 0;
}
15.Din fisierul text atestat.in se citesc: un numar natural n (1<=n<=100) reprezentand numarul de componente ale
unui vector cu numere naturale si cele n componente ale vectorului. Fiecare componenta va fi un numar natural cu
maxim patru cifre.
a) Afisati elementele vectorului pe primul rand al fisierului text atestat.out, separate prin cate un spatiu.
b) Construiti si afisati pe al doilea rand al fisierului text atestat.out, separate prin cate un spatiu, elementele unui
alt vector care contine doar elementele distincte ale vectorului citit din fisierul de intrare.
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("atestat.in");
ofstream out("atestat.out");
int a[10000];
int main ()

{
int i, n, v[100];
in >> n;
for (i = 1; i <= n; i++)
{
in >> v[i];
a[v[i]]++;
out << v[i] << " ";
}
out << endl;
for (i = 1; i <= 10000; i++)
if (a[i] > 0)
out << i << " ";
return 0;
}
20.(Lazareanu Sabina si Miftode Ana)
ENUNT:
Din fiierul vector.in se citesc un numr ntreg n<30 i apoi n numere reprezentnd elementele unui vector. S se
construiasc o matrice cu 3 coloane ale crei linii vor conine toate tripletele de elemente din vector care au proprietatea c
pot reprezenta laturile unui triunghi. Matricea va fi afiat n fiierul matrice.out dup modelul din exemplu.
Exemplu: Dac fiierul de intrare conine urmtoarele date:
7
12 45 10 5 90 4 51
fiierul de ieire va avea urmtoarea form:
12 45 51
12 10 5
12 10 4
45 10 51
45 90 51
REZOLVARE:
#include <iostream>
#include<fstream>
using namespace std;
int v[30],a[3000][3],n,i,j,k,r;Mi
ifstream f("vector.txt");
ofstream g("matrice.out");
int triunghi (int x,int y,int z)
{
if(x+y>z && x+z>y && y+z>x)
return 1;
else
return 0;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
for(k=j+1;k<n;k++)
if(triunghi(v[i],v[j],v[k]))
{
r++;
a[r][1]=v[i];
a[r][2]=v[j];
a[r][3]=v[k];
}

for(i=1;i<=r;i++)
{
for(j=1;j<=3;j++)
g<<a[i][j]<<" ";
g<<"\n";
}
return 0;
}
ENUNT: Din fiierul text matrice.in se citete un ntreg n (n<=100). Construii o matrice n*n care s fie simetric fa
de diagonala principal i s conin n poriunea de matrice situat pe i deasupra diagonalei principale numerele de la 1
pn la n*(n+1)/2 n ordine cresctoare. Afiai matricea obinut n fiierul text matrice.out, fiecare linie fiind situat pe
cte o linie a fiierului, iar elementele fiecrei linii sunt separate printr-un spa iu. Exemple: n=3, matricea va fi 1 2 3 n=4,
matricea este: 1 2 3 4 2 4 5 2 5 6 7
356 3689
4 7 9 10
REZOLVARE:
#include<fstream>
using namespace std;
int main()
{
int n, a[30][30], l, i=1, j=1, m;
ifstream f("matrice.in");
ofstream g("matrice.out");
f>>n;
m=n*(n+1)/2;
for(i=j; i<=n; i++)
for(j=i; j<=n; j++)
for(l=1; l<=m; l++)
a[i][j]=l;
for(i=2; i<=n; i++)
for(j=1; j<=i; j++)
for(l=1; l<=m; l++)
a[i][j]=l;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
g<<a[i][j]<<" ";
g<<endl;
}
}

21.Rosca Claudia si Obreja Vlad


Enun
Din fiierul text matrice.in se citesc: un numr natural n reprezentnd numrul de linii, respectiv coloane ale unei matrici
ptratice cu numere ntregi i cele n x ncomponente ale matricei (n<100).
a) Afiai elementele matricei sub form tabelar.
b) S se rearanjeze componentele matricei astfel nct s se ob in transpusa matricei date. Matricea ob inut s va afi an
fiierul matrice.out.
Rezolvare:
#include<iostream.h>
#include<fstream.h>
int main()
{

int a[100][100],ok;
unsigned n,i,j;
ifstream f(matrice.in);
f>>n;
for (i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f.close();
ofstream g(matrice.out);
for(i=1;1<=n;i++)
{
for(j=1;j<=n;j++)
g<<a[i][j]<< ;
g<<endl;
}
ok=1;
for(i=1;i<n;i+)
for(a[i][j]!=a[n+1-j][n+1-i])
ok=0;
if(ok)g<<Da;
elseg<<Nu;
g.close();
return 0;
}

Probleme Atestat SQL dp.rev.2016-bac


Problema 1
La un centru de sntate evidena consultaiilor este inut cu ajutorul unui sistem informatic care are la baz
dou entiti: PACIENT i CONSULTAIE. Pentru fiecare consultaie se reine cnp-ul pacientului, data consultaiei,
numele medicului care efectueaz consultaia, specialitatea i preul. Opional, dac pacientul a fost diagnosticat cu o
boal, se va reine i aceast informaie. ERD-ul pentru aplicaie este urmtorul:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai alfabetic medicii care au efectuat consultaii pe 1.XII.2012 . Se va afia i specialitatea medicului.
c) Care este suma pltit la centrul de sntate de pacientul Georgescu Paul de-a lungul timpului?
CREATE TABLE PACIENTI1
(
CNP_P NUMBER (13) PRIMARY KEY,
NUME VARCHaR2 (100) NOT NULL,
DATA_NASTERII DATE NOT NULL,
SEX VARCHAR2 (1) NOT NULL
);
INSERT INTO PACIENTI1 VALUES(2921904555777, 'Grig Adela', '19-MAR-1990','F')
INSERT INTO PACIENTI1 VALUES(2890207555777, 'Alexa Mara', '22-MAY-1989', 'F')
INSERT INTO PACIENTI1 VALUES(2910410555777, 'Darie Ada', '02-FEB-1991', 'F')
INSERT INTO PACIENTI1 VALUES(1892411555777, 'Vlad Cristi','27-NOV-1988', 'B')
INSERT INTO PACIENTI1 VALUES(2902512555777, 'Pop Ana', '12-MAY-1990', 'F')
INSERT INTO PACIENTI1 VALUES(1911708555777, 'Georgescu Paul', '11-JUL-1992', 'B')
SELECT * FROM PACIENTI1;
nu e completa????????????????????????

Problema 2(Buliga Ilinca si Bergheva Evelina)


O agenie de turism ine evidena clienilor i a destinaiilor de vacan folosind entitile: DESTINAIE i CLIENT
conform ERD-ului de mai jos.

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai alfabetic clienii care ii vor petrece vacana la Viena.
c) S se afieze cea mai scump i cea mai ieftin destinaie.
Tabela DESTINATII:
Id

NUMED

PRE

Viena

110

Paris

230

Budapesta

50

New York

600

Londra

400

Tabela CLIENTI:
IDD

IDC

NUME

PRENUME

ADRESA

TELEFON

11

POP

INA

IAI

0744123567

22

DASCAL

GINA

DEVA

0744123566

33

MIRON

DANA

CLUJ

0744123565

44

MIRON

DAN

CLUJ

0744123564

55

CARP

VLAD

BACU

0744123563

66

POPA

ANA

BACU

0744123562

77

POP

ION

IAI

0744123561

88

AVRAM

ANCA

CLUJ

0744123560

Cerinta b:
NUME

PRENUME

AVRAM

ANCA

POP

INA

POP

ION

Cerinta c:
NUMED
Budapesta
New York

CREATE TABLE destinatii


( id NUMBER(3)
PRIMARY KEY,
numeD VARCHAR2(40) NOT NULL,
pret NUMBER(3) NOT NULL ) ;
INSERT INTO destinatii VALUES (1, 'Viena', 110)
INSERT INTO destinatii VALUES (2, 'Paris', 230)
INSERT INTO destinatii VALUES (3, 'Budapesta', 50)
INSERT INTO destinatii VALUES (4, 'New York', 600)
INSERT INTO destinatii VALUES (5, 'Londra', 400)
SELECT id AS "Id", numeD, pret AS "PRE"
FROM destinatii
CREATE TABLE clienti
( idd NUMBER(3) NOT NULL REFERENCES
destinatii(id), idc NUMBER(3) PRIMARY KEY,
nume VARCHAR2(35) NOT NULL,
prenume VARCHAR2(40) NOT NULL,
adresa VARCHAR2(50) NOT NULL,
telefon VARCHAR2(10) );
INSERT INTO clienti VALUES (1,11,'POP','INA','IAI','0744123567') INSERT INTO clienti VALUES
(2,22,'DASCAL','GINA','DEVA','0744123566')
INSERT INTO clienti VALUES (2,33,'MIRON','DANA','CLUJ','0744123565')
INSERT INTO clienti VALUES (3,44,'MIRON','DAN','CLUJ','0744123564')
INSERT INTO clienti VALUES (4,55,'CARP','VLAD','BACU','0744123563')
INSERT INTO clienti VALUES (5,66,'POPA','ANA','BACU','0744123562')
INSERT INTO clienti VALUES (1,77,'POP','ION','IAI','0744123561')
INSERT INTO clienti VALUES (1,88,'AVRAM','ANCA','CLUJ','0744123560')
SELECT * FROM clienti
ORDER BY idc
b) SELECT nume, prenume
FROM destinatii, clienti
UNION SELECT numeD
FROM destinatii
WHERE pret=(SELECT MIN(pret) FROM destinatii);
WHERE UPPER(numeD)='VIENA' AND idd=id
ORDER BY nume,prenume
c) SELECT NUMED FROM destinatii
WHERE pret=(SELECT MAX(pret)
FROM destinatii)

Problema 3(Rosca Claudia si Obreja Vlad)


Firma ROMTEL ofer servicii de telefonie, televiziune i internet, pe baz de

abonament. La departamentul de intervenii se ine evidena tuturor abonailor


firmei i a interveniilor. Fiecare defeciune semnalat are un termen limit de
rezolvare exprimat n zile.

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile
reprezentate n ERD. Populai tabelele cu nregistrri relevante pentru
cerinele urmtoare.
b) S se afieze alfabetic abonaii care au solicitat intervenii n data de 1
ianuarie 2013.
c) Afiai data nregistrrii interveniilor care au termenul limit depit?
Tabela ABONAI
CNP

NUME

PRENUME

2921904555777

Grig

Adela

2890207555777

Alexa

Mara

2910410555777

Darie

Ada

1892411555777

Vlad

Cristi

2902512555777

Pop

Ana

Tabela INTERVENII
IDI

CNP

TIP

DATA INREGISTRRII

TERMEN LIMIT

STARE

1.

2921904555777

deranjament

04-04-2013

nefectuat

2.

2890207555777

Instalare

12-03-2012

efectuat

3.

2910410555777

deranjament

01-12-2012

efectuat

4.

1892411555777

Mutare

05-11-2012

efectuat

5.

2902512555777

Instalare

15-02-2013

efectuat

6.

2890207555777

deranjament

01-01-2013

efectuat

7.

2921904555777

deranjament

01-01-2013

efectuat

8.

2902512555777

deranjament

21-12-2012

nefectuat

Cerina b:
NUME

PRENUME

Alexa

Mara

Grig

Adela

Cerina c:
DATA INREGISTRRII
04-04-2013

21-12-2012

Rezolvare:
a)CREATE TABLE ABONATI
(
CNP NUMBER(13)PRIMARY KEY,
NUME VARCHAR2 (50) NOT NULL,
PRENUME VARCHAR2 (50) NOT NULL
);
INSERT INTO ABONATI VALUES(2921904555777, 'Grig' , 'Adela')
INSERT INTO ABONATI VALUES(2890207555777,'Alexa',Mara')
INSERT INTO ABONATI VALUES(2910410555777,'Darie','Ada')
INSERT INTO ABONATI VALUES(1892411555777 ,'Vlad','Cristi')
INSERT INTO ABONATI VALUES(2902512555777,'Pop','Ana');

CREATE TABLE INTERVENTII


(
ID INTEGER PRIMARY KEY,
CNP NUMBER(13) REFERENCES ABONATI(CNP),
TIP VARCHAR(15) NOT NULL,
DATA_INREGISTRARI DATE NOT NULL,
TERMEN, LIMITA NUMBER(3) NOT NULL,
STARE VARCHAR2(10) NOT NULL
);
INSERT INTO INTERVENTII VALUES( 1, 2921904555777, 'deranjament', 04-May-2013, 2, 'neefectuat')
INSERT INTO INTERVENTII VALUES(2, 2890207555777, 'Instalare',12-Mar-2012, 3, 'efectuat')
INSERT INTO INTERVENTII VALUES(3, 2910410555777, 'deranjament', 01-Dec-2012, 2, 'efectuat')
INSERT INTO INTERVENTII VALUES(4, 1892411555777, 'Mutare', 05-Nov-2012, 2, 'efectuat')
INSERT INTO INTERVENTII VALUES(5, 2902512555777, 'Instalare', 15-Feb-2013, 3, 'efectuat')
INSERT INTO INTERVENTII VALUES(6, 2890207555777 , 'deranjament', 01-Jan-2013, 4, 'efectuat')
INSERT INTO INTERVENTII VALUES(7, 2921904555777, 'deranjament', 01-Jan-2013, 4 ,'efectuat')
INSERT INTO INTERVENTII VALUES(8, 2902512555777, 'deranjament', 21-Dec-2012 , 2, 'neefectuat')
b)SELECT NUME, PRENUME
FROM ABONATI INNER JOIN INTERVENTII ON ABONATI.CNP=INTERVENTII.CNP
WHERE DATA_INREGISTRARII='01-01-2013'
ORDER BY NUM, PRENUME;
C) SELECT DATA_INREGISTRARII
FROM INTERVENTII
WHERE SYSDATE<DATA_INREGISTRARII + TERMEN_LIMITA AND UPPER(STARE)='NEFECTUAT';
Problema 4 (Nutu Diana, Pascovici Veronica, Varvaroi Maria)
Pentru filmele ce vor fi rulate la un festival cinematografic se rein: numele i data lansrii.Pentru fiecare actor se
va reine numele, data naterii i id-ul filmului.
Cerine:
a)
b)
c)

Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
S se afieze cel mai vechi film i actorii care au jucat n acesta.
Pentru actorul Florin Piersic s se afieze toate informaiile deinute precum i toate filmele n care
joac.

CREATE TABLE filme


(
idf NUMBER(5) PRIMARY KEY,
nume VARCHAR2(40) NOT NULL,
data_lansarii DATE NOT NULL
)
FROM filme

CREATE TABLE actori


(
idf NUMBER(5) REFERENCES filme(idf),
ida NUMBER(5) PRIMARY KEY,
nume_artist VARCHAR2(40) NOT NULL,
nationalitate VARCHAR2(30) NOT NULL
)
INSERT INTO actori VALUES (1,11,'Fay Wray','American')
INSERT INTO actori VALUES (2,22, 'Vivien Leigh','American')
INSERT INTO actori VALUES (3,33, 'Florin Piersic','Romn')
INSERT INTO actori VALUES (1,44, 'Bill Williams','American')
INSERT INTO actori VALUES (4,88, 'Florin Piersic','Romn')
INSERT INTO actori VALUES (5,55, 'Margareta Pislaru','Romn')
INSERT INTO actori VALUES (4,66, 'Mircea Diaconu','Romn')
INSERT INTO actori VALUES (2,77, 'Clark Gable','American')
SELECT * FROM actori
ORDER BY ida
b)
SELECT nume, nume_artist
FROM filme a, actori b
WHERE data_lansarii=(SELECT MIN(data_lansarii) FROM FILME) AND a.idf=b.idf
c)

SELECT nume_artist, nationalitate, nume, TO_CHAR(data_lansarii, 'DD-MM-YYYY') AS "DATA LANSARII"


FROM filme a, actori b
WHERE UPPER(nume_artist)='FLORIN PIERSIC' AND a.idf=b.idf

Problema 5 (Buburuzan Iulian, Ghenghea Mihai)


A)Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
CREATE TABLE stapani
(
cnp NUMBER(13) PRIMARY KEY,
nume VARCHAR2(40) NOT NULL,
adresa VARCHAR2(50) NOT NULL
)
DESC stapani
INSERT INTO stapani VALUES (2921904555777,'Grig Adelina','Cluj')
INSERT INTO stapani VALUES (2890207555777,'Alexa Mara','Brasov')
INSERT INTO stapani VALUES (2910410555777,'Darie Ada','Bacu')
INSERT INTO stapani VALUES (1892411555777,'Vladoi Cristinel','Bucureti')
INSERT INTO stapani VALUES (2902512555777,'Pop Ana','Iai')
INSERT INTO stapani VALUES (1911708555777,'Antonescu Paul','Bucureti')
select * from caini
CREATE TABLE caini
(
id NUMBER(5) PRIMARY KEY,
cnp NUMBER(13) REFERENCES stapani(cnp),
nume_caine VARCHAR2(40) NOT NULL,
premiu VARCHAR2(30) NOT NULL
)

DESC caini
INSERT INTO caini VALUES (1,2921904555777,'Fay',1)
INSERT INTO caini VALUES (2,2890207555777, 'Dino', 2)
INSERT INTO caini VALUES (3,2910410555777, 'Figaro',1)
INSERT INTO caini VALUES (4,1892411555777, 'Lord',3)
INSERT INTO caini VALUES (5,2902512555777, 'Mozart',3)
INSERT INTO caini VALUES (6,1911708555777, 'Niko',2)
INSERT INTO caini VALUES (7,2921904555777, 'Oscar',0)
INSERT INTO caini VALUES (8,1892411555777, 'Spot',2)
SELECT * FROM caini
ORDER BY id

B)Pentru stpnul Cristinel s se afieze toate informaiile deinute precum i toi cinii cu care a participat la campionat
i premiile obinute de acetia.
SELECT a.cnp, nume, adresa, nume_caine, premiu
FROM stapani a, caini b
WHERE UPPER(nume) LIKE '%CRISTINEL%' AND a.cnp=b.cnp
C)S se afieze lista cinilor alfabetic dup premii, mpreun cu numele stpnilor.
SELECT nume_caine, premiu, nume
FROM stapani a, caini b
WHERE a.cnp=b.cnp
ORDER BY premiu, nume_caine
Problema 6( Ilie Gabriel, Vlaescu Cezar )

La gradina zoologica sunt mai multe animale de specii diferite. Pentru fiecare animal se cunoaste numele si data nasterii
iar pentru fiecare specie denumirea si caracteristica sa.
a. construiti baza de date cu tabelele corespunzatoare si relatiile reprezentate in ERD. Populati tabelele cu
inregistrari relevante pentru urmatoarele cerinte.
b. Care este cel mai batran animal din gradina zoologica si din ce specie face parte ?
c. Sa se afiseze toate animalele alfabetic pe specie.
a. CREATE TABLE SPECII
( ids number(1) PRIMARY KEY,
denumire varchar2(50) NOT NULL,
caracteristici varchar2(50)
);
INSERT INTO Specii
Values (1,ovine,corp acoperit de blan)
INSERT INTO Specii
Values (2,marsupiale,prezena unei pungi, numit marsupiu)
INSERT INTO Specii
Values (3,'cabaline','erbivor, marime considerabila')
CREATE TABLE ANIMALE
( ida number(2) PRIMARY KEY,

ids number(1) references SPECII(ids),


nume varchar2(50) NOT NULL,
data_nasterii date NOT NULL
);
INSERT INTO Animale
Values (11,1,Oaie,04-APR-2008)
INSERT INTO Animale
Values (22,2,Cangur,12-FEB-2007)
INSERT INTO Animale
Values (33,2,urs koala,01-DEC-2007)
INSERT INTO Animale
Values (44,3,Cal,05-NOV-2008)
INSERT INTO Animale
Values (44,3,Cal,05-NOV-2008)
INSERT INTO Animale
Values (66,3,Iapa,03-MAY-2008)
INSERT INTO Animale
Values (77,2,'lupul marsupial','12-MAR-2007')
b) SELECT nume,data_nasterii,denumire
FROM SPECII INNER JOIN ANIMALE ON SPECII.ids = ANIMALE.ids
WHERE data_nasterii = (SELECT MIN(data_nasterii) FROM ANIMALE);
c) SELECT denumire, nume
FROM SPECII INNER JOIN ANIMALE ON ANIMALE.ids = SPECII.ids
ORDER BY denumire ASC, nume ASC;

Problema 7 (Birgovan Andrei, Sorin Solcan)


n cadrul concursului regional mi place geografia elevii de gimnaziu trebuie sa enumere cat mai multe tari si
orase din tarile enumerate. Fiecare tara este identificata prin nume si capitala iar orasele prin nume si populatie.
Cerinte:
a) Construiti baza de date cu tabele corespunzatoare si relatiile reprezentate n ERD. Populati tabelele cu
nregistrari relevante pentru cerintele urmatoare.
b) Sa se afiseze tarile alfabetic si pentru fiecare tara orasele cele mai populate.
c) Sa se determine populatia minima si maxima, apoi sa se afiseze datele oraselor corespunzatoare valorilor minime
si maxime

create table tari


(
cod_t number(3)primary key,
denumire varchar2(20)not null,
capitala varchar2(20)not null
);
insert into tari values(11, 'china', 'beijing')
insert into tari values(22, 'cehia', 'praga')
insert into tari values(33, 'egipt', 'cairo')
insert into tari values(44, 'franta', 'paris')
insert into tari values(55, 'grecia', 'atena')
select * from tari
create table orase
(
cod_o number(3)primary key,
nume_o varchar2(15)not null,
populatie number(10),
cod_t number(3)references tari(cod_t)
);
insert into orase (cod_o, cod_t, nume_o, populatie)
values('1', '11', 'tianjin', '7200000')
insert into orase (cod_o, cod_t, nume_o, populatie)
values(2,11,'guangzhou',11810000)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(4,22,'brno',367729)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(5,33,'beheira',5327000)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(6,33,'giza',3258540)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(7,44,'aviegnon',88312)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(8,44,'bordeaux',218948)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(9,44,'lyon',453187)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(10,55,'salonic',800764)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(11,55,'tripolis',28928)
insert into orase (cod_o, cod_t, nume_o, populatie)
values(3,22,'ostrava',311402)
select * from orase order by cod_o
b)select a.denumire, a.nume_o, a.populatie from

(select tari.cod_t, denumire, nume_o, populatie from tari inner join orase on tari.cod_t=orase.cod_t)a inner join
(select tari.cod_t, max(populatie) as populatie from tari inner join orase on tari.cod_t=orase.cod_t group by cod_t)b
on a.cod_t=b.cod_t and a.populatie=b.populatie;
c)Select Denumire, Capitala, Nume_O, Populatie
From Tari Inner Join Orase On Tari.Cod_T = Orase.Cod_T
Where Populatie = (Select Min(Populatie) From Orase)
Union/and
Select Denumire, Capitala, Nume_O, Populatie
From Tari Inner Join Orase On Tari.Cod_T = Orase.Cod_T
Where Populatie = (Select Max(Populatie) From Orase);

Problema 8 (Ucrainet Nicu, Virvara Alexandru)


O agenie de publicitate realizeaz reclame pentru diveri clieni. Evidena clienilor i a reclamelor este realizat cu
ajutorul entitilor CLIENT i RECLAMA conform ERD-ului de mai jos:

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze pentru fiecare client reclamele comandate. Clienii vor fi afiai alfabetic.
c) Afiai numele i prenumele clientului care a comandat reclama cu un numr maxim de difuzri.
CREATE TABLE CLIENTI8
(
IDC NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
ADRESA VARCHAR2(150) NOT NULL
);
insert into clienti8 values(1, 'POP', 'INA', 'IASI')
insert into clienti8 values(2,'DASCAL','GINA','DEVA')
insert into clienti8 values(3,'MIRON','DANA','CLUJ')
insert into clienti8 values(4,'MIRON','DAN','CLUJ')
insert into clienti8 values(5,'CARP','VLAD','BACU')
insert into clienti8 values(6,'POPA','ANA','BACU')
CREATE TABLE RECLAME
(
IDR NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(50) NOT NULL,
DURATA NUMBER(2) NOT NULL,
NR_DE_DIFUZARI NUMBER(2) NOT NULL,
TARIF NUMBER(4) NOT NULL,
IDC NUMBER(3) REFERENCES CLIENTI8(IDC)
);
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(1,11,'COCA-COLA',2,4,200)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(2,22,'LENOR',1,2,150)

insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(2,33,'ARIEL',1,2,140)


insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(4,44,'ORANGE',2,3,220)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(5,55,'URSUS',1,1,123)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values( 3,66,'COLGATE',1,1,125)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(5,88,'CIUC',1,1,130)
insert into reclame (idc, idr, denumire, durata, nr_de_difuzari,tarif)values(6,77,'POIANA',2,1,100)
b)SELECT NUME, PRENUME, ADRESA, DENUMIRE
FROM CLIENTI8 INNER JOIN RECLAME ON CLIENTI8.IDC = RECLAME.IDC
ORDER BY NUME ASC, PRENUME ASC;
c)SELECT NUME, PRENUME, ADRESA
FROM CLIENTI8 INNER JOIN RECLAME ON CLIENTI8.IDC = RECLAME.IDC
WHERE NR_DE_DIFUZARI =(SELECT MAX(NR_DE_DIFUZARI) FROM RECLAME);

Problema 9 (Lazareanu Sabina, Miftode Ana)


O firm de transporturi auto dorete s in evidena mainilor i curselor efectuate cu ajutorul unei baze de date. n urma
discuiilor cu managerul firmei s-a obinut urmtorul ERD.
a. Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
CREATE TABLE filme
(
idf NUMBER(5) PRIMARY KEY,
nume VARCHAR2(40) NOT NULL,
data_lansarii DATE NOT NULL
)
SELECT idf AS "ID", nume, TO_CHAR(data_lansarii, 'DD-MM-YYYY') AS "DATA LANSARII"
FROM filme

CREATE TABLE actori


(
idf NUMBER(5) REFERENCES filme(idf),
ida NUMBER(5) PRIMARY KEY,
nume_artist VARCHAR2(40) NOT NULL,
nationalitate VARCHAR2(30) NOT NULL
)
INSERT INTO actori VALUES (1,11,'Fay Wray','American')
INSERT INTO actori VALUES (2,22, 'Vivien Leigh','American')
INSERT INTO actori VALUES (3,33, 'Florin Piersic','Romn')
INSERT INTO actori VALUES (1,44, 'Bill Williams','American')
INSERT INTO actori VALUES (4,88, 'Florin Piersic','Romn')
INSERT INTO actori VALUES (5,55, 'Margareta Pislaru','Romn')
INSERT INTO actori VALUES (4,66, 'Mircea Diaconu','Romn')
INSERT INTO actori VALUES (2,77, 'Clark Gable','American')
SELECT * FROM actori
ORDER BY ida
b)
SELECT nume, nume_artist
FROM filme a, actori b
WHERE data_lansarii=(SELECT MIN(data_lansarii) FROM FILME) AND a.idf=b.idf

c)

SELECT nume_artist, nationalitate, nume, TO_CHAR(data_lansarii, 'DD-MM-YYYY') AS "DATA LANSARII"


FROM filme a, actori b
WHERE UPPER(nume_artist)='FLORIN PIERSIC' AND a.idf=b.idf

Problema 10 (Buliga Ilinca, Bergheva Evelina)


La librria colii se gsesc cri aprute la mai multe edituri. Pentru o mai bun gestionare a acestora se folosesc entitile
EDITURA i CARTE conform ERD-ului de mai jos:

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
b) Afiai crile aprute la editura Nemira ordonate alfabetic.
c) Care este valoarea crilor scrise de Ion Creang?
Tabela EDITURI
COD

NUME

ADRESA

TELEFON

NEMIRA

1 Mai, 40, Bucureti

0744123567

NICULESCU

Calea Unirii 23, Bucureti

0744123566

ALL

Calea Unirii 67, Bucureti

0744123565

ERC PRESS

Florilor 1, Bucureti

0744123564

PETRION

Pandurilor 67, Bucureti

0744123563

Tabela CRI
COD

IDC

TITLU

AUTOR

PRE

11

ION

ION REBREANU

29

22

MARA

IOAN SLAVICI

31

33

POVETI

ION CREANG

19

44

POEZII

MIHAI EMINESCU

15

55

AMINTIRI DIN COPILRIE

ION CREANG

22

66

POEZII

GEORGE COBUC

19

77

LORELEI

IONEL TEODOREANU

20

88

DUMBRAVA MINUNAT

MIHAIL SADOVEANU

18

Cerina b:
TITLU

AUTOR

PRE

ION

ION REBREANU

29

LORELEI

IONEL TEODOREANU

20

Cerina c:
VALOARE
41

a. CREATE TABLE edituri


(
cod NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL,
adresa VARCHAR2(200) NOT NULL,
telefon VARCHAR2(10)
)
INSERT INTO edituri VALUES (1, 'NEMIRA', '1 Mai, 40, Bucureti','0744123567')
INSERT INTO edituri VALUES (2, 'NICULESCU', 'Calea Unirii 23, Bucureti','0744123566')
INSERT INTO edituri VALUES (3, 'ALL', 'Calea Unirii 67, Bucureti','0744123565')
INSERT INTO edituri VALUES (4, 'ERC PRESS', 'Florilor 1, Bucureti','0744123565')
INSERT INTO edituri VALUES (5, 'PETRION', 'Pandurilor 67, Bucureti','0744123563')
SELECT *
FROM edituri ORDER by cod
CREATE TABLE carti
(
cod NUMBER(3) REFERENCES edituri(cod),
idc NUMBER(3) PRIMARY KEY,
titlu VARCHAR2(50) NOT NULL,
autor VARCHAR2(50) NOT NULL,
pret NUMBER(4) NOT NULL
)
INSERT INTO carti VALUES (1,11, 'ION', 'ION REBREANU',29)
INSERT INTO carti VALUES (2,22, 'MARA', 'IOAN SLAVICI',31)
INSERT INTO carti VALUES (3,33, 'POVETI', 'ION CREANG',19)
INSERT INTO carti VALUES (4,44, 'POEZII', 'MIHAI EMINESCU',15)
INSERT INTO carti VALUES (5,55, 'AMINTIRI DIN COPILRIE', 'ION CREANG',22)
INSERT INTO carti VALUES (2,66, 'POEZII', 'GEORGE CO BUC',29)
INSERT INTO carti VALUES (1,77, 'LORELEI', 'IONEL TEODOREANU',20)
INSERT INTO carti VALUES (5,88, 'DUMBRAVA MINUNATA', 'MIHAIL SADOVEANU',18)
SELECT *

FROM carti ORDER by idc


b)Afiai crile aprute la editura Nemira ordonate alfabetic.
SELECT titlu, autor, pret
FROM edituri a, carti b
WHERE a.cod=b.cod and UPPER(nume)='NEMIRA'
ORDER BY titlu,autor
c)Care este valoarea crilor scrise de Ion Creang?
SELECT SUM(pret) AS "VALOARE"
FROM carti
WHERE UPPER(autor)='ION CREANG'

Problema 11 (Obreja Vlad, Rosca Claudia)


Managerul societii ABC dorete s afle informaii legate de angajaii si. n cadrul societii exist mai multe
departamente fiecare departament avnd un coordonator. Pentru o mai bun eviden a acestora se folosesc entitile
DEPARTAMENT i ANGAJAT conform ERD-ului de mai jos.

Tabela DEPARTAMENTE
COD

DENUMIRE

CONTABILITATE

APROVIZIONARE

DESFACERE

TRANSPORTURI

PRODUCIE

Tabela ANGAJAI
CNP

NUME I PRENUME

FUNCIA

SALAR

COD_DEPART

2921904555777

Grig Adelina

COORDONATOR DEPARTAMENT

1800

2890207555777

Alexa Mara

ECONOMIST

1500

2910410555777

Darie Ada

COORDONATOR DEPARTAMENT

1800

1892411555777

Vladoi Cristinel

INGINER

1602

2902512555777

Pop Ana

INGINER

1710

1911708555777

Antonescu Paul

ECONOMIST

1403

2901907555777

Ionescu Ana

COORDONATOR DEPARTAMENT

1800

2890909555777

Alex Dana

INGINER

1653

1910210555777

Darie Mihai

COORDONATOR DEPARTAMENT

1800

2882411555777

Vlad Cristina

INGINER

1689

2922512555777

Radu Anda

ECONOMIST

1500

1911709555777

Anton Mihai

COORDONATOR DEPARTAMENT

1800

Cerina b:
DEPARTAMENT

COORDONATOR DEPARTAMENT

CONTABILITATE

Ionescu Ana

APROVIZIONARE

Anton Mihai

DESFACERE

Darie Ada

TRANSPORTURI

Darie Mihai

PRODUCIE

Grig Adelina

Cerina c:
DEPARTAMENT

NUMRUL DE ANGAJAI

CONTABILITATE

APROVIZIONARE

DESFACERE

TRANSPORTURI

PRODUCIE

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze lista departamentelor cu efii acestora(se va afia denumirea departamentului i numele coordonatorului).
c) S se afieze numrul de angajai din fiecare departament.
Cerinta a:
CREATE TABLE DEPARTAMENTE
(
COD NUMBER(3) PRIMARY KEY,
DENUMIRE VARCHAR2(30) NOT NULL
);
INSERT INTO DEPARTAMENTE VALUES(1 ,'CONTABILITATE ')
INSERT INTO DEPARTAMENTE VALUES(2 ,'APROVIZIONARE ')
INSERT INTO DEPARTAMENTE VALUES(3 ,'DESFACERE ')
INSERT INTO DEPARTAMENTE VALUES(4,'TRANSPORTURI ')
INSERT INTO DEPARTAMENTE VALUES(5,'PRODUCIE ' );
CREATE TABLE ANGAJATI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2 (50) NOT NULL,
FUNCTIA VARCHAR2 (200) NOT NULL,
SALAR NUMBER (4) NOT NULL,
COD_DEPART NUMBER(3) REFERENCES DEPARTAMENTE(COD)
);
* popularea tabelei CARTI:
INSERT INTO ANGAJATI VALUES(2921904555777 , 'Grig Adelina' ,'COORDONATOR DEPARTAMENT' , 1800 , 5 )
INSERT INTO ANGAJATI VALUES(2890207555777 ,'Alexa Mara', 'ECONOMIST ', 1500, 2)
INSERT INTO ANGAJATI VALUES(2910410555777 , 'Darie Ada', 'COORDONATOR DEPARTAMENT ', 1800, 3)
INSERT INTO ANGAJATI VALUES(1892411555777 , 'Vladoi Cristinel ' , 'INGINER ' , 1602, 5)
INSERT INTO ANGAJATI VALUES(2902512555777, 'Pop Ana', 'INGINER', 1710, 4)
INSERT INTO ANGAJATI VALUES(1911708555777 , 'Antonescu Paul ' , 'ECONOMIST ' , 1403, 1)
INSERT INTO ANGAJATI VALUES(2901907555777, 'Ionescu Ana', 'COORDONATOR DEPARTAMENT ' , 1800, 1 )
INSERT INTO ANGAJATI VALUES(2890909555777 , 'Alex Dana' , 'INGINER ', 1653 , 5)
INSERT INTO ANGAJATI VALUES(1910210555777 , 'Darie Mihai ' , 'COORDONATOR DEPARTAMENT ' , 1800, 4 )
INSERT INTO ANGAJATI VALUES(2882411555777, 'Vlad Cristina', 'INGINER ', 1689 , 5)
INSERT INTO ANGAJATI VALUES(2922512555777 , 'Radu Anda', 'ECONOMIST', 1500, 3 )
INSERT INTO ANGAJATI VALUES(1911709555777, 'Anton Mihai', COORDONATOR DEPARTAMENT , 1800 , 2)
Cerina b:
SELECT DENUMIRE AS DEPARTAMENT, NUME AS COORDONATOR

FROM DEPARTAMENTE INNER JOIN ANGAJATI ON DEPARTAMENTE.COD = ANGAJATI.COD_DEPART


WHERE UPPER(FUNCTIA) = 'COORDONATOR DEPARTAMENT';
Cerina c:
SELECT DENUMIRE AS DEPARTAMENT, COUNT(*) AS NUMAR_ANGAJATI
FROM DEPARTAMENTE INNER JOIN ANGAJATI ON DEPARTAMENTE.COD = ANGAJATI.COD_DEPART
GROUP BY DENUMIRE;

Problema 12 (Nutu Diana, Varvaroi Maria, Pascovici Veronica)


Pentru o mai bun eviden a elevilor i personalului didactic dintr-o unitate colar s-a hotrt crearea unei baze date date.
n urma discuiilor avute cu directorul colii s-au construit entitile DIRIGINTE i ELEV conform ERD-ului de mai jos.
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
CREATE TABLE DIRIGINTI
(
ID_D INTEGER PRIMARY KEY,
NUME VARCHAR2(50) NOT NULL,
PRENUME VARCHAR2(50) NOT NULL,
SPECIALITATE VARCHAR2(50) NOT NULL);
INSERT INTO DIRIGINTI VALUES(1, 'POP', 'INA', 'FIZIC')
INSERT INTO DIRIGINTI VALUES(2, 'DASCAL', 'GINA', 'MATEMATIC')
INSERT INTO DIRIGINTI VALUES(3, 'MIRON', 'DANA', 'CHIMIE')
INSERT INTO DIRIGINTI VALUES(4, 'MIRON', 'DAN', 'INFORMATIC')
INSERT INTO DIRIGINTI VALUES(5, 'CARP', 'VLAD', 'ISTORIE')
INSERT INTO DIRIGINTI VALUES(6, 'POPA', 'ANA', 'BIOLOGIE')
CREATE TABLE ELEVI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(100) NOT NULL,
ADRESA VARCHAR2(200) NOT NULL,
MEDIA NUMBER(4,2) NOT NULL,
ID_D INTEGER REFERENCES DIRIGINTI(ID_D)
);
INSERT INTO ELEVI VALUES(2961904555777, 'Grig', 'Adelina', 9.40, 5)
INSERT INTO ELEVI VALUES(2950207555777, 'Alexa', 'Mara', 10.00, 2)
INSERT INTO ELEVI VALUES(2960410555777, 'Darie', 'Ada', 9.00, 3)
INSERT INTO ELEVI VALUES(1972411555777, 'Vladoi', 'Cristinel', 8.80, 6)
INSERT INTO ELEVI VALUES(2962512555777, 'Pop', 'Ana', 9.50, 4)
INSERT INTO ELEVI VALUES(1971708555777, 'Antonescu', 'Paul', 10.00, 1)
INSERT INTO ELEVI VALUES(2981907555777, 'Ionescu', 'Ana', 8.80, 1)
INSERT INTO ELEVI VALUES(2980909555777, 'Alex', 'Dana', 9.00, 5)
INSERT INTO ELEVI VALUES(1990210555777, 'Darie', 'Mihai', 10.00, 4)
INSERT INTO ELEVI VALUES(2972411555777, 'Vlad', 'Cristina', 8.90, 6)
INSERT INTO ELEVI VALUES(2972512555777, 'Radu', 'Anda', 9.22, 3)
INSERT INTO ELEVI VALUES(1951709555777, 'Anton', 'Mihai', 9.10, 2)
b) S se. afieze numele diriginilor a cror elevi au media 10. Se va afia numele i prenumele elevului, numele
i prenumele dirigintelui precum i specialitatea dirigintelui.
SELECT ELEVI.NUME AS "NUMELE ELEVULUI", DIRIGINTI.NUME AS "NUMELE DIRIGINTELUI",
PRENUME AS
"PRENUMELE DIRIGINTELUI", SPECIALITATE

FROM DIRIGINTI INNER JOIN ELEVI ON DIRIGINTI.ID_D = ELEVI.ID_D


WHERE MEDIA = 10;

c) S se afieze media general a fiecreiclase. Se va afia numele dirigintelui i media general a clasei.
SELECT A.ID_D, DIRIGINTI.NUME, DIRIGINTI.PRENUME, A."MEDIA CLASEI" FROM
(SELECT ID_D, AVG(MEDIA) AS "MEDIA CLASEI" FROM ELEVI GROUP BY ID_D) A
INNER JOIN DIRIGINTI ON A.ID_D = DIRIGINTI.ID_D;
Problema 13(Ulian Anca, Nistoroaie Ioana)
O agenie imobiliar ine evidena cldirilor i apartamentelor folosind entitile: CLDIRE i APARTAMENT .

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai apartamentele care se afl n cldiri care au mai mult de 2 nivele.
c) S se afieze la ce adres se gsete apartamentul care are cele mai multe camere.
Tabela CLDIRI
ADRESA

NR_NIVELE

COD_CLDIRE

1 Mai, 40, Bucureti

Calea Unirii 23, Bucureti

Calea Unirii 67, Bucureti

Florilor 1, Bucureti

Pandurilor 67, Bucureti

Tabela APARTAMENTE
COD_
CLDIRE

COD_APARTAMENT

NR_CAME-RE

ETAJ

OBS

12

11

Reanovat

10

Are centrala proprie

Are centrala proprie

Renovat

Cerina b:
ADRESA

COD_APARTAMENT

NR_CAMERE

ETAJ

Calea Unirii 23, Bucureti

Are centrala proprie

Calea Unirii 23, Bucureti

Reanovat

Florilor 1, Bucureti

Cerina c:
ADRESA

OBS

Pandurilor 67, Bucureti

a)CREATE TABLE CLADIRI


(
COD_CLADIRE INTEGER PRIMARY KEY,
ADRESA VARCHAR2(200) NOT NULL,
NR_NIVELE NUMBER(2) NOT NULL
);
INSERT INTO CLADIRI VALUES(1, '1 Mai,40,Bucuresti', 1);
INSERT INTO CLADIRI VALUES(2, 'Calea Unirii 23,Bucuresti', 4);
INSERT INTO CLADIRI VALUES(3, 'Calea Unirii 67,Bucuresti', 2);
INSERT INTO CLADIRI VALUES(4, 'Florilor 1,Bucuresti', 3);
INSERT INTO CLADIRI VALUES(5, 'Pandurilor 67,Bucuresti', 2);
CREATE TABLE APARTAMENTE
(
COD_AP INTEGER PRIMARY KEY,
NR_CAMERE NUMBER(3) NOT NULL,
ETAJ NUMBER(2) NOT NULL,
OBS VARCHAR2(200),
COD_CLADIRE INTEGER REFERENCES CLADIRI(COD_CLADIRE)
);
INSERT INTO APARTAMENTE VALUES(1, 2, 1, 'Are central proprie', 2);
INSERT INTO APARTAMENTE VALUES(12, 1, 2,' ', 1);
INSERT INTO APARTAMENTE VALUES(11, 3, 1,' ', 1);
INSERT INTO APARTAMENTE VALUES(2, 3, 2, 'Renovat', 2);
INSERT INTO APARTAMENTE VALUES(10, 2, 1, 'Are central proprie', 3);
INSERT INTO APARTAMENTE VALUES(5, 2, 3,' ', 4);
INSERT INTO APARTAMENTE VALUES(15,4, 1, 'Renovat', 5);
INSERT INTO APARTAMENTE VALUES(3, 1, 1,' ', 3);
SELECT* FROM APARTAMENTE
b) SELECT ADRESA, COD_AP, NR_CAMERE, ETAJ, OBS
FROM CLADIRI INNER JOIN APARTAMENTE ON CLADIRI.COD_CLADIRE = APARTAMENTE.COD_CLADIRE
WHERE NR_NIVELE > 2;
c) SELECT ADRESA
FROM CLADIRI INNER JOIN APARTAMENTE ON CLADIRI.COD_CLADIRE = APARTAMENTE.COD_CLADIRE
WHERE NR_CAMERE = (SELECT MAX(NR_CAMERE) FROM APARTAMENTE);

Problema 14 (Buliga Ilinca, Bergheva Evelina)


Un club sportiv de atletism ine evidena sportivilor folosind entitile CLUB i SPORTIV conform ERD-ului de
mai jos.

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) S se afieze cluburile alfabetic i media de vrst a sportivilor fiecrui club.
c) S se afieze alfabetic cei(cel) mai btrni sportivi mpreun cu cluburile lor.
Tabela CLUBURI

COD_CLUB

DENUMIRE

LOCALITATE

Club Zenit

Club Dinamo

Bucureti

Cluj

Club Steaua

Bacu

Club Rapid

Bucureti

Club Piticot

Suceava

Club Ardealul

Cluj

Tabela SPORTIVI
COD_CLUB

CODS

NUME

PRENUME

VRSTA

11

POP

INA

15

22

DASCAL

GINA

20

33

MIRON

DANA

21

44

MIRON

DAN

19

55

CARP

VLAD

17

66

POPA

ANA

21

77

AVRAM

MONA

17

88

ENACHE

CRISTI

18

Cerina b:
DENUMIRE

MEDIA DE VRST

Club Ardealul

17

Club Dinamo

20.5

Club Piticot

17.5

Club Rapid

19

Club Steaua

21

Club Zenit

15

Cerina c:
NUME

PRENUME

VRST

MIRON

DANA

21

Club Dinamo

POPA

ANA

21

Club Steaua

CREATE TABLE CLUBURI


(
COD_CLUB INTEGER PRIMARY KEY,
DENUMIRE VARCHAR2(20) NOT NULL,
LOCALITATE VARCHAR2(20) NOT NULL
);
INSERT INTO CLUBURI VALUES(1 ,'Club Zenit', 'Cluj');
INSERT INTO CLUBURI VALUES(2 ,'Club Dinamo','Bucureti')
INSERT INTO CLUBURI VALUES(3 ,'Club Steaua', 'Bacu')
INSERT INTO CLUBURI VALUES(4,'Club Rapid','Bucureti')
INSERT INTO CLUBURI VALUES(5, 'Club Piticot' ,'Suceava')
INSERT INTO CLUBURI VALUES(6, 'Club Ardealul','Cluj')
CREATE TABLE SPORTIVI
(
COD_CLUB INTEGER REFERENCES CLUBURI (COD_CLUB),
CODS INTEGER PRIMARY KEY NOT NULL,
NUME VARCHAR2 (20) NOT NULL,
PRENUME VARCHAR2 (20) NOT NULL,
VARSTA NUMBER (3) NOT NULL
)
INSERT INTO SPORTIVI VALUES(1,11, 'POP', 'INA', 15)
INSERT INTO SPORTIVI VALUES(2 ,22 ,'DASCAL', 'GINA', 20)
INSERT INTO SPORTIVI VALUES(2,33, 'MIRON','DANA', 21)

DENUMIRE_CLUB

INSERT INTO SPORTIVI VALUES(4, 44,' MIRON', 'DAN', 19)


INSERT INTO SPORTIVI VALUES(5 ,55, 'CARP', 'VLAD', 17)
INSERT INTO SPORTIVI VALUES(3, 66,' POPA ','ANA', 21)
INSERT INTO SPORTIVI VALUES(6 ,77,'AVRAM',' MONA', 17)
INSERT INTO SPORTIVI VALUES(5 ,88 ,'ENACHE', 'CRISTI', 18)
b. SELECT DENUMIRE, "MEDIA DE VARSTA" FROM
(SELECT COD_CLUB, AVG(VARSTA) AS "MEDIA DE VARSTA"
FROM SPORTIVI GROUP BY COD_CLUB) A
INNER JOIN CLUBURI ON A.COD_CLUB = CLUBURI.COD_CLUB
c. SELECT NUME, PRENUME, VARSTA, DENUMIRE
FROM CLUBURI INNER JOIN SPORTIVI ON CLUBURI.COD_CLUB = SPORTIVI.COD_CLUB
WHERE VARSTA = (SELECT MAX(VARSTA) FROM SPORTIVI)
ORDER BY NUME ASC, PRENUME ASC;
ORDER BY DENUMIRE;

Problema 15 ( Ilie Gabrile, Vlaescu Cezar )


O asociaie de locatari ine evidena locatarilor din asociaiefolosind entitile: LOCATAR i APARTAMENT
conform ERD-ului de mai jos.
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai numele locatarilor cu suma restant maxim. Se va afia numele, prenumele i suma restant.
c) S se afieze alfabetic locatarii care au acelai loc de munc cu cel citit de la tastatur.
a. CREATE TABLE APARTAMENTE
(
CODA NUMBER(1) PRIMARY KEY,
NR_CAMERE NUMBER(1) NOT NULL,
SUMA_RESTANTA NUMBER(3) NOT NULL
);
INSERT INTO Apartamente
Values (1,2,0)
INSERT INTO Apartamente
Values (2,3,75)
INSERT INTO Apartamente
Values (3,4,100)
INSERT INTO Apartamente
Values (4,3,0)
INSERT INTO Apartamente
Values (5,4,200)
INSERT INTO APARTAMENTE
VALUES (6,2,50)
CREATE TABLE LOCATARI
(

CODL NUMBER(3) PRIMARY KEY,


CODA NUMBER(1) REFERENCES APARTAMENTE(CODA),
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
LOC_MUNCA VARCHAR2(30) NOT NULL
);
INSERT INTO Locatari
Values (111,1,POP,INA,SC ASTAR)
INSERT INTO Locatari
Values (112,2,DASCAL,GINA,GPN2)
INSERT INTO Locatari
Values (113,4,MIRON,DANA,GPN2)
INSERT INTO Locatari
Values (114,4,MIRON,DAN,SC EMPOS)
INSERT INTO Locatari
Values (115,3,CARP,VLAD,SC GEN 1)
INSERT INTO Locatari
Values (116,3,CARP,ANA,SC GEN 1)
INSERT INTO Locatari
Values (117,5,AVRAM,MONA,GPN2)
INSERT INTO Locatari
Values (118,6,ENACHE,CRISTI,AUTOSERVICE)
INSERT INTO Locatari
Values (119,2,DASCAL,MIHAI,ROMPETROL)
INSERT INTO LOCATARI
VALUES (120,1,'POP','VASILE','SC ASTAR')
b) SELECT NUME, PRENUME, SUMA_RESTANTA
FROM APARTAMENTE INNER JOIN LOCATARI ON APARTAMENTE.CODA = LOCATARI.CODA
WHERE SUMA_RESTANTA = (SELECT MAX(SUMA_RESTANTA) FROM APARTAMENTE);
c) SELECT NUME, PRENUME, NUMAR_AP
FROM APARTAMENTE INNER JOIN LOCATARI ON APARTAMENTE.CODA = LOCATARI.CODA
WHERE LOC_MUNCA = :LOC_MUNCA
ORDER BY NUME ASC, PRENUME ASC;

CREATE TABLE REGIZORI


(
ID INTEGER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL
);
INSERT INTO regizori values (101,'Anthony Minghella')
CREATE TABLE FILME
(
ID NUMBER PRIMARY KEY NOT NULL,
ID_REGIZORI NUMBER REFERENCES REGIZORI(ID),
TITLU VARCHAR2(40) NOT NULL,
DURATA NUMBER NOT NULL,

AN_APAR DATE NOT NULL,


BUGET NUMBER NOT NULL
);
INSERT INTO FILME VALUES(1,101, Pacientul englez,120,2008, 50000)
b)SELECT A.TITLU, A.AN_APAR, A.BUGET, B.NUME
FROM FILME A, REGIZORI B
WHERE A.ID_REGIZORI=B.ID AND A.BUGET<30000
AND B.PREMIU = 'nu';
c)SELECT a.titlu, b.nume, a.durata, decode(a.durata,120,'Durata e de 2 ore',180,'Doua
alocat"
FROM FILME A, REGIZORI B

serii','Obisnuit') as "Timp

Problema 16 (Andrei Birgovan, Sorin Solcan)


a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.

create table proprietari


(
cnp number(13) primary key,
nume varchar2(20) not null,
prenume varchar2(29) not null,
adresa varchar2(200) not null,
telefon varchar2(10) not null
)
select * from proprietari
insert into proprietari values(2961904555777,'pop','ina','radauti','566123')
insert into proprietari values(2950207555777,'dascal','gina','suceava','217654')
insert into proprietari values(2960410555777,'miron','dana','marginea','416097')
insert into proprietari values(1972411555777,'miron','dan','marginea','416781')
insert into proprietari values(2962512555777,'carp','vlad','suceava','217894')
insert into proprietari values(1971708555777,'carp','ana','suceava','217439')
insert into proprietari values(2981907555777,'avram','mona','radauti','561985')
insert into proprietari values(2980909555777,'enache','cristi','vicov','524312')
insert into proprietari values(1990210555777,'dascal','mihai','vicov','524433')
insert into proprietari values(2972411555777,'pop','vasile','radauti','561763')
create table autovehicule
(
nr_inmatric varchar2(10) primary key,
marca varchar2(100) not null,
model varchar2(100) not null,
culoare varchar2(100) not null,
an_fabricatie number(4) not null,
cnp number(13)references proprietari(cnp)
)

insert into autovehicule values('sv-12-alb','mercedes','viano','rosu',2008,2961904555777)


insert into autovehicule values('sv-11-crp','mercedes','vito','negru',2005,2950207555777)
insert into autovehicule values('sv-06-str','dacia','logan','albastru',1999,2960410555777)
insert into autovehicule values('sv-32-aml','opel','corsa','argintiu',2000,1972411555777)
insert into autovehicule values('sv-42-mls','opel','astra','verde',2005,2962512555777)
insert into autovehicule values('sv-23-csj','peugeot','onyx','galben',2009,1971708555777)
insert into autovehicule values('sv-19-dpf','peugeot','boxer','alb',2004,2981907555777)
insert into autovehicule values('sv-39-elg','volkswagen','polo','argintiu',1998,2980909555777)
insert into autovehicule values('sv-02-msf','volkswagen','passat','auriu',2001,1990210555777)
insert into autovehicule values('sv-37-nrf','volkswagen','touareg','negru',2002,2972411555777)
insert into autovehicule values('sv-11-jhl','dacia','logan','albatru',2001,2950207555777)
insert into autovehicule values('sv-22-kml','volkswagen','polo','argintiu',2000,2960410555777)
select * from autovehicule
b) S se afieze lista proprietarilor a cror autovehiculeau anul fabricaiei cuprins ntre doi ani specificai de la tastatur.
select p.nume,p.prenume,a.an_fabricatie
from proprietari p,autovehicule a
where p.cnp=a.cnp and a.an_fabricatie >= :an_min and a.an_fabricatie <= :an_max
c) S se afieze numele i prenumele proprietarului, marca i anul fabricaieicelui mai nou autovehicul.n cazul n care
exist mai multe astfel de autovehicule afiarea se va face alfabetic n funcie de marc.
select p.nume, p.prenume, a.marca, a.an_fabricatie
from proprietari p, autovehicule a
where (p.cnp=a.cnp) and ((a.an_fabricatie, a.marca) in(select max(a.an_fabricatie), a.marca from autovehicule a group by
a.marca))

Problema 17 (Alexandru Virvara, Nicu Ucrainet)


ntr-o baz de date se ine evidena juctorilor din echipele de fotbal. Astfel o
echip are mai muli juctori iar un juctor joac la o singur echip. Informaiile
referitoare la juctor care vor fi memorate sunt: numele, data naterii, nlimea,
salariul i numrul de goluri marcate n anul anterior. Pentru echipe se vor memora:
numele, anul nfiinrii, localitatea, patronul i bugetul fiecreia.
ERD-ul aplicaiei este urmtorul:

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n
ERD. Populai tabelele cu nregistrri relevante pentru cerinele urmtoare.
b) Afiai juctorii de la o echip citit de la tastatur.
c) Afiai salariul mediu pentru fiecare echip.
CREATE TABLE ECHIPE
(

COD INTEGER PRIMARY KEY,


NUME VARCHAR2(20) NOT NULL,
AN_INFIINTARE INTEGER NOT NULL,
LOCALITATE VARCHAR2(20) NOT NULL,
PATRON VARCHAR2(50) NOT NULL,
BUGET INTEGER NOT NULL
);
INSERT INTO ECHIPE VALUES(100, 'Astra', 1970, 'Bucuresti', 'Ion Popescu', 1000000)
INSERT INTO ECHIPE VALUES(400, 'Politehnica', 1964, 'Timisoara', 'Ion Popescu', 450000)
INSERT INTO ECHIPE VALUES(200, 'Victoria', 1955, 'Bucuresti', 'Vlad Mina', 500000)
INSERT INTO ECHIPE VALUES(300, 'Poli', 1972, 'Iasi', 'Paul Nistor', 350000)
CREATE TABLE JUCATORI
(
COD NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
DATA_NASTERII DATE,
INALTIME NUMBER NOT NULL,
SALARIU NUMBER NOT NULL,
GOLURI_MARCATE NUMBER,
COD_ECHIPA INTEGER REFERENCES ECHIPE(COD)
);
INSERT INTO JUCATORI VALUES(1, 'Mihai Popescu', '12-Dec-1980', 1.85, 1500, 0, 100);
INSERT INTO JUCATORI VALUES(3, 'Ionut Popa', '05-Sep-1991', 1.8, 2400, 5, 300);
INSERT INTO JUCATORI VALUES(6, 'Eduard Nastase', '10-Oct-1992', 1.76, 1700, 10, 300);
INSERT INTO JUCATORI VALUES(2, 'Sorin Manole', '08-Aug-1991', 1.93, 3000, 0, 200);
INSERT INTO JUCATORI VALUES(4, 'Mihai Rotaru', '11-Nov-1988', 1.85, 2500, 15, 100);
INSERT INTO JUCATORI VALUES(5, 'Matei Manolache', '07-Nov-1980', 1.79, 1900, 10, 400);
b)SELECT JUCATORI.NUME FROM ECHIPE, JUCATORI
WHERE ECHIPE.COD = JUCATORI.COD_ECHIPA AND ECHIPE.NUME = :ECHIPA;
c)SELECT ECHIPE.NUME, AVG(JUCATORI.SALARIU) AS "SALARIUL MEDIU" FROM ECHIPE, JUCATORI
WHERE ECHIPE.COD = JUCATORI.COD_ECHIPA GROUP BY ECHIPE.NUME;

Problema 18 (Lazareanu Sabina, Miftode Ana)


n fiecare an colar elevii din fiecare unitate colar primesc burse n funcie de situaia lor colar i financiar. Un elev
poate primi burs de merit, pentru rezultate bune la nvtur, burs social sau burs de boal. Cuantumul unei burse este
stabilit n funcie de categoria n care se ncadreaz aceasta. Pentru fiecare elev se cunoate cnp-ul, numele i prenumele,
media colar i numrul de absene. Diagrama ER care descrie scenariul de mai sus este:
a.

Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.

a. CREATE TABLE BURSE


(
ID NUMBER(3) PRIMARY KEY,
TIP VARCHAR2(30) NOT NULL,
CUANTUM NUMBER(4) NOT NULL
);
INSERT INTO BURSE VALUES(14, 'MERIT', 500)
INSERT INTO BURSE VALUES(12, 'SOCIALA', 400)
INSERT INTO BURSE VALUES(13, 'BOALA', 300);
CREATE TABLE ELEVI
(

CNP NUMBER(13) PRIMARY KEY,


NUME VARCHAR2(30) NOT NULL,
PRENUME VARCHAR2(30) NOT NULL,
MEDIA NUMBER(3,2) NOT NULL,
ABSENTE NUMBER(3) NOT NULL,
ID_BURSA NUMBER(3) REFERENCES BURSE(ID)
);
INSERT INTO ELEVI VALUES(1940513335028, 'PRELIPCIAN', 'MIHAI', 9.9, 4, 14)
INSERT INTO ELEVI VALUES(1980613378056, 'PREUTESCU', RAZVAN', 9.9, 1, 14)
INSERT INTO ELEVI VALUES(2978061337805, 'MOSCALIUC', MIRELA', 9.94, 2, 14)
INSERT INTO ELEVI VALUES(199111237834, 'MOTRESCU', 'COSTEL', 8.5, 6, 13)
INSERT INTO ELEVI VALUES(2990705508345, 'POPOVICI', 'TEODORA', 8.83, 8, 12)
INSERT INTO ELEVI VALUES(1980412347611, 'ILISESU', 'ANDREI', 7.9, 8, 12)
INSERT INTO ELEVI VALUES(2640513335028, 'COSTESCU', MIRELA', 8.34, 2, 12)
INSERT INTO ELEVI VALUES(296121337811, 'CHIRIBUCA', 'ANA', 8.5, 6, 13)
INSERT INTO ELEVI VALUES(195121337811, 'COSTESCU', 'MARIAN', 8.5, 6, 13)
INSERT INTO ELEVI VALUES(2971123783454, 'AMARIEI', 'ANGELA', 9.5, 2, 13);
b) Afiai elevii care au beneficiat de burse sociale i au numrul cel mai mare de absene.
b) SELECT a.NUME|| ' ' ||a.PRENUME ||' are '||a.ABSENTE|| ' ABSENTE' AS "Elevi bursieri"
FROM ELEVI a, BURSE b
WHERE lower(b.tip)= 'SOCIALA' AND b.ID=a.ID_BURSA AND a.ABSENTE=
(SELECT max(c.ABSENTE) FROM ELEVI c, BURSE d.
WHERE lower(d.tip)='SOCIALA' AND d.ID=c.ID_BURSA
);
c)
Afiai pentru fiecare categorie de burs, numrul de burse alocate.
c) SELECT count(a.ID_BURSA)AS "Numarul de burse acordate",b.tip AS "Categorie burs"
FROM ELEVI a, BURSE b
WHERE a.ID_BURSA=b.id
GROUP BY b.tip;
WHERE A.ID_REGIZORI=B.ID

Problema 19 (Buburuzan Iulian, Ghenghea Mihai)


Pentru a se ine evidena intrrilor i ieirilor din ar a fost conceput un sistem informatic care nregistreaz pentru fiecare
trecere prin vam urmtoarele date: numrul autoturismului, numele conductorului auto, numrul de persoane din
autoturism, dac autoturismul intr sau iese din ar (intr - I, iese - E) i data calendaristic la care autoturismul a tranzitat
prin vam. Diagrama ER care descrie scenariul de mai sus este:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.

CREATE TABLE vami (id_vama VARCHAR2(4)PRIMARY KEY,


nume_vama VARCHAR2(30) NOT NULL,
judet VARCHAR2(30) NOT NULL)
INSERT INTO vami VALUES(102,'Moravita','Timis')
INSERT INTO vami VALUES(104,'Bors','Bhor')
INSERT INTO vami VALUES(100,'Siret','Suceava')
INSERT INTO vami VALUES(105,'Cenad','Timis')
INSERT INTO vami VALUES(101,'Nadiac','Arad')
INSERT INTO vami VALUES(103,'Ruse','Giurgiu')
CREATE TABLE treceri (id_trecere VARCHAR2(4) PRIMARY KEY,
nr_autoturism VARCHAR2(9) NOT NULL,
cond_auto VARCHAR2(30) NOT NULL,
nr_persoane NUMBER(3) NOT NULL,
tip VARCHAR2(1) CHECK (tip IN ('I','E')),data DATE NOT NULL,
id_vama VARCHAR2(4) REFERENCES vami(id_vama))
INSERT INTO treceri VALUES(12,'SV09MNN','Mihai Olga',3,'I','12-MAR-11',102)
INSERT INTO treceri VALUES(14,'VS08AAT','Ignatescu Corina',3,'E','10-FEB-11',102)
INSERT INTO treceri VALUES(16,'IS09RRE','Juravle Marcel',4,'I','12-MAY-11',102)
INSERT INTO treceri VALUES(19,'CJ11QQW','Albota Cristina',3,'E','29-AUG-11',101)
INSERT INTO treceri VALUES(20,'MM07SSW','Manciu Emanuel',2,'I','11-APR-11',101)
INSERT INTO treceri VALUES(13,'TM12XYY','Corlatean Mircea',1,'E','09-JAN-10',100)
INSERT INTO treceri VALUES(15,'MM06JST','Macovei Tiberiu',5,'I','10-Feb-11',105)
INSERT INTO treceri VALUES(17,'CJ11YYW','Boca Emiliana',5,'E','22-JUN-10',103)
INSERT INTO treceri VALUES(18,'VS02UUF','Crainiciuc Teodora',1,'I','29-AUG-11',102)
INSERT INTO treceri VALUES(21,'IS10UTY','Soroceanu Mircea',3,'E','23-OCT-10',102)
b)Afiai lista conductorilor care au tranzitat prin vama Moravia n anul 2011.

SELECT a.cond_auto FROM treceri a, vami b

WHERE a.id_vama=b.id_vama AND upper(b.nume_vama)='MORAVITA'


AND substr(to_char(a.data,'dd mm yyyy'),7,4)='2011'
c)S se afieze numarul de persoane care au trecut prin fiecare vam.

SELECT sum(a.nr_persoane),b.nume_vama FROM treceri a, vami b


WHERE a.id_vama=b.id_vama
GROUP BY b.nume_vama
Problema 20 ( Obreja Vlad, Rosca Claudia)
Pentru o bun gestionare a activitii aeroportului din Suceava, s-a conceput un sistem informatic care prelucreaz
urmtoarele date: data la care este efectuat zborul, ruta pe care se desfoar zborul, ora de plecare, durata zborului, tipul
zborului (intern, internaional), firma creia i aparine avionul. Un avion aparinnd unei firme poate zbura pe mai multe
rute dar o rut de zbor este acoperit de o singur firm. Diagrama ER care descrie scenariul de mai sus este:

a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai numrul de zboruri interne i numrul de zboruri internaionale ce se nregistreaz pe aeroportul din Suceava.
c) S se afieze destinaiile distincte ale zborurilor interne i numele firmelor ce dein avioanele respective.
Tabela FIRME

Tabela ZBORURI

Cerinta b:

Cerinta c:

Cerina a:
CREATE TABLE firme(id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL)
INSERT INTO firme VALUES(12, 'Tarom')
INSERT INTO firme VALUES(17, 'Altalia')
INSERT INTO firme VALUES(14, 'Luthanasa')
INSERT INTO firme VALUES(15, 'Swiss')
INSERT INTO firme VALUES(16, 'Austian airlines')
CREATE TABLE zboruri(id NUMBER(3) PRIMARY KEY,
data DATE NOT NULL,
ruta VARCHAR2(100) NOT NULL,
ora VARCHAR2(5) NOT NULL,
durata VARCHAR2(5) NOT NULL,
tip VARCHAR2(15) CHECK (tip IN('Intern', 'International')),
id_firma NUMBER(3) REFERENCES firme(id)
INSERT INTO zboruri VALUES(1, 02-Sept-2010, 'Suceava-Madrid',12;30, 2,'International',15 )
INSERT INTO zboruri VALUES(2, 02-Oct-2010, 'Suceava-Bucuresti', 12:35, 1, 'Intern',12)
INSERT INTO zboruri VALUES(6, 13-Jan-2011, 'Suceava-Timisoara', 07:00, 1:30, 'Intern',12)
INSERT INTO zboruri VALUES(8, 06-Mar-2012, 'Suceava-Varsovia', 10:11, 1:45, 'International',15)
INSERT INTO zboruriVALUES (3,19-Oct-2010, 'Suceava-Bratislava', 11:35, 1:39, 'International'17)
INSERT INTO zboruri VALUES(4, 20-Dec-2010, 'Suceava-Bucuresti', 09:35, 1, 'Intern',12)
INSERT INTO zboruri VALUES(5, 11-Jan-2011, 'Suceava-Paris', 21:35,3,'International',14)
INSERT INTO zboruri VALUES(7, 01-Jan-2012, 'Suceava-Cluj', 08:00, 'Intern', 12);
Cerina b:
SELECT count(id) AS "Numar zboruri",tip FROM zboruri
GROUP BY tip;
Cerina c:
SELECT DISTINCT initcap(substr(a.ruta,instr(a.ruta,'-')+1)) AS "Destinatii interne", b.nume
FROM zboruri a, firme b
WHERE a.id_firma=b.id AND upper(a.tip)='INTERN'

Problema 21 (Nutu Diana, Pascovici Veronica, Varvaroi Maria)


Pentru a-i gestiona eficient activitatea, librria Alexandria, folosete un sistem informatic bazat pe dou entiti:
rechizite i vnzare. Pentru fiecare tip de rechizite se reine numele produsului i preul produsului iar pentru fiecare
vnzare se reine data la care s-a efectuat vnzarea produsului i cantitatea n care acesta s-a vndut. O vnzare
nregistreaz un singur produs vndut, iar un produs poate fi obiectul mai multor vnzri. Diagrama ER care descrie
scenariul de mai sus este:
Cerine:
a)
Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
b)
Afiai produsele pe care le ofer librria n ordinea descresctoare a preului.
c)
S se afieze pentru fiecare produs cantitile n care acestea s-au vndut.

CREATE TABLE rechizite


(id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(30) NOT NULL,
pret NUMBER(4,2) NOT NULL)
INSERT INTO rechizite VALUES(2, 'caiet romana' , 2.8)
INSERT INTO rechizite VALUES(4, 'caiet studentesc romana ' , 4.2)
INSERT INTO rechizite VALUES(7, 'tempera ' , 40.5)
INSERT INTO rechizite VALUES(3, 'pix', 1)
INSERT INTO rechizite VALUES(5, 'invelitori caiet ' ,5)
INSERT INTO rechizite VALUES(6, 'stilou', 9)

CREATE TABLE vanzari (id NUMBER(3) PRIMARY KEY,


data DATE NOT NULL,
cantitate NUMBER(3),
id_produs NUMBER(3) REFERENCES rechizite(id))
INSERT INTO vanzari VALUES( '12', '10-mar-2012','10','7')
INSERT INTO vanzari VALUES( '13', '15-mar-2012','10','6')
INSERT INTO vanzari VALUES( '17', '12-sep-2012','100','2')
INSERT INTO vanzari VALUES( '10', '12-feb-2012','5','3')
INSERT INTO vanzari VALUES( '11', '08-feb-2012','20','2')
INSERT INTO vanzari VALUES( '14', '20-mai-2012','50','4')
INSERT INTO vanzari VALUES( '15', '23-feb-2012','10','3')
INSERT INTO vanzari VALUES( '16', '30-apr-2012','20','5')
b) SELECT NUME,PRET
FROM RECHIZITE ORDER BY PRET DESC;
c)SELECT a.nume, SUM(b.cantitate)
FROM rechizite a, vanzari b
WHERE A.ID=B.ID_PRODUS GROUP BY a.nume

Problema 22 (Buburuzan Iulian, Ghenghea Mihai)


O agenie de turism gestioneaz excursiile pe care le organizeaz folosind un sistem informatic ce se bazeaz pe dou
entiti: excursie i turist. Pentru o excursie se reine destinaia, data de plecare, durata msurat n numr de zile i
preul excursiei. Pentru un turist se reine numele, adresa, i dac a achitat sau nu costul cltoriei (A dac a achitat
preul cltoriei i N dac nu a achitat preul cltoriei). Diagrama ER care descrie scenariul de mai sus este:

a)Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.

CREATE TABLE excursii(id number(3) PRIMARY KEY,


destinatia varchar2(100) NOT NULL,
data_plecarii date NOT NULL,
durata number(3) NOT NULL,
pret number(4) NOT NULL
)
INSERT INTO excursii
VALUES (2,'Tunisia','20-dec-2012',10,1200)
INSERT INTO excursii
VALUES (3,'Busteni','29-dec-2012',5,700)
INSERT INTO excursii
VALUES (7,'Paris','20-mar-2013',7,1150)
INSERT INTO excursii
VALUES (4,'Egipt','09-ian-2013',10 ,1200)
INSERT INTO excursii
VALUES (5,'Mangalia','29-dec-2012',7 ,900)

INSERT INTO excursii


VALUES (6,'Maramures','10-dec-2012',7 ,400)

CREATE TABLE turisti


(id number(3) PRIMARY KEY,
nume varchar2(50) NOT NULL,
adresa varchar2(100) NOT NULL,
achitat varchar2(1),
id_excursie number(3) references excursii(id)
)
INSERT INTO turisti
VALUES (13,'Miron Nicolae','Cluj','N',3)
INSERT INTO turisti
VALUES (14,'Manole Corina','Motru','A',2)
INSERT INTO turisti
VALUES (16,'Amariei Matei','Constanta','N',3)
INSERT INTO turisti
VALUES (17,'Tanase Roxana','Valcea','A',6)
INSERT INTO turisti
VALUES (10,'Pavelescu Ioan','Craiova','A',2)
INSERT INTO turisti
VALUES (11,'Minculescu Maria','Bucuresti','A',6)
INSERT INTO turisti
VALUES (12,'Corlatean Ana','Bistrita','N',5)
INSERT INTO turisti
VALUES (15,'Cristea Ion','Brasov','A',3)
b)Afiai destinaia i durata excursiilor a cror denumire ncepe cu o consoan i au o durat mai mic de 10 zile.

SELECT destinatia, durata FROM excursii


WHERE upper(substr(destinatia,1,1)) NOT IN ('A','E','I','O','U') AND durata<10
c) S se afieze toate destinaiile excursiilor, n ordine alfabetic i pentru fiecare excursie participanii n ordine
alfabetic descresctoare.

SELECT initcap(a.destinatia)AS destinatii, initcap(b.nume) AS participanti FROM excursii a, turisti b


WHERE a.id=b.id_excursie
ORDER BY a.destinatia,b.nume desc

Problema 23(Ilie Gabriel si Vlaescu Cezar)


ntr-un atelier auto fiecare main este reparat de un singur mecanic, ntr-o singur zi. Un mecanic poate repara mai
multe maini, ns o main va fi reparat ntotdeauna de acelai mecanic. Pentru fiecare mecanic trebuie re inute
urmtoarele date: cnp, nume, prenume, data angajrii, numrul de telefon i, op ional, email-ul. Pentru fiecare ma in se
vor reine: numrul de nmatriculare, data reparaiei, marca, modelul, pre ul repara iei, numele i numrul de telefon al
proprietarului. Modelul ERD corespunztor unei aplicaii informatice capabil s in eviden a atelierului este:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b) Afiai alfabetic mecanicii care au efectuat repara ii n data de 01-05-2013. Se va afia i numrul de telefon al
mecanicului.
c) Care este suma total pltit la atelier de proprietarul Ionescu Vasile de-a lungul timpului?
a. CREATE TABLE MECANICI
(
CNP NUMBER(13) PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(20) NOT NULL,
DATA_ANG DATE NOT NULL,
NR_TEL NUMBER NOT NULL,
EMAIL VARCHAR2(30)
);
INSERT
INTO
MECANICI
values(2851211001122,'Grigorean','Adelina','01-MAY2007',0755001133,'g.adelina@gmail.com')
INSERT
INTO
MECANICI
values(1820225332211,Ionescu,Vasile,01-JAN-2003,0755111222,
'ionescu.vasile@yahoo.com')
INSERT INTO MECANICI values(1870725332211,'Rusu','Andrei','01-JUN-2007',0755221100,NULL)
INSERT
INTO
MECANICI
values(2870725332211,'Rusu','Andreea','01-JUN2007',0755221155,'rusu.andreea@yahoo.com')
INSERT INTO MECANICI values(1880522116677,'Brutaru','Paul','01-JUN-2009',0755223311,'b.paul@gmail.com')
INSERT INTO MECANICI values(2900101778899,'Amariei','Georgiana','01-DEC-2011',0755001188,NULL)
CREATE TABLE MASINI
(
NR_INMAT VARCHAR2(20) NOT NULL,

DATA_REP DATE NOT NULL,


CNP_MEC NUMBER(13) REFERENCES MECANICI(CNP),
MARCA VARCHAR2(20) NOT NULL,
MODEL VARCHAR2(20) NOT NULL,
PRET NUMBER NOT NULL,
NUME_PROP VARCHAR2(20) NOT NULL,
TEL_PROP NUMBER NOT NULL,
PRIMARY KEY(NR_INMAT, DATA_REP)
)
INSERT INTO MASINI values (01-SV-AAA',01-MAY-2013,1820225332211,Dacia,Logan,100,Alexa
Marius,0744112233)
INSERT
INTO
MASINI
values
('01-SV-AAA','20-DEC-2013',2851211001122,'Dacia','Logan',200,'Alexa
Marius',0744112233)
INSERT
INTO
MASINI
values
('03-SV-BBB','01-MAY-2013',1880522116677,'Fiat','Linea',300,'Ionescu
Vasile',0755112299)
INSERT
INTO
MASINI
values
('12-VS-AAA','01-MAY-2013',2900101778899,'Opel','Astra',200,'Vasile
Irina',0722112233)
INSERT
INTO
MASINI
values
('03-SV-AAA','12-MAR-2013',2851211001122,'Fiat','Linea',500,'Ionescu
Vasile',0755112299)
INSERT
INTO
MASINI
values
('09-MS-HHH','12-MAR-2013',1870725332211,'Ford','Focus',2000,'Salcea
Mihai',0722776654)
b) SELECT A.NUME, A.PRENUME, A.NR_TEL
FROM MECANICI A, MASINI B
WHERE A.CNP=B.CNP_MEC AND B.DATA_REP=01-MAY-2013 ORDER BY A.NUME
c) SELECT SUM(PRET) AS SUMA TOTALA FROM MASINI WHERE NUME_PROP=Ionescu Vasile

Problema 24 (Andrei Birgovan, Sorin Solcan)


a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n
ERD. Populai tabelele cu nregistrri relevante pentru cerinele urmtoare.

CREATE TABLE TRADUCATORI


(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARC HAR2(20) NOT NULL,
DATA_NAST DATE NOT NULL,
NR_TEL NUMBER NOT NULL,
EMAIL VARCHAR2(30)

);
INSERT INTO TRADUCATORI values(1820225332211,'Ionescu','Vasile','01-JAN-2003',0755111222,
'ionescu.vasile@yahoo.com ')
INSERT INTO TRADUCATORI values(2851211001122, 'popa', 'Aurelia', '01-may-1987', 0755001133, '-' )
INSERT INTO TRADUCATORI values(1870725332211,'Rusu', 'Andrei', '01-MAY-1976', 0755221100,
'rusu.andrei@yahoo.com)
INSERT INTO TRADUCATORI values(2870725332211, 'Rusu','Andreea', '01-MAY-1976', 0755221155,
'rusu.andeea@yahoo.com)
INSERT INTO TRADUCATORI values(1880522116677, 'Scutaru', 'Paul', '01-MAY-1990', 0755223311,
's.paul@hmail.com')
INSERT INTO TRADUCATORI values(2900101778899, 'Amariei', 'Georgiana', '01-DEC-1991', 0755001188, '-')
CREATE TABLE TRADUCERI
(
ID NUMBER PRIMARY KEY,
CNP_TRAD NUMBER REFERENCES TRADUCATORI(CNP)
NR_PAG NUMBER NOT NULL
PRET_PAG NUMBER NOT NULL
LIMBA VARCHAR2(20) NOT NULL,
DATA_EFECT DATE NOT NULL
);

select * from traduceri


INSERT INTO TRADUCERI values (1, 2851211001122, 23, 10, RO-FR, 23-OCT-2012)
INSERT INTO TRADUCERI values(1, 2851211001122, 23, 10, 'RO-FR',' 23-OCT-2012')
INSERT INTO TRADUCERI values(2, 1870725332211, 56, 9, 'FR-RO', '29-OCT-2012')
INSERT INTO TRADUCERI values (3, 2900101778899, 8, 12, 'RO-EN', '02-MAR-2013')
INSERT INTO TRADUCERI values (4, 2851211001122, 120, 8, 'RO-FR', '01-MAY-2013')
INSERT INTO TRADUCERI values (5, 2870725332211, 15,11,'EN-RO','20-APR-2013')
INSERT INTO TRADUCERI values (6,1880522116677,20,10,'FR-EN','20-APR-2013')
b) Afiai alfabetic numele, prenumele i numrul de telefon al traductorilor de
limba francez.
SELECT DISTINCT A.NUME, A.PRENUME, A.NR_TEL
FROM TRADUCATORI A, TRADUCERI c
WHERE A.CNP=c.CNP_TRAD AND (c.LIMBA LIKE 'FR%' OR c.LIMBA LIKE '%FR') ORDER BY A.NUME
c) Care este impozitul pe care trebuie s-l plteasc pe suma total ncasatde
traductoarea Popa Aurelia?
SELECT (16/100)*sum(b.pret_pag*b.nr_pag) as "IMPOZIT"
FROM traducatori a, traduceri b
WHERE a.cnp=b.cnp_trad and a.nume='POPA' and a.prenume='Aurelia'

Problema 25 (Alex Virvara, Nicu Ucrainet)


La un oficiu potal este inut evidena abonamentelor la diverse publicaii (reviste). La fiecare publicaie pot fi abonate
una sau mai multe persoane. Pentru a gestiona mai uor aplicaia, informaticianul a creat i tabela ABONAMENTE cu
informaii despre fiecare abonament ncheiat. Pentru fiecare revist se cunoate titlul i preul (n baza de date se
memoreaz preul fr TVA), dar dat fiind faptul c uneori, publica iile pot avea acelai nume, fiecrei publicaii i s-a
asociat un numr de identificare unic. Unele dintre revistele la care se pot face abonamente sunt: PC Magazin, Chip,
Agora, Bravo.
Diagrama ER care descrie scenariul de mai sus este:

Cerine:
a) Construiti baza de date cu tabele corespunzatoare si relatiile reprezentate n ERD. Popula i tabelele cu nregistrari
relevante pentru cerinele urmtoare.
b) Afiai lista persoanelor abonate la publicaiile din domeniul IT, ordonat alfabetic dupa nume.
c) Afiai lista publicaiilor la care se pot face abonamente, ntr-un tabel care va avea urmatoarea form:
CREATE TABLE PUBLICATII
(
ID NUMBER PRIMARY KEY,
TITLU VARCHAR2(20) NOT NULL,
PRET NUMBER NOT NULL,
DOMENIU VARCHAR2(30) NOT NULL
);
INSERT INTO publicatii values(101,'PC Magazin',7,'IT')
INSERT INTO publicatii values(104,'Chip',8,'IT')
INSERT INTO publicatii values(102,'Agora',7,'IT')
INSERT INTO publicatii values(103,'One',11,'Monden')
INSERT INTO publicatii values(105,'Bravo',6,'Magazin')
SELECT * FROM PUBLICATII
ORDER BY id

CREATE TABLE ABONAMENTE


(
COD NUMBER PRIMARY KEY,
DATA DATE NOT NULL,
DURATA NUMBER NOT NULL,
NUME VARCHAR2(20) NOT NULL,
IDP NUMBER REFERENCES PUBLICATII(ID)
);

INSERT INTO abonamente values (13,'17-DEC-2005',7,'Popescu Dan',103)


INSERT INTO abonamente values (11,'25-OCT-1989',8,'Dumitrescu Vlad',101)
INSERT INTO abonamente values (12,'01-NOV-2000',15,'Ionescu Mihai',102)
INSERT INTO abonamente values (14,'12-JUL-2007',12,'Georgescu Mara',101)
INSERT INTO abonamente values (15,'15-JAN-1997',5,'Ionescu Ana',105)
SELECT * FROM abonamente
ORDER BY COD

b)SELECT B.NUME, A.TITLU, A.DOMENIU


FROM PUBLICATII A, ABONAMENTE B
WHERE A.ID=B.IDP AND A.DOMENIU='IT' ORDER BY B.NUME

c)SELECT titlu as "Titlul publicatie", domeniu as "Domeniul tratat", pret as "Pretul", pret*1.19 as "Pretul cu TVA"
FROM PUBLICATII
Problema 26 (Lazareanu Sabina, Miftode Ana)
ntr-o instituie colar sunt memorate ntr-un catalog virtual toate notele elevilor. Pentru acest lucru, informaticianul a
creat o baz de date n care a inclus informaii despre elevi (numele, prenumele, CNP-ul acestuia), precum i notele
fiecrui elev. Este important s se cunoasc data la care a fost pus o not, pentru a se putea urmri frecvena notrii.
Diagrama ERD care descrie scenariul de mai sus este:
a. Construii baza de date cu tabele corespunztoare i relaiile reprezentate in ERD i populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
a) CREATE TABLE ELEVI
(
CNP NUMBER PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL,
PRENUME VARCHAR2(30) NOT NULL
);
INSERT INTO ELEVI VALUES(1234567891234, 'Popescu', 'Dan')
INSERT INTO ELEVI VALUES(2345678912345, 'Ionescu', 'Adrian')
INSERT INTO ELEVI VALUES(3456789123456, 'Dumitrescu', 'Crina')
INSERT INTO ELEVI VALUES(4567891234567, 'Ionescu', 'Catalin')
INSERT INTO ELEVI VALUES(5678912345678, 'Georgescu', 'Emil');
CREATE TABLE NOTE
(
DATA DATE NOT NULL,
CNP_ELEV NUMBER REFERENCES ELEVI(CNP),
PRIMARY KEY(DATA,CNP_ELEV),
NOTA NUMBER NOT NULL,
MATERIA VARCHAR2(20) NOT NULL,
OBSERVATII VARCHAR2(20)
);
GHILIMELE LA DATA
INSERT INTO NOTE VALUES(05-MAR-2010, 1234567891234, 9, 'informatica', '-')
INSERT INTO NOTE VALUES(15-OCT-2009, 5678912345678, 9,
'matematica', '-')
INSERT INTO NOTE VALUES(10-MAR-2010, 3456789123456, 7, 'fizica', '-')

INSERT INTO NOTE VALUES(12-OCT-2009, 2345678912345, 10,


'chimia', '-')
INSERT INTO NOTE VALUES(06-OCT-2009, 4567891234567, 10,
'informatica', '-')
INSERT INTO NOTE VALUES(05-MAR-2010, 4567891234567, 8, 'informatica', '-');
b) Afiai numele, prenumele i notele elevilor care au fost evaluai n luna martie 2010 la o materie a crei denumire se
citete de la tastatur.
AND B.MATERIA=:DISCIPLINb) SELECT A.NUME, A.PRENUME, B.MATERIA, B.NOTA, B.DATA
FROM ELEVI A, NOTE B
WHERE A.CNP=B.CNP_ELEV AND
DATA BETWEEN '01-MAR-2010' AND '31-MAR-2010'
A;
c) Determinai media notelor obinute la informatic n anul 2010.
ds
c) SELECT AVG(NOTA) AS "MEDIA NOTELOR"
FROM NOTE
WHERE MATERIA='INFORMATICA' AND DATA>=01-JAN-2010 AND DATA<=31-DEC-2010;
Problema 27(Ulian Anca si Nistoroaie Ioana)
ntr-o instituie colar sunt n desfurare mai multe proiecte (parteneriate cu alte coli din strintate,
concursuri, tabere etc). n cadrul proiectelor sunt implicai att profesori ct i elevi (difereniai n baza de date prin
atributul mandatoriu statut), pe care i vom numi ntr-un cuvnt participani. Pentru fiecare proiect trebuie s se cunoasc
data nceperii, titlul i durata desfurrii acestuia. De asemenea, este important bugetul alocat.
Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD i populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
b) Bugetul proiectelor va fi mrit cu 10%. Creai o interogare care va afia denumirea fiecrui proiect, bugetul
actual si noul buget. Interogarea va cuprinde 3 coloane cu titlul Denumirea proiectului, Buget vechi, Buget nou.
c)Afiai denumirea i data nceperii proiectelor care au nceput din anul 2009.
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD i populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
create table proiecte
(
id number(2) primary key not null,
denumire varchar2(20) not null,
data_in date not null,
buget number(6) not null,
observatii varchar2(50) not null
)
insert into proiecte values(11, 'Pro natura',
'15-Jan-2009', 1000, 'international')
insert into proiecte values(12, 'Eco oras',
'08-Apr-2008', 8500, 'local')
insert into proiecte values(13, 'Eco judet',
'05-Jan-2010', 15000, 'judetean')
insert into proiecte values(14, 'Ecologie',
'23-Oct-2009', 350,
'regional')
insert into proiecte values(15, 'Eco scoala',
'14-Aug-2008',
14700, 'international')
SELECT * FROM proiecte
ORDER BY id
create table participanti
(
id number(3) not null,
id_proiect number(2) references proiecte(id) not null,
nume varchar2(30) not null,
prenume varchar2(20) not null,
staut varchar2(30) not null
)
insert into participanti values(111,
13,
'Popescu',
'George',
'elev')

insert into participanti values(222, 11,


'Ionescu',
'Ana',
'profesor')
insert into participanti values(333, 15,
'Dumitrescu', 'Carmen',
'profesor')
insert into participanti values(444, 14,
'Costescu',
'Nicu', 'profesor')
insert into participanti values(555, 11,
'Ionescu',
'Mircea',
'profesor')
select * from participanti
ORDER BY id
b) Bugetul proiectelor va fi mrit cu 10%. Creai o interogare care va afia denumirea fiecrui proiect, bugetul actual si
noul buget. Interogarea va cuprinde 3 coloane cu titlul Denumirea proiectului, Buget vechi
SELECT denumire as "Denumirea proiectului", buget as "Buget vechi", buget*1.1 as "Buget nou"
FROM PROIECTE
c)Afiai denumirea i data nceperii proiectelor care au nceput din anul 2009.
SELECT DENUMIRE, TO_CHAR(data_in, 'DD-MM-YYYY') AS "DATA IN" FROM PROIECTE WHERE
data_in>='01-Jan-2009'

Problema 28 (
O baza de date conine informaii despre elevii unei coli i dirigin ii acestora. Fiecare diriginte ndrum unul sau mai
muli elevi, fiecare elev este ndrumat de un singur diriginte. Diagrama ERD ce modeleaz situa ia este dat n figura:
Cerine:
a)
Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD i populai tabelele cu nregistrri
relevante pentru cerinele urmtoare.
b)
Afiai specializrile profesorilor care sunt dirigini. Dac exist 2 profesori cu aceeai specializare, aceasta va fi
afiat o singur dat.
c)
Afiai n ordine alfabetic elevii care au ca dirigini profesori a cror specializare o citii de la tastatur.
CREATE TABLE diriginti28
(
id NUMBER(3) PRIMARY KEY,
nume VARCHAR2(40) NOT NULL,
prenume VARCHAR2(40) NOT NULL,
specializare VARCHAR2(20) NOT NULL
)
INSERT INTO diriginti28 VALUES(11, 'Alexa', 'Adriana', 'matematica')
INSERT INTO diriginti28 VALUES(12, 'Melinte', 'Daniel', 'chimie')
INSERT INTO diriginti28 VALUES(13, 'Donciu', 'Elena', 'fizica')
INSERT INTO diriginti28 VALUES(14, 'Zlotari', 'Vlad', 'fizica')
INSERT INTO diriginti28 VALUES(15, 'Enache', 'Sorin', 'informatica')
INSERT INTO diriginti28 VALUES(16, 'Ratiu', 'Angela', 'informatica')
SELECT * FROM diriginti28
ORDER BY id
CREATE TABLE elevi28

(
id NUMBER(3) PRIMARY KEY,
id_diriginte NUMBER(3) REFERENCES diriginti28(id) NOT NULL,
nume VARCHAR2(40) NOT NULL,
prenume VARCHAR2(40) NOT NULL,
clasa VARCHAR2(10) NOT NULL
)
INSERT INTO elevi28 VALUES(100, 12, 'Radulescu', 'Vasile', '9B')
INSERT INTO elevi28 VALUES(101, 15, 'Luculescu', 'Didina', '11C')
INSERT INTO elevi28 VALUES(102, 14, 'Manolescu', 'Paula', '9C')
INSERT INTO elevi28 VALUES(103, 13, 'Oprescu', 'Bogdan', '9C')
INSERT INTO elevi28 VALUES(104, 16, 'Filipescu', 'Lorin', '10C')
SELECT * FROM elevi28
ORDER BY id
SELECT DISTINCT b.specializare
FROM elevi28 a, diriginti28 b
WHERE a.id_diriginte=b.id
SELECT a.nume, A.PRENUME, B.NUME AS "DIRIGINTE", B.SPECIALIZARE
FROM ELEVI28 A, DIRIGINTI28 B
WHERE A.ID_DIRIGINTE=B.ID AND SPECIALIZARE=:DISCIPLINA

Problema 29 (Ilie Gabriel, Vlaescu Cezar).


ntr-o baz de date se memoreaz informaii despre regizorii i filmele acestora. Fiecare regizor poate regiza unul sau mai
multe filme, dar fiecare film este regizat de un singur regizor. Durata filmului este exprimata n numr de minute (90, 120
sau mai mare de 120), iar bugetul este suma alocat producerii filmului.
a. Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD i populai tabelele cu
nregistrri relevante pentru cerinele urmtoare.
b. Afiai n ordine alfabetic toate filmele cu buget mai mic de 30000 de euro, precum i regizorul acestora (titlul
filmului, anul apariiei, bugetul i numele regizorului).
c. Afiai un raport care va cuprinde denumirea fiecrui film, numele regizorului i durata filmului astfel: dac
filmul dureaz 120 de minute afiai n coloana TIMP ALOCAT mesajul Durata e de 2 ore, daca dureaz90
afiati mesajul Obisnuit, altfel afiai Doua serii.
a)CREATE TABLE REGIZORI
(
ID NUMBER(3) PRIMARY KEY,
NUME VARCHAR2(20) NOT NULL
);
INSERT INTO regizori values (101,'Anthony Minghella')

INSERT INTO regizori values (102,'Danny Boyle')


INSERT INTO regizori values (103,'Roberto Benigni')
INSERT INTO regizori values (104,'Martin Scorsese')
INSERT INTO regizori values (105,'Curtis Hanson')
CREATE TABLE FILME
(
ID NUMBER(1) PRIMARY KEY NOT NULL,
ID_REGIZORI NUMBER(3) REFERENCES REGIZORI(ID),
TITLU VARCHAR2(40) NOT NULL,
DURATA NUMBER NOT NULL,
AN_APAR NUMBER(4) NOT NULL,
BUGET NUMBER NOT NULL
);
INSERT INTO FILME VALUES (1,101, Pacientul englez,120,2008, 50000)
INSERT INTO FILME VALUES (2,102,'Vagabondul milionar',180,2009,75000)
INSERT INTO FILME VALUES (3,103,'Viata e frumoasa',120,2008,25000)
INSERT INTO FILME VALUES (4,105,'8 mile',90,2009,70000)
INSERT INTO FILME VALUES (5,104,'Casino',180,2008,20000)
INSERT INTO FILME VALUES (6,104,'Aviatorul',90,2009,10000)
SELECT A.TITLU, A.AN_APAR, A.BUGET, B.NUME
FROM FILME A, REGIZORI B
WHERE A.ID_REGIZORI=B.ID AND A.BUGET<30000
SELECT a.titlu, b.nume, a.durata, decode(a.durata,120,'Durata e de 2 ore',180,'Doua serii','Obisnuit') as "Timp alocat"
FROM FILME A, REGIZORI B
WHERE A.ID_REGIZORI=B.ID

Problema 30 (Ulian Anca, Nistoroaie Ioana)


Informaiile referitoare la profesorii unei coli sunt gestionate cu ajutorul unei aplicaii ce are la baz dou entiti: ARIE i
PROFESOR. Pentru fiecare profesor se cunoate: numele, data naterii, salariul i codul ariei curriculare din care face
parte. Doar unii profesori primesc premiu. Codul ariei curriculare este un numr format din dou cifre.

Cerine:
a) Construii baza de date cu tabele corespunztoare i relaiile reprezentate n ERD. Popula i tabelele cu nregistrari
relevante pentru cerinele urmtoare.
b) Afiai toi profesorii, mpreun cu salariul, care fac parte din aria curricular Stiinte i care nu primesc premiu.
c) Afiai salariului minim i maxim pentru fiecare arie curricular.

Tabela ARII
COD_ARIE

DENUMIRE

11

Stiinte

12

Tehnologii

13

Om si societate

14

Consiliere

15

Limba si comunicare

Tabela PROFESORI
ID

COD_ARIE

NUME

DATA_NAST

SALARIU

PREMIU

12

Pop Ana

15-04-1971

1124

da

11

Alexa Dan

29-12-1952

2139

nu

11

Mihoc Vlad

01-02-1949

2314

nu

11

Damian Alex

11-08-1954

2247

da

15

Rusu Alin

19-03-1952

2432

nu

11

Ursu Didina

14-11-1965

1453

nu

Cerina b:
NUME

SALARIU

DENUMIRE

Alexa Dan

2139

Stiinte

Mihoc Vlad

2314

Stiinte

Ursu Didina

1453

Stiinte

Cerina c:
COD_ARIE

MAX(SALARIU)

MIN(SALARIU)

11

2314

1453

12

1124

1124

15

2432

2432

a)CREATE TABLE ARII


(
COD_ARIE NUMBER PRIMARY KEY,
DENUMIRE VARCHAR(30) NOT NULL
);
INSERT INTO ARII VALUES(11,'Stiinte')
INSERT INTO ARII VALUES(12,'Tehnologii')
INSERT INTO ARII VALUES(13,'Om si societate')
INSERT INTO ARII VALUES(14,'Consiliere')
INSERT INTO ARII VALUES(15,'Limba si comunicare')
CREATE TABLE PROFESORI
(
ID INTEGER PRIMARY KEY,
1COD_ARIE NUMBER(5) REFERENCES ARII(COD_ARIE),
NUME VARCHAR2(20) NOT NULL,
DATA_NAST DATA NOT NULL,
SALARIU NUMBER(10) NOT NULL,
PREMIU VARCHAR2(4)
);
INSERT INTO PROFESORI VALUES(1,12,'Pop Ana','15-04-1971',1124,'da')
INSERT INTO PROFESORI VALUES(2,11,'Alexa Dan','29-12-1952',2139,'nu')
INSERT INTO PROFESORI VALUES(3,11,'Mihoc Vlad','01-02-1949',2314,'nu')
INSERT INTO PROFESORI VALUES(4,11,'Damian Alex','11-08-1954',2247,'da')
INSERT INTO PROFESORI VALUES(5,15,'Rusu Alin','19-03-1952',2432,'nu')
INSERT INTO PROFESORI VALUES(6,11,'Ursu Didina','14-11-1965',1453,'nu')
b)SELECT B.NUME, B.SALARIU, A.DENUMIRE
FROM ARII A, PROFESORI B

WHERE A.COD_ARIE AND A.DENUMIRE='Stiinte'


AND B.PREMIU='nu';
c)SELECT COD_ARIE, MAX(SALARIU),MIN(SALARIU)
FROM PROFESORI
GROUP BY COD_ARIE

Você também pode gostar