Professional Documents
Culture Documents
Bucureti, 2016
2. Schema conceptuala
Alter + ADD
Adaugarea cheii externe pentru tabela reteta;
alter table reteta add
constraint cnp2_fk foreign key(cnp) references PACIENTI;
alter table reteta add
constraint id_doctor2_fk foreign key(id_doctor) references MEDICI_DE_FAMILIE;
alter table reteta add
constraint cod_consultatie2_fk foreign key(cod_consultatie) references CONSULTATIE;
Constraint
Se adauga restrictie pentru tabela reteta ca procentul din reteta sa nu fie mai mare
decat 99 iar cantitatea de medicamente sa nu depaseasca 50 de bucati;
alter table reteta add constraint cantitate_check check(cantitate<50);
alter table reteta add constraint procent_check check(procent<99);
DROP
Stergere restrictii, chei externe;
alter table reteta drop
constraint cnp2_fk ;
alter table reteta drop
constraint id_doctor2_fk ;
alter table consultatie drop
constraint id_docto_fk;
Update
Sa se modifice numele si prenumele pacientului cu cnp-ul=1880402234567;
update pacienti p set p.nume_pacient='Stroiescu' where p.cnp='1880402234567';
update pacienti p set p.prenume_pacient='Catalin' where p.cnp='1880402234567';
insert into Consultatie values
('12350','1880402234567','02.04.2013','Salmonella','Alexandrescu','Stroiescu','Deshidratare');
insert into Consultatie values
('12351','1760330123490','03.04.2013','Micoza','Babsa','Terteleac','-');
insert into Consultatie values ('12352','2700818678967','03.04.2013','Boala CreutzfeldtJakob','Babsa','Parva','Pacientul prezinta un inceput de depresie');
insert into Consultatie values
('12353','2700818678967','13.03.2013','Raceala','Babsa','Parva','Pacientul prezinta migrene');
Delete
Sa se stearga reteta care are cantitatea egala cu 2 din tabele reteta;
delete from reteta where cantitate=2;
Sa se stearga tabela reteta;
delete from reteta ;
5. Interogri
Jonctiune interna
Sa se afiseze numele doctorilor care apar si in tabela reteta si in tabela consultative
select * from reteta t , consultatie c
where t.nume_doctor=c.nume_doctor;
Union
Sa se realizeze un full join intre tabela reteta si consultatie, comanda ce va reda toti
doctorii comuni celor doua coloane.
select c.nume_doctor, c.nume_pacient, c.cod_consultatie,
r.medicament, r.cantitate, r.compensat,
trunc(data) data_r from consultatie c full join reteta r
on c.nume_doctor=r.nume_doctor;
BETWEEN
Sa se selecteze numai retele care au cantitatea de pastille cuprinsa in intervalul [0,7];
select * from reteta where cantitate between 0 and 7;
And
Order by
Sa se afiseze consultatile efectuate de doctorii Babsa si Alexandrescu care nu au
cod_consultatie 12347 sau 12350 in ordine cronologica;
select * from consultatie t
where t.nume_doctor in ('Babsa','Alexandrescu')
and cod_consultatie not in ('12347','12350')
order by data;
Sysdate
Update
Sa se seteze data curenta la consultatia care are codul 12349;
update consultatie t set t.data=sysdate where t.Cod_Consultatie='12349';
Count
Sa se afiseze numarul retetelor compensate si celor necompensate;
SELECT count(*) Nr_prod from reteta where compensat='da'
union
SELECT count(*) Nr_prod FROM reteta WHERE compensat='nu';