Pb1 Oracle
a) Crearea tabelelor pacienti si
consultatii
CREATE
TABLE pacienti
(
cnp_p
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(30) NOT NULL,
data_nasterii
DATE NOT NULL,
sex CHAR(1)
NOT NULL
)
desc
pacienti
INSERT INTO
pacienti VALUES (2921904555777, 'Grig Adela', '19-Mar-1990', 'F')
INSERT INTO
pacienti VALUES (2890207555777, 'Alexa Mara', '22-Jun-1989', 'F')
INSERT INTO
pacienti VALUES (2910410555777, 'Darie Ada', '02-Feb-1991', 'F')
INSERT INTO
pacienti VALUES (1892411555777, 'Vlad Cristi', '27-Nov-1998', 'B')
INSERT INTO
pacienti VALUES (2902512555777, 'Pop Ana', '12-May-1990', 'F')
INSERT INTO
pacienti VALUES (1911708555777, 'Georgescu Paul', '11-Jul-1992', 'B')
SELECT
cnp_p, nume, to_char(data_nasterii,'DD-MM-YYYY') AS "DATA_NASTERII",
sex FROM pacienti
CREATE
TABLE consultatii
(
id
NUMBER(2) PRIMARY KEY,
cnp_pacient
NUMBER(13) REFERENCES pacienti(cnp_p),
data_consult
DATE NOT NULL,
medic
VARCHAR2(30) NOT NULL,
specialitate
VARCHAR2(30) NOT NULL,
pret
NUMBER(4) NOT NULL,
diagnostic
VARCHAR2(25)
)
INSERT INTO
consultatii
VALUES(11,2902512555777,
'04 April 2009', 'Filip Dan', 'generalist', 130, 'diabet')
INSERT INTO
consultatii
VALUES(12,1892411555777,
'12 MAR 2010', 'Zota Ana', 'dentar', 110, NULL)
INSERT INTO
consultatii
VALUES(13,1911708555777,
'01 dec 2012', 'Popescu Ion', 'generalist', 75, 'obezitate')
INSERT INTO
consultatii
VALUES(14,1911708555777,
'05 oct 2010', 'Zota Ana', 'dentar', 130, NULL)
INSERT INTO
consultatii
VALUES(15,2921904555777,
'15 feb 2010', 'Zota Ana', 'dentar', 120, NULL)
INSERT INTO
consultatii
VALUES(16,2890207555777,
'01 dec 2012', 'Zota Ana', 'dentar', 90, NULL)
SELECT id,
cnp_pacient,to_char(data_consult,'DD-MM-YYYY') AS
"DATA_CONSULT",specialitate,pret,diagnostic
FROM
consultatii
b)
SELECT
medic,specialitate
FROM
consultatii
WHERE
data_consult='01 dec 2012'
ORDER BY
medic
c)
SELECT
SUM(pret)
FROM pacienti, consultatii
WHERE
UPPER(nume)='GEORGESCU PAUL' AND cnp_p=cnp_pacient
//Problema
2 Oracle
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','IA?I','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','BACAU','0744123563')
INSERT INTO
clienti VALUES (5,66,'POPA','ANA','BACAU','0744123562')
INSERT INTO
clienti VALUES (1,77,'POP','ION','IA?I','0744123561')
INSERT INTO
clienti VALUES (1,88,'AVRAM','ANCA','CLUJ','0744123560')
SELECT *
FROM clienti
ORDER BY
idc
b)
SELECT
nume, prenume
FROM
destinatii, clienti
WHERE
UPPER(numeD)='VIENA' AND idd=id
ORDER BY
nume,prenume
c)
SELECT
NUMED FROM destinatii
WHERE
pret=(SELECT MAX(pret) FROM destinatii)
UNION
SELECT
numeD FROM destinatii
WHERE
pret=(SELECT MIN(pret) FROM destinatii);
//pb 3
Oracle
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE abonati
(
cnp
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(40) NOT NULL,
prenume
VARCHAR2(40) 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', 'Cisti')
INSERT INTO
abonati VALUES (2902512555777,'Pop', 'Ana')
SELECT *
FROM abonati
CREATE
TABLE interventii
(
idi
VARCHAR2(5) PRIMARY KEY,
cnp
NUMBER(13) REFERENCES abonati(cnp) NOT NULL,
tip_interventie
VARCHAR2(30) NOT NULL,
data_inregistrarii
DATE NOT NULL,
termen_limita
NUMBER(5) NOT NULL,
stare
VARCHAR2(20) NOT NULL
)
INSERT INTO
interventii VALUES('1.', 2921904555777, 'deranjament', '04-APR-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')
SELECT
idi,cnp, tip_interventie AS "TIP",
TO_CHAR(data_inregistrarii,'DD-MM-YYYY') AS "DATA INREGISTRARII",
termen_limita AS "TERMEN LIMITA", stare
FROM
interventii
ORDER BY
idi
b)Sa se
afiseze alfabetic abonatii care au solicitat interventii оn data de 1 ianuarie
2013.
SELECT
nume, prenume
FROM
abonati a, interventii b
WHERE
data_inregistrarii='01-Jan-2013' AND a.cnp=b.cnp
ORDER BY
nume, prenume
c)Afisati
data оnregistrarii interventiilor care au termenul limita depasit?
SELECT TO_CHAR(data_inregistrarii, 'DD-MM-YYYY') AS
"DATA INREGISTRARII"
FROM
interventii
WHERE
stare='neefectuat'
//Pb 4
Oracle
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE filme
(
idf
NUMBER(5) PRIMARY KEY,
nume
VARCHAR2(40) NOT NULL,
data_lansarii
DATE NOT NULL
)
INSERT INTO
filme VALUES (1,'KING-KONG','04-APR-2008')
INSERT INTO
filme VALUES (2,'PE ARIPILE VВNTULUI','12-MAR-1950')
INSERT INTO
filme VALUES (3,'FRATII JDERI','01-DEC-1965')
INSERT INTO
filme VALUES (4,'MARGELATU','05-NOV-1983')
INSERT INTO
filme VALUES (5,'VERONICA','15-FEB-1977')
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','Americana')
INSERT INTO
actori VALUES (2,22, 'Vivien Leigh','Americana')
INSERT INTO
actori VALUES (3,33, 'Florin Piersic','Romвna')
INSERT INTO
actori VALUES (1,44, 'Bill Williams','Americana')
INSERT INTO
actori VALUES (4,88, 'Florin Piersic','Romвna')
INSERT INTO
actori VALUES (5,55, 'Margareta Pislaru','Romвna')
INSERT INTO
actori VALUES (4,66, 'Mircea Diaconu','Romвna')
INSERT INTO
actori VALUES (2,77, 'Clark Gable','Americana')
SELECT *
FROM actori
ORDER BY
ida
b) Sa se afiseze cel mai vechi film si
actorii care au jucat оn acesta.
SELECT
nume, nume_artist
FROM filme
a, actori b
WHERE
data_lansarii=(SELECT MIN(data_lansarii) FROM FILME) AND a.idf=b.idf
c) Pentru actorul “Florin Piersic” sa
se afiseze toate informatiile detinute precum si toate filmele оn care joaca.
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
//Pb 5
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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','Bacau')
INSERT INTO
stapani VALUES (1892411555777,'Vladoi Cristinel','Bucuresti')
INSERT INTO
stapani VALUES (2902512555777,'Pop Ana','Iasi')
INSERT INTO
stapani VALUES (1911708555777,'Antonescu Paul','Bucuresti')
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
stapвnul “Cristinel” sa se afiseze toate informatiile detinute precum si toti
cвinii cu care a participat la campionat si premiile obtinute de acestia.
SELECT
a.cnp, nume, adresa, nume_caine, premiu
FROM
stapani a, caini b
WHERE
UPPER(nume) LIKE '%CRISTINEL%' AND a.cnp=b.cnp
c)Sa se
afiseze lista cвinilor alfabetic dupa premii, оmpreuna cu numele stapвnilor.
SELECT nume_caine, premiu, nume
FROM
stapani a, caini b
WHERE
a.cnp=b.cnp
ORDER BY
premiu, nume_caine
//Pb 6
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE specii
(
ids
NUMBER(4) PRIMARY KEY,
denumire
VARCHAR2(40) NOT NULL,
caracteristici
VARCHAR2(200)
)
DESCRIBE
specii
INSERT INTO
specii VALUES(1, 'ovine', 'corp acoperit de blana')
INSERT INTO
specii VALUES(2, 'marsupiale', 'prezenta unei pungi, numita marsupiu')
INSERT INTO
specii VALUES(3, 'cabaline', 'erbivor, marime considerabila')
SELECT *
FROM specii
CREATE
TABLE animale
(
ida
NUMBER(4) PRIMARY KEY,
ids
NUMBER(4) REFERENCES specii(ids) NOT NULL,
nume
VARCHAR2(40) NOT NULL,
data_nasterii
DATE NOT NULL
)
DESCRIBE
animale
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(55, 1, 'Capra', '15-FEB-2009')
INSERT INTO
animale VALUES(66, 3, 'Iapa', '03-MAY-2008')
INSERT INTO
animale VALUES(77, 2, 'lupul marsupial', '12-MAR-2007')
SELECT ida,
ids, nume, TO_CHAR(data_nasterii,'DD-MM-YYYY') AS "DATA_NA?TERII"
FROM
animale
ORDER BY
ida
b)Care
este cel mai bвtrвn animal din gradina
zoologica ?i din ce specie face parte?
SELECT
nume, TO_CHAR(data_nasterii,'DD-MM-YYYY') AS "DATA_NA?TERII",
denumire
FROM
animale a, specii b
WHERE
data_nasterii=(SELECT MIN(data_nasterii) FROM animale) AND a.ids=b.ids
c)Sa se
afiseze toate animalele alfabetic pe specii.
SELECT
denumire, nume
FROM
animale a, specii b
WHERE
a.ids=b.ids
ORDER BY
denumire, nume
//Pb 8
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE clienti
(
idc
NUMBER(3) PRIMARY KEY,
nume
VARCHAR2(50) NOT NULL,
prenume
VARCHAR2(50) NOT NULL,
adresa
VARCHAR2(150) NOT NULL
);
DESC
clienti
INSERT INTO
clienti VALUES(1, 'POP','INA','IA?I')
INSERT INTO
clienti VALUES(2, 'DASCAL','GINA','DEVA')
INSERT INTO
clienti VALUES(3, 'MIRON','DANA','CLUJ')
INSERT INTO
clienti VALUES(4, 'MIRON','DAN','CLUJ')
INSERT INTO
clienti VALUES(5, 'CARP','VLAD','BACAU')
INSERT INTO
clienti VALUES(6, 'POPA','ANA','BACAU')
SELECT *
FROM clienti
ORDER BY
idc
CREATE
TABLE reclame
(
idc
NUMBER(3) REFERENCES clienti(idc),
idr
NUMBER(3) PRIMARY KEY,
denumire
VARCHAR2(40) NOT NULL,
durata
NUMBER(3) NOT NULL,
nr_difuzari
NUMBER(3) NOT NULL,
tarif
NUMBER(4) NOT NULL
);
desc
reclame
INSERT INTO
reclame VALUES(1,11,'COCA-COLA', 2,4,200)
INSERT INTO
reclame VALUES(2,22,'LENOR', 1,2,150)
INSERT INTO
reclame VALUES(2,33,'ARIEL', 1,2,140)
INSERT INTO
reclame VALUES(4,44,'ORANGE', 2,3,220)
INSERT INTO
reclame VALUES(5,55,'URSUS', 1,1,123)
INSERT INTO
reclame VALUES(3,66,'COLGATE', 1,1,125)
INSERT INTO
reclame VALUES(6,77,'POIANA', 2,1,100)
INSERT INTO
reclame VALUES(5,88,'CIUC', 1,1,130)
SELECT *
FROM reclame
ORDER BY
idr
b)Sa se
afiseze pentru fiecare client reclamele comandate. Clientii vor fi afisati
alfabetic.
SELECT
a.idc, nume, prenume, adresa, denumire
FROM
clienti a, reclame b
WHERE
a.idc=b.idc
c)Afisati
numele si prenumele clientului care a comandat reclama cu un numar maxim de
difuzari.
ORDER BY
nume, prenume
SELECT
nume, prenume, adresaa) Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
FROM
clienti a, reclame b
WHERE
nr_difuzari=(SELECT MAX(nr_difuzari) FROM reclame) AND a.idc=b.idc
//Problema
9 Oracle
PROBLEMA 9
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE masini
(
idm
NUMBER(3) PRIMARY KEY,
marca
VARCHAR2(50) NOT NULL,
nr_locuri
NUMBER(3) NOT NULL,
nr_inmatriculare
VARCHAR2(50) NOT NULL
);
DESC masini
INSERT INTO
masini VALUES(1, 'RENAULT',18,'SV-09-ABC')
INSERT INTO
masini VALUES(2, 'MERCEDES',12,'SV-02-FGH')
INSERT INTO
masini VALUES(3, 'VW',8,'SV-03-IJK')
INSERT INTO
masini VALUES(4, 'MERCEDES',18,'B-100-ION')
INSERT INTO
masini VALUES(5, 'FORD',20,'B-102-LIC')
SELECT *
FROM masini
ORDER BY
idm
CREATE
TABLE curse
(
idc
NUMBER(3) PRIMARY KEY,
idm
NUMBER(3) REFERENCES masini(idm),
destinatie
VARCHAR2(50) NOT NULL,
data_plecarii
DATE NOT NULL,
ora_plecarii
NUMBER(3) NOT NULL,
data_intoarcerii
DATE NOT NULL
);
desc curse
INSERT INTO
curse VALUES(11,1,'BUCURE?TI','03-MAR-2013', 10,'04-MAR-2013')
INSERT INTO
curse VALUES(22,2,'IA?I','03-FEB-2013', 10,'03-FEB-2013')
INSERT INTO
curse VALUES(33,3,'CLUJ','01-APR-2013', 11,'03-APR-2013')
INSERT INTO
curse VALUES(44,1,'IA?I','01-MAY-2013', 15,'01-MAY-2013')
INSERT INTO
curse VALUES(55,4,'BUCURE?TI','01-MAY-2013', 6,'02-MAY-2013')
INSERT INTO
curse VALUES(66,5,'TIMI?OARA','15-APR-2013', 8,'17-APR-2013')
INSERT INTO
curse VALUES(77,1,'CLUJ','10-APR-2013', 10,'11-APR-2013')
INSERT INTO
curse VALUES(88,5,'CLUJ','20-MAR-2013', 22,'22-MAR-2013')
SELECT
idc,idm,destinatie, TO_CHAR(data_plecarii, 'DD.MM.YYYY') AS "DATA
PLECARII", ora_plecarii AS "ORA PLECARII",
TO_CHAR(data_intoarcerii,'DD.MM.YYYY') AS "DATA INTOARCERII" FROM curse
ORDER BY
idc
b)Sa se
afiseze numerele de оnmatriculare ale masinilor care efectueaza curse ce
dureaza mai mult de o zi.
SELECT
DISTINCT nr_inmatriculare
FROM masini
a, curse b
WHERE
a.idm=b.idm AND data_intoarcerii-data_plecarii>1
c)Cвte
persoane ar putea fi transportate cu masinile care pleaca оn cursa pe 1 mai
2013?
SELECT
SUM(nr_locuri) AS "NUMAR PERSOANE"
FROM masini
a, curse b
WHERE
a.idm=b.idm AND data_plecarii='01-MAY-2013'
//Pb 10
Oracle
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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, Bucuresti','0744123567')
INSERT INTO
edituri VALUES (2, 'NICULESCU', 'Calea Unirii 23, Bucuresti','0744123566')
INSERT INTO
edituri VALUES (3, 'ALL', 'Calea Unirii 67, Bucuresti','0744123565')
INSERT INTO
edituri VALUES (4, 'ERC PRESS', 'Florilor 1, Bucuresti','0744123565')
INSERT INTO
edituri VALUES (5, 'PETRION', 'Pandurilor 67, Bucuresti','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, 'POVE?TI', 'ION CREANGA',19)
INSERT INTO
carti VALUES (4,44, 'POEZII', 'MIHAI EMINESCU',15)
INSERT INTO
carti VALUES (5,55, 'AMINTIRI DIN COPILARIE', 'ION CREANGA',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)Afisati
cartile aparute 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 cartilor scrise de Ion Creanga?
SELECT
SUM(pret) AS "VALOARE"
FROM carti
WHERE
UPPER(autor)='ION CREANGA'
//Pb 11
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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,'PRODUC?IE')
SELECT *
FROM
departamente ORDER by cod
CREATE
TABLE angajati
(
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
)
CREATE
TABLE angajati
(
cnp
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(50) NOT NULL,
functia
VARCHAR2(20) NOT NULL,
salar
NUMBER(4) NOT NULL,
cod_depart
NUMBER(3) REFERENCES departamente(cod)
);
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)
SELECT cnp,
nume AS "NUME ?I PRENUME", functia AS "FUNC?IA", salar,
cod_depart
FROM
angajati
b)Sa se
afiseze lista departamentelor cu sefii acestora(se va afisa denumirea
departamentului si numele coordonatorului).
SELECT
denumire AS "DEPARTAMENT", nume AS "COORDONATOR
DEPARTAMENT"
FROM
departamente a, angajati b
WHERE
a.cod=b.cod_depart and UPPER(functia)='COORDONATOR DEPARTAMENT'
c)Sa se
afiseze numarul de angajati din fiecare departament.
SELECT
denumire AS "DEPARTAMENT", COUNT (*) AS "NUMARUL DE
ANGAJA?I"
FROM
departamente a, angajati b
WHERE
a.cod=b.cod_depart
GROUP BY
denumire
CREATE
TABLE diriginti
(
id_d
NUMBER(2) PRIMARY KEY,
nume
VARCHAR2(25) NOT NULL,
prenume
VARCHAR2(30) NOT NULL,
specialitate
VARCHAR(15) NOT NULL
)
DESCRIBE
diriginti
SELECT *
FROM DIRIGINTI
INSERT INTO
diriginti VALUES(1, 'POP', 'INA', 'FIZICA')
INSERT INTO
diriginti VALUES(2, 'DASCAL', 'GINA', 'MATEMATICA')
INSERT INTO
diriginti VALUES(3, 'MIRON', 'DANA', 'CHIMIE')
INSERT INTO
diriginti VALUES(4, 'MIRON', 'DAN', 'INFORMATICA')
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(50) NOT NULL,
adresa
VARCHAR2(50) NOT NULL,
media
NUMBER(4,2) NOT NULL,
id_d
NUMBER(2) REFERENCES diriginti(id_d)
)
INSERT INTO
elevi VALUES(2961904555777, 'Grig Adelina', '1 Mai, 40, Bucuresti', 9.40, 5)
INSERT INTO
elevi VALUES(2950207555777, 'Alexa Mara', 'Calea
Unirii 23, Bucuresti', 10.00, 2)
INSERT INTO
elevi VALUES(2960410555777, 'Darie Ada', 'Calea
Unirii 67, Bucuresti', 9.00, 3)
INSERT INTO
elevi VALUES(1972411555777, 'Vladoi Cristinel', 'Florilor 1, Bucuresti', 8.80, 6)
INSERT INTO
elevi VALUES(2962512555777, 'Pop Ana', 'Pandurilor 67, Bucuresti', 9.50, 4)
INSERT INTO
elevi VALUES(1971708555777, 'Antonescu Paul', 'Calea Unirii 76, Bucuresti', 10.00, 1)
INSERT INTO
elevi VALUES(2981907555777, 'Ionescu Ana', 'Trandafirilor 1, Bucuresti', 8.80, 1)
INSERT INTO
elevi VALUES(2980909555777, 'Alex Dana', 'P. Rares 67, Bucuresti', 9.00, 5)
INSERT INTO
elevi VALUES(1990210555777, 'Darie Mihai', '1 Mai, 46, Bucuresti', 10.00, 4)
INSERT INTO
elevi VALUES(2972411555777, 'Vlad Cristina','Calea Unirii 123, Bucuresti', 8.90, 6)
INSERT INTO
elevi VALUES(2962912555777, 'Radu Anda', '1
Mai, 489, Bucuresti', 9.22, 3)
INSERT INTO
elevi VALUES(1951709555777, 'Anton Mihai', 'Calea Unirii 237, Bucuresti', 9.10, 2)
SELECT *
FROM elevi
b) Sa se. afiseze numele dirigintilor a
caror elevi au media 10. Se va afisa numele elevului, numele dirigintelui si
specialitatea dirigintelui.
SELECT a.nume
AS "Numele elevului", b.nume AS "Nume diriginte", prenume
AS "Prenume diriginte", specialitate
FROM elevi
a, diriginti b
WHERE
media='10.00' AND a.id_d=b.id_d
c) Sa se afiseze media generala a
fiecareiclase. Se va afisa numele dirigintelui si media generala a clasei.
SELECT
a.id_d, b.nume, b.prenume, a."Media Clasei"
FROM(SELECT
id_d, AVG(media) AS "Media Clasei" FROM elevi GROUP BY id_d) a,
diriginti b
WHERE a.id_d=b.id_d
ORDER BY
id_d
Pb 13
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
create
table cladiri
(
cod_cladire
number(2) primary key,
adresa
varchar2(50) not null,
nr_nivele
number(2) not null
)
insert into
cladiri values(1,'1 Mai,40,Bucuresti',1)
insert into
cladiri values(2,'Calea Uniri 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)
SELECT *
FROM cladiri
ORDER BY
cod_cladire
create
table apartamente
(
cod_cladire
number(1) references cladiri(cod_cladire) not null,
cod_apartamente
number(2) primary key,
nr_camere
number(2)not null,
etaj
number(2) not null,
obs
varchar2(50)
)
insert into
apartamente values(2,1,2,1,'Are centrala proprie')
insert into
apartamente values(1,12,1,2,' ')
insert into
apartamente values(1,11,3,1,' ')
insert into
apartamente values(2,2,3,2,'Reanovat')
insert into
apartamente values(3,10,2,1,'Are centrala proprie')
insert into
apartamente values(4,5,2,3,' ')
insert into
apartamente values(5,6,4,1,'Renovat')
insert into
apartamente values(3,3,1,1,' ')
select *
from apartamente
b) Afisati apartamentele care se afla оn
cladiri care au mai mult de 2 nivele.
select
a.adresa, b.cod_apartamente, b.nr_camere, b.etaj, b.obs
from
cladiri a, apartamente b
where
nr_nivele>'2' AND a.cod_cladire=b.cod_cladire
c) Sa se afiseze la ce adresa se
gaseste apartamentul care are cele mai multe camere.
select
adresa
from
cladiri a,apartamente b
where
nr_camere=(select max(nr_camere)from apartamente) and
a.cod_cladire=b.cod_cladire
Problema 14
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE cluburi
(
cod_club
NUMBER(2) PRIMARY KEY,
denumire
VARCHAR2(30) NOT NULL,
localitate
VARCHAR2(20) NOT NULL
)
desc
cluburi
INSERT INTO
cluburi VALUES(1,'Club Zenit','Cluj')
INSERT INTO
cluburi VALUES(2,'Club DINAMO','Bucuresti')
INSERT INTO
cluburi VALUES(3,'Club Steaua','Bacau')
INSERT INTO
cluburi VALUES(4,'Club Rapid','Bucuresti')
INSERT INTO
cluburi VALUES(5,'Club Piticot','Suceava')
INSERT INTO
cluburi VALUES(6,'Club Ardealul','Cluj')
SELECT *
FROM cluburi
ORDER BY
cod_club
CREATE
TABLE sportivi
(
cod_club
NUMBER(2) REFERENCES cluburi(cod_club),
cods
NUMBER(3) Primary Key,
nume
VARCHAR2(30) NOT NULL,
prenume
VARCHAR2(30) 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)
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)
SELECT *
FROM sportivi
ORDER BY
cods
b) Sa se afiseze cluburile alfabetic ?i
media de vвrsta a sportivilor fiecarui club.
SELECT
denumire, a."media de varsta" FROM
(SELECT
cod_club, AVG(varsta) AS "media de varsta" FROM sportivi GROUP BY
cod_club) a, cluburi b
WHERE
a.cod_club=b.cod_club
ORDER BY
denumire
c) Sa se afiseze alfabetic cei(cel) mai
batrвni sportivi оmpreuna cu cluburile lor.
SELECT
nume, prenume,varsta,denumire
FROM sportivi b, cluburi a
WHERE
varsta=(SELECT MAX(VARSTA) FROM sportivi) AND a.cod_club=b.cod_club
ORDER by
nume asc,prenume asc;
Problema 15
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE apartamente15
(
coda
NUMBER(2) PRIMARY KEY,
nr_camere
NUMBER(2) NOT NULL,
nr_ap
NUMBER(2) NOT NULL,
suma_restante
NUMBER(4) NOT NULL
)
INSERT INTO
apartamente15 VALUES(1, 2, 20, 0)
INSERT INTO
apartamente15 VALUES(2, 3, 21, 75)
INSERT INTO
apartamente15 VALUES(3, 4, 22, 100)
INSERT INTO
apartamente15 VALUES(4, 3, 23, 0)
INSERT INTO
apartamente15 VALUES(5, 4, 24, 200)
INSERT INTO
apartamente15 VALUES(6, 2, 25, 50)
select *
from apartamente15
CREATE
TABLE locatari
(
codl NUMBER(3)
PRIMARY KEY not null,
coda
NUMBER(2) REFERENCES apartamente15(coda) not null,
nume
VARCHAR2(20) not null,
prenume
VARCHAR2(30) not null,
loc_munca
VARCHAR2(50)
)
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')Pb1 Oracle
a) Crearea tabelelor pacienti si
consultatii
CREATE
TABLE pacienti
(
cnp_p
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(30) NOT NULL,
data_nasterii
DATE NOT NULL,
sex CHAR(1)
NOT NULL
)
desc
pacienti
INSERT INTO
pacienti VALUES (2921904555777, 'Grig Adela', '19-Mar-1990', 'F')
INSERT INTO
pacienti VALUES (2890207555777, 'Alexa Mara', '22-Jun-1989', 'F')
INSERT INTO
pacienti VALUES (2910410555777, 'Darie Ada', '02-Feb-1991', 'F')
INSERT INTO
pacienti VALUES (1892411555777, 'Vlad Cristi', '27-Nov-1998', 'B')
INSERT INTO
pacienti VALUES (2902512555777, 'Pop Ana', '12-May-1990', 'F')
INSERT INTO
pacienti VALUES (1911708555777, 'Georgescu Paul', '11-Jul-1992', 'B')
SELECT
cnp_p, nume, to_char(data_nasterii,'DD-MM-YYYY') AS "DATA_NASTERII",
sex FROM pacienti
CREATE
TABLE consultatii
(
id
NUMBER(2) PRIMARY KEY,
cnp_pacient
NUMBER(13) REFERENCES pacienti(cnp_p),
data_consult
DATE NOT NULL,
medic
VARCHAR2(30) NOT NULL,
specialitate
VARCHAR2(30) NOT NULL,
pret
NUMBER(4) NOT NULL,
diagnostic
VARCHAR2(25)
)
INSERT INTO
consultatii
VALUES(11,2902512555777,
'04 April 2009', 'Filip Dan', 'generalist', 130, 'diabet')
INSERT INTO
consultatii
VALUES(12,1892411555777,
'12 MAR 2010', 'Zota Ana', 'dentar', 110, NULL)
INSERT INTO
consultatii
VALUES(13,1911708555777,
'01 dec 2012', 'Popescu Ion', 'generalist', 75, 'obezitate')
INSERT INTO
consultatii
VALUES(14,1911708555777,
'05 oct 2010', 'Zota Ana', 'dentar', 130, NULL)
INSERT INTO
consultatii
VALUES(15,2921904555777,
'15 feb 2010', 'Zota Ana', 'dentar', 120, NULL)
INSERT INTO
consultatii
VALUES(16,2890207555777,
'01 dec 2012', 'Zota Ana', 'dentar', 90, NULL)
SELECT id,
cnp_pacient,to_char(data_consult,'DD-MM-YYYY') AS
"DATA_CONSULT",specialitate,pret,diagnostic
FROM
consultatii
b)
SELECT
medic,specialitate
FROM
consultatii
WHERE
data_consult='01 dec 2012'
ORDER BY
medic
c)
SELECT
SUM(pret)
FROM pacienti, consultatii
WHERE
UPPER(nume)='GEORGESCU PAUL' AND cnp_p=cnp_pacient
//Problema
2 Oracle
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','IA?I','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','BACAU','0744123563')
INSERT INTO
clienti VALUES (5,66,'POPA','ANA','BACAU','0744123562')
INSERT INTO
clienti VALUES (1,77,'POP','ION','IA?I','0744123561')
INSERT INTO
clienti VALUES (1,88,'AVRAM','ANCA','CLUJ','0744123560')
SELECT *
FROM clienti
ORDER BY
idc
b)
SELECT
nume, prenume
FROM
destinatii, clienti
WHERE
UPPER(numeD)='VIENA' AND idd=id
ORDER BY
nume,prenume
c)
SELECT
NUMED FROM destinatii
WHERE
pret=(SELECT MAX(pret) FROM destinatii)
UNION
SELECT
numeD FROM destinatii
WHERE
pret=(SELECT MIN(pret) FROM destinatii);
//pb 3
Oracle
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE abonati
(
cnp
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(40) NOT NULL,
prenume
VARCHAR2(40) 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', 'Cisti')
INSERT INTO
abonati VALUES (2902512555777,'Pop', 'Ana')
SELECT *
FROM abonati
CREATE
TABLE interventii
(
idi
VARCHAR2(5) PRIMARY KEY,
cnp
NUMBER(13) REFERENCES abonati(cnp) NOT NULL,
tip_interventie
VARCHAR2(30) NOT NULL,
data_inregistrarii
DATE NOT NULL,
termen_limita
NUMBER(5) NOT NULL,
stare
VARCHAR2(20) NOT NULL
)
INSERT INTO
interventii VALUES('1.', 2921904555777, 'deranjament', '04-APR-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')
SELECT
idi,cnp, tip_interventie AS "TIP",
TO_CHAR(data_inregistrarii,'DD-MM-YYYY') AS "DATA INREGISTRARII",
termen_limita AS "TERMEN LIMITA", stare
FROM
interventii
ORDER BY
idi
b)Sa se
afiseze alfabetic abonatii care au solicitat interventii оn data de 1 ianuarie
2013.
SELECT
nume, prenume
FROM
abonati a, interventii b
WHERE
data_inregistrarii='01-Jan-2013' AND a.cnp=b.cnp
ORDER BY
nume, prenume
c)Afisati
data оnregistrarii interventiilor care au termenul limita depasit?
SELECT TO_CHAR(data_inregistrarii, 'DD-MM-YYYY') AS
"DATA INREGISTRARII"
FROM
interventii
WHERE
stare='neefectuat'
//Pb 4
Oracle
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE filme
(
idf
NUMBER(5) PRIMARY KEY,
nume
VARCHAR2(40) NOT NULL,
data_lansarii
DATE NOT NULL
)
INSERT INTO
filme VALUES (1,'KING-KONG','04-APR-2008')
INSERT INTO
filme VALUES (2,'PE ARIPILE VВNTULUI','12-MAR-1950')
INSERT INTO
filme VALUES (3,'FRATII JDERI','01-DEC-1965')
INSERT INTO
filme VALUES (4,'MARGELATU','05-NOV-1983')
INSERT INTO
filme VALUES (5,'VERONICA','15-FEB-1977')
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','Americana')
INSERT INTO
actori VALUES (2,22, 'Vivien Leigh','Americana')
INSERT INTO
actori VALUES (3,33, 'Florin Piersic','Romвna')
INSERT INTO
actori VALUES (1,44, 'Bill Williams','Americana')
INSERT INTO
actori VALUES (4,88, 'Florin Piersic','Romвna')
INSERT INTO
actori VALUES (5,55, 'Margareta Pislaru','Romвna')
INSERT INTO
actori VALUES (4,66, 'Mircea Diaconu','Romвna')
INSERT INTO
actori VALUES (2,77, 'Clark Gable','Americana')
SELECT *
FROM actori
ORDER BY
ida
b) Sa se afiseze cel mai vechi film si
actorii care au jucat оn acesta.
SELECT
nume, nume_artist
FROM filme
a, actori b
WHERE
data_lansarii=(SELECT MIN(data_lansarii) FROM FILME) AND a.idf=b.idf
c) Pentru actorul “Florin Piersic” sa
se afiseze toate informatiile detinute precum si toate filmele оn care joaca.
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
//Pb 5
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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','Bacau')
INSERT INTO
stapani VALUES (1892411555777,'Vladoi Cristinel','Bucuresti')
INSERT INTO
stapani VALUES (2902512555777,'Pop Ana','Iasi')
INSERT INTO
stapani VALUES (1911708555777,'Antonescu Paul','Bucuresti')
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
stapвnul “Cristinel” sa se afiseze toate informatiile detinute precum si toti
cвinii cu care a participat la campionat si premiile obtinute de acestia.
SELECT
a.cnp, nume, adresa, nume_caine, premiu
FROM
stapani a, caini b
WHERE
UPPER(nume) LIKE '%CRISTINEL%' AND a.cnp=b.cnp
c)Sa se
afiseze lista cвinilor alfabetic dupa premii, оmpreuna cu numele stapвnilor.
SELECT nume_caine, premiu, nume
FROM
stapani a, caini b
WHERE
a.cnp=b.cnp
ORDER BY
premiu, nume_caine
//Pb 6
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE specii
(
ids
NUMBER(4) PRIMARY KEY,
denumire
VARCHAR2(40) NOT NULL,
caracteristici
VARCHAR2(200)
)
DESCRIBE
specii
INSERT INTO
specii VALUES(1, 'ovine', 'corp acoperit de blana')
INSERT INTO
specii VALUES(2, 'marsupiale', 'prezenta unei pungi, numita marsupiu')
INSERT INTO
specii VALUES(3, 'cabaline', 'erbivor, marime considerabila')
SELECT *
FROM specii
CREATE
TABLE animale
(
ida
NUMBER(4) PRIMARY KEY,
ids
NUMBER(4) REFERENCES specii(ids) NOT NULL,
nume
VARCHAR2(40) NOT NULL,
data_nasterii
DATE NOT NULL
)
DESCRIBE
animale
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(55, 1, 'Capra', '15-FEB-2009')
INSERT INTO
animale VALUES(66, 3, 'Iapa', '03-MAY-2008')
INSERT INTO
animale VALUES(77, 2, 'lupul marsupial', '12-MAR-2007')
SELECT ida,
ids, nume, TO_CHAR(data_nasterii,'DD-MM-YYYY') AS "DATA_NA?TERII"
FROM
animale
ORDER BY
ida
b)Care
este cel mai bвtrвn animal din gradina
zoologica ?i din ce specie face parte?
SELECT
nume, TO_CHAR(data_nasterii,'DD-MM-YYYY') AS "DATA_NA?TERII",
denumire
FROM
animale a, specii b
WHERE
data_nasterii=(SELECT MIN(data_nasterii) FROM animale) AND a.ids=b.ids
c)Sa se
afiseze toate animalele alfabetic pe specii.
SELECT
denumire, nume
FROM
animale a, specii b
WHERE
a.ids=b.ids
ORDER BY
denumire, nume
//Pb 8
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE clienti
(
idc
NUMBER(3) PRIMARY KEY,
nume
VARCHAR2(50) NOT NULL,
prenume
VARCHAR2(50) NOT NULL,
adresa
VARCHAR2(150) NOT NULL
);
DESC
clienti
INSERT INTO
clienti VALUES(1, 'POP','INA','IA?I')
INSERT INTO
clienti VALUES(2, 'DASCAL','GINA','DEVA')
INSERT INTO
clienti VALUES(3, 'MIRON','DANA','CLUJ')
INSERT INTO
clienti VALUES(4, 'MIRON','DAN','CLUJ')
INSERT INTO
clienti VALUES(5, 'CARP','VLAD','BACAU')
INSERT INTO
clienti VALUES(6, 'POPA','ANA','BACAU')
SELECT *
FROM clienti
ORDER BY
idc
CREATE
TABLE reclame
(
idc
NUMBER(3) REFERENCES clienti(idc),
idr
NUMBER(3) PRIMARY KEY,
denumire
VARCHAR2(40) NOT NULL,
durata
NUMBER(3) NOT NULL,
nr_difuzari
NUMBER(3) NOT NULL,
tarif
NUMBER(4) NOT NULL
);
desc
reclame
INSERT INTO
reclame VALUES(1,11,'COCA-COLA', 2,4,200)
INSERT INTO
reclame VALUES(2,22,'LENOR', 1,2,150)
INSERT INTO
reclame VALUES(2,33,'ARIEL', 1,2,140)
INSERT INTO
reclame VALUES(4,44,'ORANGE', 2,3,220)
INSERT INTO
reclame VALUES(5,55,'URSUS', 1,1,123)
INSERT INTO
reclame VALUES(3,66,'COLGATE', 1,1,125)
INSERT INTO
reclame VALUES(6,77,'POIANA', 2,1,100)
INSERT INTO
reclame VALUES(5,88,'CIUC', 1,1,130)
SELECT *
FROM reclame
ORDER BY
idr
b)Sa se
afiseze pentru fiecare client reclamele comandate. Clientii vor fi afisati
alfabetic.
SELECT
a.idc, nume, prenume, adresa, denumire
FROM
clienti a, reclame b
WHERE
a.idc=b.idc
c)Afisati
numele si prenumele clientului care a comandat reclama cu un numar maxim de
difuzari.
ORDER BY
nume, prenume
SELECT
nume, prenume, adresaa) Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
FROM
clienti a, reclame b
WHERE
nr_difuzari=(SELECT MAX(nr_difuzari) FROM reclame) AND a.idc=b.idc
//Problema
9 Oracle
PROBLEMA 9
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE masini
(
idm
NUMBER(3) PRIMARY KEY,
marca
VARCHAR2(50) NOT NULL,
nr_locuri
NUMBER(3) NOT NULL,
nr_inmatriculare
VARCHAR2(50) NOT NULL
);
DESC masini
INSERT INTO
masini VALUES(1, 'RENAULT',18,'SV-09-ABC')
INSERT INTO
masini VALUES(2, 'MERCEDES',12,'SV-02-FGH')
INSERT INTO
masini VALUES(3, 'VW',8,'SV-03-IJK')
INSERT INTO
masini VALUES(4, 'MERCEDES',18,'B-100-ION')
INSERT INTO
masini VALUES(5, 'FORD',20,'B-102-LIC')
SELECT *
FROM masini
ORDER BY
idm
CREATE
TABLE curse
(
idc
NUMBER(3) PRIMARY KEY,
idm
NUMBER(3) REFERENCES masini(idm),
destinatie
VARCHAR2(50) NOT NULL,
data_plecarii
DATE NOT NULL,
ora_plecarii
NUMBER(3) NOT NULL,
data_intoarcerii
DATE NOT NULL
);
desc curse
INSERT INTO
curse VALUES(11,1,'BUCURE?TI','03-MAR-2013', 10,'04-MAR-2013')
INSERT INTO
curse VALUES(22,2,'IA?I','03-FEB-2013', 10,'03-FEB-2013')
INSERT INTO
curse VALUES(33,3,'CLUJ','01-APR-2013', 11,'03-APR-2013')
INSERT INTO
curse VALUES(44,1,'IA?I','01-MAY-2013', 15,'01-MAY-2013')
INSERT INTO
curse VALUES(55,4,'BUCURE?TI','01-MAY-2013', 6,'02-MAY-2013')
INSERT INTO
curse VALUES(66,5,'TIMI?OARA','15-APR-2013', 8,'17-APR-2013')
INSERT INTO
curse VALUES(77,1,'CLUJ','10-APR-2013', 10,'11-APR-2013')
INSERT INTO
curse VALUES(88,5,'CLUJ','20-MAR-2013', 22,'22-MAR-2013')
SELECT
idc,idm,destinatie, TO_CHAR(data_plecarii, 'DD.MM.YYYY') AS "DATA
PLECARII", ora_plecarii AS "ORA PLECARII",
TO_CHAR(data_intoarcerii,'DD.MM.YYYY') AS "DATA INTOARCERII" FROM curse
ORDER BY
idc
b)Sa se
afiseze numerele de оnmatriculare ale masinilor care efectueaza curse ce
dureaza mai mult de o zi.
SELECT
DISTINCT nr_inmatriculare
FROM masini
a, curse b
WHERE
a.idm=b.idm AND data_intoarcerii-data_plecarii>1
c)Cвte
persoane ar putea fi transportate cu masinile care pleaca оn cursa pe 1 mai
2013?
SELECT
SUM(nr_locuri) AS "NUMAR PERSOANE"
FROM masini
a, curse b
WHERE
a.idm=b.idm AND data_plecarii='01-MAY-2013'
//Pb 10
Oracle
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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, Bucuresti','0744123567')
INSERT INTO
edituri VALUES (2, 'NICULESCU', 'Calea Unirii 23, Bucuresti','0744123566')
INSERT INTO
edituri VALUES (3, 'ALL', 'Calea Unirii 67, Bucuresti','0744123565')
INSERT INTO
edituri VALUES (4, 'ERC PRESS', 'Florilor 1, Bucuresti','0744123565')
INSERT INTO
edituri VALUES (5, 'PETRION', 'Pandurilor 67, Bucuresti','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, 'POVE?TI', 'ION CREANGA',19)
INSERT INTO
carti VALUES (4,44, 'POEZII', 'MIHAI EMINESCU',15)
INSERT INTO
carti VALUES (5,55, 'AMINTIRI DIN COPILARIE', 'ION CREANGA',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)Afisati
cartile aparute 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 cartilor scrise de Ion Creanga?
SELECT
SUM(pret) AS "VALOARE"
FROM carti
WHERE
UPPER(autor)='ION CREANGA'
//Pb 11
Oracle 2013
a)Construiti
baza de date cu tabele corespunzatoare si relatiile reprezentate оn ERD.
Populati tabelele cu оnregistrari relevante pentru cerintele urmatoare.
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,'PRODUC?IE')
SELECT *
FROM
departamente ORDER by cod
CREATE
TABLE angajati
(
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
)
CREATE
TABLE angajati
(
cnp
NUMBER(13) PRIMARY KEY,
nume
VARCHAR2(50) NOT NULL,
functia
VARCHAR2(20) NOT NULL,
salar
NUMBER(4) NOT NULL,
cod_depart
NUMBER(3) REFERENCES departamente(cod)
);
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)
SELECT cnp,
nume AS "NUME ?I PRENUME", functia AS "FUNC?IA", salar,
cod_depart
FROM
angajati
b)Sa se
afiseze lista departamentelor cu sefii acestora(se va afisa denumirea
departamentului si numele coordonatorului).
SELECT
denumire AS "DEPARTAMENT", nume AS "COORDONATOR
DEPARTAMENT"
FROM
departamente a, angajati b
WHERE
a.cod=b.cod_depart and UPPER(functia)='COORDONATOR DEPARTAMENT'
c)Sa se
afiseze numarul de angajati din fiecare departament.
SELECT
denumire AS "DEPARTAMENT", COUNT (*) AS "NUMARUL DE
ANGAJA?I"
FROM
departamente a, angajati b
WHERE
a.cod=b.cod_depart
GROUP BY
denumire
CREATE
TABLE diriginti
(
id_d
NUMBER(2) PRIMARY KEY,
nume
VARCHAR2(25) NOT NULL,
prenume
VARCHAR2(30) NOT NULL,
specialitate
VARCHAR(15) NOT NULL
)
DESCRIBE
diriginti
SELECT *
FROM DIRIGINTI
INSERT INTO
diriginti VALUES(1, 'POP', 'INA', 'FIZICA')
INSERT INTO
diriginti VALUES(2, 'DASCAL', 'GINA', 'MATEMATICA')
INSERT INTO
diriginti VALUES(3, 'MIRON', 'DANA', 'CHIMIE')
INSERT INTO
diriginti VALUES(4, 'MIRON', 'DAN', 'INFORMATICA')
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(50) NOT NULL,
adresa
VARCHAR2(50) NOT NULL,
media
NUMBER(4,2) NOT NULL,
id_d
NUMBER(2) REFERENCES diriginti(id_d)
)
INSERT INTO
elevi VALUES(2961904555777, 'Grig Adelina', '1 Mai, 40, Bucuresti', 9.40, 5)
INSERT INTO
elevi VALUES(2950207555777, 'Alexa Mara', 'Calea
Unirii 23, Bucuresti', 10.00, 2)
INSERT INTO
elevi VALUES(2960410555777, 'Darie Ada', 'Calea
Unirii 67, Bucuresti', 9.00, 3)
INSERT INTO
elevi VALUES(1972411555777, 'Vladoi Cristinel', 'Florilor 1, Bucuresti', 8.80, 6)
INSERT INTO
elevi VALUES(2962512555777, 'Pop Ana', 'Pandurilor 67, Bucuresti', 9.50, 4)
INSERT INTO
elevi VALUES(1971708555777, 'Antonescu Paul', 'Calea Unirii 76, Bucuresti', 10.00, 1)
INSERT INTO
elevi VALUES(2981907555777, 'Ionescu Ana', 'Trandafirilor 1, Bucuresti', 8.80, 1)
INSERT INTO
elevi VALUES(2980909555777, 'Alex Dana', 'P. Rares 67, Bucuresti', 9.00, 5)
INSERT INTO
elevi VALUES(1990210555777, 'Darie Mihai', '1 Mai, 46, Bucuresti', 10.00, 4)
INSERT INTO
elevi VALUES(2972411555777, 'Vlad Cristina','Calea Unirii 123, Bucuresti', 8.90, 6)
INSERT INTO
elevi VALUES(2962912555777, 'Radu Anda', '1
Mai, 489, Bucuresti', 9.22, 3)
INSERT INTO
elevi VALUES(1951709555777, 'Anton Mihai', 'Calea Unirii 237, Bucuresti', 9.10, 2)
SELECT *
FROM elevi
b) Sa se. afiseze numele dirigintilor a
caror elevi au media 10. Se va afisa numele elevului, numele dirigintelui si
specialitatea dirigintelui.
SELECT a.nume
AS "Numele elevului", b.nume AS "Nume diriginte", prenume
AS "Prenume diriginte", specialitate
FROM elevi
a, diriginti b
WHERE
media='10.00' AND a.id_d=b.id_d
c) Sa se afiseze media generala a
fiecareiclase. Se va afisa numele dirigintelui si media generala a clasei.
SELECT
a.id_d, b.nume, b.prenume, a."Media Clasei"
FROM(SELECT
id_d, AVG(media) AS "Media Clasei" FROM elevi GROUP BY id_d) a,
diriginti b
WHERE a.id_d=b.id_d
ORDER BY
id_d
Pb 13
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
create
table cladiri
(
cod_cladire
number(2) primary key,
adresa
varchar2(50) not null,
nr_nivele
number(2) not null
)
insert into
cladiri values(1,'1 Mai,40,Bucuresti',1)
insert into
cladiri values(2,'Calea Uniri 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)
SELECT *
FROM cladiri
ORDER BY
cod_cladire
create
table apartamente
(
cod_cladire
number(1) references cladiri(cod_cladire) not null,
cod_apartamente
number(2) primary key,
nr_camere
number(2)not null,
etaj
number(2) not null,
obs
varchar2(50)
)
insert into
apartamente values(2,1,2,1,'Are centrala proprie')
insert into
apartamente values(1,12,1,2,' ')
insert into
apartamente values(1,11,3,1,' ')
insert into
apartamente values(2,2,3,2,'Reanovat')
insert into
apartamente values(3,10,2,1,'Are centrala proprie')
insert into
apartamente values(4,5,2,3,' ')
insert into
apartamente values(5,6,4,1,'Renovat')
insert into
apartamente values(3,3,1,1,' ')
select *
from apartamente
b) Afisati apartamentele care se afla оn
cladiri care au mai mult de 2 nivele.
select
a.adresa, b.cod_apartamente, b.nr_camere, b.etaj, b.obs
from
cladiri a, apartamente b
where
nr_nivele>'2' AND a.cod_cladire=b.cod_cladire
c) Sa se afiseze la ce adresa se
gaseste apartamentul care are cele mai multe camere.
select
adresa
from
cladiri a,apartamente b
where
nr_camere=(select max(nr_camere)from apartamente) and
a.cod_cladire=b.cod_cladire
Problema 14
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE cluburi
(
cod_club
NUMBER(2) PRIMARY KEY,
denumire
VARCHAR2(30) NOT NULL,
localitate
VARCHAR2(20) NOT NULL
)
desc
cluburi
INSERT INTO
cluburi VALUES(1,'Club Zenit','Cluj')
INSERT INTO
cluburi VALUES(2,'Club DINAMO','Bucuresti')
INSERT INTO
cluburi VALUES(3,'Club Steaua','Bacau')
INSERT INTO
cluburi VALUES(4,'Club Rapid','Bucuresti')
INSERT INTO
cluburi VALUES(5,'Club Piticot','Suceava')
INSERT INTO
cluburi VALUES(6,'Club Ardealul','Cluj')
SELECT *
FROM cluburi
ORDER BY
cod_club
CREATE
TABLE sportivi
(
cod_club
NUMBER(2) REFERENCES cluburi(cod_club),
cods
NUMBER(3) Primary Key,
nume
VARCHAR2(30) NOT NULL,
prenume
VARCHAR2(30) 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)
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)
SELECT *
FROM sportivi
ORDER BY
cods
b) Sa se afiseze cluburile alfabetic ?i
media de vвrsta a sportivilor fiecarui club.
SELECT
denumire, a."media de varsta" FROM
(SELECT
cod_club, AVG(varsta) AS "media de varsta" FROM sportivi GROUP BY
cod_club) a, cluburi b
WHERE
a.cod_club=b.cod_club
ORDER BY
denumire
c) Sa se afiseze alfabetic cei(cel) mai
batrвni sportivi оmpreuna cu cluburile lor.
SELECT
nume, prenume,varsta,denumire
FROM sportivi b, cluburi a
WHERE
varsta=(SELECT MAX(VARSTA) FROM sportivi) AND a.cod_club=b.cod_club
ORDER by
nume asc,prenume asc;
Problema 15
a) Construiti baza de date cu tabele
corespunzatoare si relatiile reprezentate оn ERD. Populati tabelele cu
оnregistrari relevante pentru cerintele urmatoare.
CREATE
TABLE apartamente15
(
coda
NUMBER(2) PRIMARY KEY,
nr_camere
NUMBER(2) NOT NULL,
nr_ap
NUMBER(2) NOT NULL,
suma_restante
NUMBER(4) NOT NULL
)
INSERT INTO
apartamente15 VALUES(1, 2, 20, 0)
INSERT INTO
apartamente15 VALUES(2, 3, 21, 75)
INSERT INTO
apartamente15 VALUES(3, 4, 22, 100)
INSERT INTO
apartamente15 VALUES(4, 3, 23, 0)
INSERT INTO
apartamente15 VALUES(5, 4, 24, 200)
INSERT INTO
apartamente15 VALUES(6, 2, 25, 50)
select *
from apartamente15
CREATE
TABLE locatari
(
codl NUMBER(3)
PRIMARY KEY not null,
coda
NUMBER(2) REFERENCES apartamente15(coda) not null,
nume
VARCHAR2(20) not null,
prenume
VARCHAR2(30) not null,
loc_munca
VARCHAR2(50)
)
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')
SELECT *
FROM locatari
ORDER BY
codl
b) Care este cea mai mare datorie si
care sunt persoanele ce locuiesc оn acest/aceste apartamente
SELECT
b.nume, b.prenume, a.suma_restante
FROM apartamente15
a, locatari b
WHERE
a.coda=b.coda AND suma_restante=(select max(suma_restante) from apartamente15)
c) Sa se afiseze alfabetic locatarii si
numarul apartamentului lor, care au acelasi loc de munca cu cel citit de la
tastatura.
SELECT
b.nume, b.prenume, a.nr_ap
FROM
locatari b, apartamente15 a
WHERE
loc_munca=:loc_munca AND a.coda=b.coda
ORDER BY
nume asc, prenume asc
INSERT INTO
locatari VALUES(119, 2, 'DASCAL', 'MIHAI', 'ROMPETROL')
INSERT INTO
locatari VALUES(120, 1, 'POP', 'VASILE', 'SC
ASTAR')
SELECT *
FROM locatari
ORDER BY
codl
b) Care este cea mai mare datorie si
care sunt persoanele ce locuiesc оn acest/aceste apartamente
SELECT
b.nume, b.prenume, a.suma_restante
FROM apartamente15
a, locatari b
WHERE
a.coda=b.coda AND suma_restante=(select max(suma_restante) from apartamente15)
c) Sa se afiseze alfabetic locatarii si
numarul apartamentului lor, care au acelasi loc de munca cu cel citit de la
tastatura.
SELECT
b.nume, b.prenume, a.nr_ap
FROM
locatari b, apartamente15 a
WHERE
loc_munca=:loc_munca AND a.coda=b.coda
ORDER BY
nume asc, prenume asc