Documente Academic
Documente Profesional
Documente Cultură
-proiect-
Grupa 1040
Seria D
An II
Cuprins
Descrierea bazei de date............................................................................................................ 3
Operatii DDL............................................................................................................................... 5
CREATE TABLE...................................................................................................................... 5
ALTER TABLE......................................................................................................................... 7
DROP TABLE........................................................................................................................ 10
Operatii LMD............................................................................................................................. 11
INSERT.................................................................................................................................. 11
UPDATE................................................................................................................................ 16
DELETE................................................................................................................................. 18
Interogari................................................................................................................................... 20
SELECT................................................................................................................................. 20
INDECSI................................................................................................................................ 31
SECVENTE........................................................................................................................... 31
SINONIME............................................................................................................................. 33
2
Descrierea bazei de date
In baza de date sunt inregistrate banci care au sau nu filiale raspandite in tara,
clientii bancilor ca si titulari de conturi si imprumuturi facute de catre acestia la filialele
bancilor respective si sunt monitorizate conturile si imprumuturile pentru a putea obtine
anumite informatii necesare utilizatorului.
Descrierea legaturilor:
- O banca poate avea mai multe filiale, dar o filiala poate fi a unei singure banci.
- O filiala poate avea deschise mai multe conturi, dar un cont nu poate fi deschis
decat la o banca.
- O filiala poate incheia mai multe contracte de imprumut, dar un imprumut poate fi
realizat doar de o filiala.
- Un titular poate detine mai multe conturi, dar un cont nu poate avea decat un
singur titular.
- Un titular poate face mai multe imprumuturi, dar un imprumut nu poate fi realizat
decat de un singur titular.
- De aici rezulta o legatura indirecta intre titulari si filialele la care se deschid conturi
sau se realizeaza imprumuturi, putand fi posibila realizarea de imprumuturi si
deschiderea de conturi la mai multe filiale in acelasi timp.
3
Schema conceptuala a bazei de date
4
Operatii DDL: CREATE TABLE, ALTER TABLE, DROP TABLE
CREATE TABLE
Sa se creeze tabelele de mai sus cu atributele definite anterior.
denumire VARCHAR2(35),
adresa VARCHAR2(30),
localitate VARCHAR2(20),
telefon VARCHAR2(15)
);
den_filiala VARCHAR2(30),
adresa VARCHAR2(20),
localitate VARCHAR2(20),
telefon VARCHAR2(15)
);
5
CREATE TABLE titulari (
tip_titular VARCHAR2(15),
nume VARCHAR2(20),
prenume VARCHAR2(20),
cnp VARCHAR2(13),
adresa VARCHAR2(20),
localitate VARCHAR2(20),
telefon VARCHAR2(15),
email VARCHAR2(20)
);
tip_cont VARCHAR2(10),
data_deschidere DATE,
sold NUMBER(7,2),
moneda VARCHAR2(3)
);
6
CREATE TABLE imprumuturi (
tip_imprumut VARCHAR2(15),
data_deschidere DATE,
suma NUMBER(8,2),
moneda VARCHAR2(3),
);
ALTER TABLE
1. Adaugati o restrictie de validare coloanei ‘tip_titular’ a tabelei ‘titulari’ astfel incat sa nu
poata fi posibila introducerea altei valori decat “persoana fizica” sau “persoana juridica”
7
ADD CONSTRAINT ck_titular CHECK ( LOWER(tip_titular) IN (‘persoana
fizica’, ‘persoana juridica’));
FROM USER_CONSTRAINTS
FROM USER_CONSTRAINTS
8
4. Sa se adauge o restrictie de integritate pentru validarea coloanei ‘email’ a tabelei
‘titulari’.
5. Creati o noua tabela ‘banci_tara’ care sa contina toate bancile care nu au sediul central
in Bucuresti.
RENAME TO outside_bucuresti;
9
DROP TABLE
8. Sa se stearga tabela ‘outside_bucuresti’.
10
Operatii LMD: INSERT, UPDATE, DELETE
INSERT
Sa se adauge inregistrari in tabelele create.
INSERT INTO banci VALUES ( ‘BCR’, ‘Banca Comerciala Romana’, ’Bd. Regina nr.
24’, ’Bucuresti’, ’0214195050’);
INSERT INTO banci VALUES ( ‘ING’, ‘ING Bank’, ‘Sos. Kiseleff nr. 12’,
’Bucuresti’, ’0314003120’);
INSERT INTO banci VALUES ( ‘ALPHA’, ‘Alpha Bank’, ‘Str. Calea Vitan nr. 3’,
’Bucuresti’, ’0216654359’);
INSERT INTO banci VALUES ( ‘BRD’, ‘Banca Romana pentru Dezvoltare’, ‘Str.
Horatiu nr. 20’, ’Bucuresti’, ’0214536721’);
INSERT INTO banci VALUES ( ‘VOLKS’, ‘VOLKSBANK ROMANIA’, ‘Str. Mihai Bravu
nr. 10’, ’Bucuresti’, ’0314441907’);
INSERT INTO banci VALUES ( ‘PROC’, ‘ProCredit Bank’, ‘Str. Dristorului nr.
56’, ’Bucuresti’, ’0315431132’);
INSERT INTO banci VALUES ( ‘CITY’, ‘City Bank’, ‘Str. Unirii nr. 41’,
’Bucuresti’, ’0217655454’);
INSERT INTO banci VALUES ( ‘BPST’, ‘BANC POST’, ‘Str. Banu nr. 41’,
’Bucuresti’, ’0316548876’);
INSERT INTO banci VALUES ( ‘OTP’, ‘OTP BANK’, ‘Str. Miliarilor nr. 103’,
’Iasi’, ’02413247766’);
INSERT INTO banci VALUES ( ‘RBS’, ‘RBS Romania’, ‘Bd. Unirii nr. 41’,
’Brasov’, ’02374347865’);
11
TABELA FILIALE -> Contine 10 inregistrari
INSERT INTO filiale VALUES ( ‘BCRBUCAMZ’, ‘BCR’, ‘BCR Amzei’, ‘Str. Amzei
nr.15’, ‘Bucuresti’, ‘0213143276’);
INSERT INTO filiale VALUES ( ‘INGBUCUNI’, ‘ING’, ‘ING Bank Unirii’, ‘Bd.
Unirii nr.1’, ‘Bucuresti’, ‘0314215647’);
INSERT INTO filiale VALUES ( ‘BPSTCLPAN’, ‘BPST’, ‘BANC POST Panduri’, ‘Str.
Panduri nr.30’, ‘Calarasi’, ‘02425465434’);
INSERT INTO filiale VALUES ( ‘BPSTBUCUNR’, ‘BPST’, ‘BANC POST Unirii’, ‘Bd.
Unirii nr.10’, ‘Bucuresti’, ‘0316764443’);
INSERT INTO filiale VALUES ( ‘OTPARTAR’, ‘OTP’, ‘OTP BANK Tarnavelor’, ‘Bd.
Tarnavelor nr.3’, ‘Arad’, ‘02415643311’);
12
INSERT INTO titulari VALUES ( 446788, ‘persoana fizica’, ‘Popescu’, ‘Ion’,
‘1871218866345’, ‘Str. Unirii nr. 55’, ‘Bucuresti’, ‘0766633343’,
‘popion@yahoo.com’);
13
TABELA CONTURI -> Contine 12 inregistrari
14
TABELA IMPRUMUTURI -> Contine 12 inregistrari
15
UPDATE
1. Sa se adauge 3% din soldul actual tuturor celor care au conturi deschise inainte de
12 martie 2000 la bancile ING si BRD.
cod_filiala IN (
);
WHERE cod_filiala IN (
16
3. Sa se scada cu 10% valoarea imprumutului acordat titularilor care au incheiat
contractul de imprumut pe cel putin 90 de luni.
4. Sa se mareasca cu 15% soldul acelor conturi care au soldul mai mic decat media
soldurilor tuturor conturilor curente.
17
5. Sa se modifice soldul contului detinut de titularul cu codul 423534 cu soldul contului
detinut de titularul cu codul 876854.
DELETE
1. Sa se creeze o noua tabela numita ‘banci_temp’ care va contine toate bancile cu
sediul central in bucuresti, dupa care se vor sterge bancile care nu au nici o filiala
inregstrata in tabela ‘filiale’.
UPPER(localitate) = ‘BUCURESTI’;
18
DELETE FROM banci_temp
19
INTEROGARI
SELECT
20
WHERE t.cod_titular = i.cod_titular(+)
FROM conturi
5. Sa se afiseze numele titularului, codul contlui, soldul initial si soldul marit cu 10% pentru
sumele cuprinse intre 50 si 400 RON si cu 20% pentru sumele cuprinse intre 400 si
800.
21
CASE
ELSE c.sold
ROUND(MONTHS_BETWEEN(ADD_MONTHS(i.data_deschidere,120),SYSDATE),0)
nr_luni
22
7. Sa se afiseze codul imprumutului ,numele celui care a facut imprumutul si suma pentru
imprumutul care are suma mai mica decat cea mai mare suma existenta in tabela
imprumuturi.
HAVING COUNT(c.cod_titular) = 1
UNION
23
GROUP BY c.cod_titular, t.nume, t.prenume
HAVING COUNT(c.cod_titular) = 2
UNION
DECODE(DENUMIRE,'ACUMULATOR',0.9*PRET_DE_VANZARE,'MOTOR',0.8*PRET_DE_VANZARE
,PRET_DE_VANZARE) "PRET REDUS"
FROM imprumuturi;
24
10. Sa se afiseze numele, prenumele si numarul de conturi deschise pentru titularii
care detin cel putin 2 conturi iar suma soldurilor acelor conturi sa fie mai mare de 1000
RON.
INTERSECT
25
SELECT t.nume||’ ‘||t.prenume||’ este titularul a ‘||COUNT(c.cod_cont)||’
conturi’ “TITULARI”
FROM titulari
WHERE SUBSTR(cnp,1,1) = 2
MINUS
26
14. Sa se calculeze pentru fiecare cont dobanda anuala, reprezentand 14% din
valoarea soldului pentru solduri mai mari de 500 RON si 20% pentru solduri mai mici de
500 RON (se va folosi UNION).
UNION
15. Sa se selecteze imprumuturile facute intre 2005 si 2009, mai putin cele facute in
2008.
27
SELECT *
FROM imprumuturi
MINUS
SELECT *
FROM imprumuturi
16. Sa se afiseze informatii despre imprumuturile care s-au realizat in anul in care s-
au realizat cele mai multe imprumuturi.
FROM imprumuturi
28
FROM imprumuturi
MAX(COUNT(cod_imprumut))
FROM imprumuturi
);
29
Gestionarea altor obiecte ale bazei de date
30
INDECSI
1. Sa se creeze un index nou pe coloana ‘tip_titular’ din tabela ‘titulari’.
Index created.
Index dropped.
SECVENTE
1. Sa se creeze o secventa care incepe de la 6354655 cu limita 9999999999 cu pasul
8772. Aceasta secventa va fi folosita pentru generarea de coduri unice pentru atributul
‘cod_imprumut’ al tabelei ‘imprumuturi’.
3 INCREMENT BY 8772
4 MAXVALUE 9999999999
5 NOCYCLE;
Sequence created.
31
3. Sa se vizualizeze ultimul cod utilizat din secventa.
SELECT SECVENTA_IMPRUMUTURI.CURRVAL
FROM dual;
INCREMENT BY 10557;
Sequence dropped.
32
SINONIME
1. Sa se creeze un sinonim pentru tabela ‘filiale’.
Synonym created.
Synonym dropped.
33