Documente Academic
Documente Profesional
Documente Cultură
Tabelele firmei:
PRODUSE
Id_produs Denp
N(12)
C(20)
Pret
N(30)
SUCURSALA
Cod_s
N(2)
Nume
C(10)
Oras
C(12)
Adresa
C(30)
ABONATI
CNP
N(13)
Nume
C(10)
Prenum
e
C(20)
Telefon
C(10)
Email_a
C(30)
Adresa
C(30)
ANGAJATI
Id_ang
N(3)
Nume
C(10)
Prenume Cod_s
C(20)
N(3)
FACTURI
Nr_factur
a
N(12)
Dataf
D
CNP
N(13)
Id_ang
N(3)
Email
C(30)
Data_an
g
D
Salariu
N(3)
RAND_FACTURA
Nr_factur
a
N(12)
Id_produ
s
N(3)
Cantitate
N(3)
Oracle este un sistem de gestiune a bazelor de date complet relaional, extins, cu faciliti
din tehnologia orientat obiect (OO). Sistemul Oracle este realizat de firma Oracle Corporation
care a fost nfiinat n anul 1977 n SUA - California i acum este cel mai mare furnizor de
software de gestiunea datelor. Acesta este operaional pe toat gama de calculatoare (micro, mini,
mainframe) sub diverse sisteme de operare. Arhitectura sistemului este client/server, permnd
lucrul, cu obiecte i distribuit. Oracle se folosete pentru crearea aplicaiilor cu baze de date.
Limbajul SQL Structured Query Language este un limbaj standard de interogare a
bazelor de date. Implementat n majoritatea SGBD-urilor, dar nu numai. In ORACLE este
implementat nucleul SQL cu anumite particularitati.
Baza de date(BD) este un ansamblu de date organizat, coerent, structurat, n condiii de
redundan minim i controlat, accesibil mai multor utilizatori n timp util.
O entitate este un lucru, obiect, persoan sau eveniment care are semnificaie pentru
afacerea modelat, despre care trebuie s colectm i s memorm date. O entitate poate fi un
lucru real, tangibil precum o cldire, o persoan, poate fi o activitate precum o programare sau o
operaie, sau poate fi o noiune abstract.
Aadar, dup ce am identificat entitile trebuie s descriem aceste entiti n termeni reali,
adic s le stabilim atributele. Un atribut este orice detaliu care servete la identificarea,
clasificarea, cuantificarea, sau exprimarea strii unei instane a unei entiti. Atributele sunt
informaii specifice ce trebuie cunoscute i memorate.
De exemplu atributele entitii ANGAJATI sunt id-ul angajatului, numele ,prenumele,codul
sucursalei unde este angajati, adresa de email precum si data angajarii si salariul acestuia.
Atributele care definesc n mod unic instanele unei entiti se numesc identificator unic
(UID). UID-ul unei entiti poate fi compus dintr-un singur atribut, de exemplu codul numeric
personal poate fi un identificator unic pentru entitatea ABONATI. n alte situaii, identificatorul
unic este compus dintr-o combinaie de dou sau mai multe atribute. Atributele care fac parte din
identificatorul unic al unei entiti vor fi precedate de semnul diez #.
O relaie este o asociere, legtur, sau conexiune existent ntre entiti i care are o
semnificaie pentru afacerea modelat. Orice relaie este bidirecional, legnd dou entiti sau o
entitate cu ea nsi.
n Oracle exist restricii care se impun tabelelor. Acestea sunt structurale i comportamentale.
Restriciile structurale sunt:
Restricia de unicitate a cheii. ntr-o tabel nu trebuie s existe mai multe tupluri cu
aceeai valoare pentru ansamblul cheie;
Restricia externa. Intr-o tabel t1 care refer o tabel t2, valorile cheii externe trebuie
s figureze printre valorile cheii primare din t2 sau s ia valoarea null (neprecizat);
Restricia entitii. Intr-o tabel, atributele din cheia primar nu trebuie s ia valoarea
NULL.
Restriciile de comportament sunt cele care se definesc prin comportamentul datelor i in
cont de valorile din BDR:
Restricia de domeniu. Domeniul corespunztor unui atribut dintr-o tabel trebuie s se
ncadreze ntre anumite valori;
Restriciile de comportament fiind foarte generale se gestioneaz fie la momentul
descrierii datelor (de exemplu prin clauza CHECK), fie n afara modelului la momentul
execuiei.
Restriciile de integritate suportate de Oracle sunt:
NOT NULL nu permite valori NULL n coloanele unei tabele;
UNIQUE nu sunt permise valori duplicat n coloanele unei tabele;
PRIMARY KEY nu permite valori duplicate sau NULL n coloana sau coloanele
definite astfel;
FOREIGN KEY presupune ca fiecare valoare din coloana sau setul de coloane defini
astfel s aib o valoare corespondent identic n tabela de legtur, tabel n care
coloana corespondent este definit cu restricia UNIQUE sau PRIMARY KEY;
CHECK elimin valorile care nu satisfac anumite cerine (condiii) logice.
Termenul de chei (keys) este folosit pentru definirea ctorva categorii de constrngeri i
sunt: primary key, unique key, foreign key, referenced key.
Baza de date construita se adreseaza atat angajatorilor, cat si abonatilor sau clentilor, care
doresc sa obtina informatii cat mai detaliate despre un anumit produs.
Scopul bazei de date este sa se gestioneze produsele deja vandute si sa se aiba o legatura a
angajatilor care au facturat cu rezultatele obtinute.
In fiecare tabela din baza de date se tine evidenta acestor detalii, iar prin relatiile dintre ele se
poate usor depista traseul dorit.
Obiectivele bazei de date sunt :
Baza de date tine evidenta unei firme de telefonie mobila. De aceea, trebuie inregistrate
produsele in vedere pentru efectuarii vanzarii lor PRODUSE , clientii care au cerut efectuarea
vanzarii, respectiv ABONATII , deoarece satisfacerea nevoilor lor este obiectivul firmei
noastre.
De asemenea, sunt incluse tabele care cuprind informatii despre vanzarile realizate
FACTURI. Si mai detaliat in RAND_FACTURA.
Cea mai importanta tabela din schema este tabela ANGAJATI, deoarece ei sunt
reprezentantii firmei, cei care efectueaza comenzile,vanzand produsele sau deschizand
abonamentele si ofera informatii despre companie. Reprezentand resursele umane ale
companiei COSMOTE, tabela ANGAJATI ocupa un loc central in baza de date.
1. Sa se
sucursala
alter table
number(3);
6.
savepoint s;
delete from produse where upper(denp) in ('SIM CU NUMAR','CARTELA COSMOTE');
rollback to s;
14. Afisati numele, prenumele precum si data angajarii fiecarui angajat, data
sa aiba formatul DD/MM/YY
SELECT nume, prenume, TO_CHAR(data_ang, 'DD/MM/YY')data_angajarii
FROM angajati ;
16. Afisati tabela agenti, iar acolo unde prenumele este incomplet specificati
spunand prenume necompletat
select agenti.nume, nvl(prenume,'nume incomplet') from agenti;
17. Actualizati tabela agenti astfel incat agenti care au acelasi un cod de
angajat identificabil in tabela angajati sa li se seteze salariu 120,altfel sa
li se puna valoare null in toate campurile mai putin in tabela salariu unde
se va copia acelasi salariu ca in tabela sursa.
merge into agenti using angajati
on (agenti.id_ang=angajati.id_ang)
when matched then
update set agenti.salariu=120
when not matched THEN INSERT values(null,null,null,null,null,null,angajati.salariu);
19. Afisati mesajul factura apartine angajatuilui i, daca i=11 sau 10 si un alt
mesaj in caz contrar
Select nr_factura, decode( id_ang,11,'Factura apartine angajatului cu id 11',10,'Factura
apartine angajatului cu id 10','Alti angajati')as descriere from facturi;
22. Afisati denumirea si pretul produselor care au pretul mai mare decat
media preturilor
select * from produse where pret>(select avg(pret) from produse);
24. Afisati numele prenumele si data angajarii celui mai nou si celui mai
vechi dintre angajati
select nume, prenume, data_ang from angajati
where data_ang=(select max(data_ang) from angajati)
union
select nume, prenume, data_ang from angajati
where data_ang=(select min(data_ang) from angajati);
26. Afisati toate produsele care contin in denumirea lor cuvantul SIM sau
cuvantul COSMOTE
select denp from produse where denp like '%Cosmote%'
UNION
select denp from produse where denp like '%Sim%'
27. Afisati produsele precum si valoarea totala a fiecarui produs vandut, dar
care nu au suma egala cu 9240 sau 18720 um.
select produse.denp, sum(rand_factura.cantitate*produse.pret) valoare
from produse , rand_factura
where rand_factura.id_produs=produse.id_produs
group by produse.denp
having sum(rand_factura.cantitate*produse.pret)>2000
intersect
select produse.denp, sum(rand_factura.cantitate*produse.pret) valoare
from produse, rand_factura
where rand_factura.id_produs=produse.id_produs
group by produse.denp
having sum(rand_factura.cantitate*produse.pret) not in (9240, 18720);
delete from sucursala where cod_s not in (select cod_s from angajati);
31. Populati tabela doar cu angajatii din slobozia din tabela initiala.
insert into angajati_slobozia select * from angajati where cod_s=(select cod_s from
sucursala where upper(oras)='SLOBOZIA');
34. Creati o tabela virtuala cu aceiasi structura ca tabela abonati, dar care sa
contina numai abonatii cu adrese de gmail.
CREATE VIEW abonati_cu_gmail
AS SELECT * FROM abonati
WHERE email_a like '%gmail.com';
41. Sa se adauge o secventa care aiba la inceput valoarea 100 iar valoarea
maxima 200.
create sequence sec
start with 100 increment by 10
maxvalue 200
nocycle;