Sunteți pe pagina 1din 16

BD SCOALA

1. Crearea tabelelor BD
a) Crearea tabelei clase
Create table clase( cod number(3) primary key, sala varchar2(20), specializare varchar2(50));

b) Crearea tabelei elevi

Create table elevi( nr_matricol number(13) primary key, nume varchar2(20) not null, prenume
varchar2(20) not null, data_n date not null, email varchar2(50) not null, clasa varchar2(10) not null,
telefon varchar2(12));
c) Crearea tabelei profesori
Create table profesori( id number(13) primary key, nume varchar2(20) not null, prenume
varchar2(20) not null, data_n date not null, specialitate varchar2(20) not null, grad_didactic
varchar2(20) not null, email varchar2(50) not null, telefon varchar2(12));

d) Crearea tabelei incadrari


create table incadrari( disciplina varchar2(20) not null, cod_cls varchar2(10) references clasa(cod),
id_p number(13) not null references profesori(id), nr_ore number(2) not null) primary key
(disciplina, cod_cls);
2. Inserarea datelor in tabele
a) Inserarea datelor in tabela elevi
insert into elevi (nr_matricol, nume, prenume, data_n, email, telefon, clasa) values ( 100, 'Mihai',
'Dan', '23-Jan-1977', 'mihaidaniel@gmail.com', '0711111111', '10A')
b) Inserarea datelor in tabela profesori
insert into profesori (id, nume, prenume, data_n, specialitate, grad_didactic, email, telefon) values
( 206, 'Silvi', 'Mihaela', '1-Apr-1965', 'Biologie', 'definitiv', 'silvimihaela@gmail.com', '0718888888')

c) Inserarea datelor in tabela clase


insert into clase (cod, sala, specializare) values ('9C', '003', 'Matematica-informatica')
d) Inserarea datelor in tabela incadrari

insert into incadrari ( cod_cls, id_p, disciplina, nr_ore) values ('11B', 200, 'Limba Romana', 3)

3. Interogarea Bazei de Date


a) Interogari simple
i) Afisarea numelui si prenumelui elevilor din clasa a 11-a A.

select e.nume || ' ' || e.prenume as elev from


elevi e
where e.clasa = '11A'
ii) Afisarea elevilor care au 4 ore de limba romana pe saptamana.

select e.nume || ' ' || e.prenume as elev from


elevi e, incadrari i
where e.clasa = i.cod_cls and upper(disciplina)= 'LIMBA ROMANA' and i.nr_ore = 4

iii)Afisarea in ordine alfabetica a tuturor elevilor din clasa 11 A.

select e.nume || ' ' || e.prenume as elev


from elevi e
where e.clasa = '11A'
order by elev

iv) Afisarea clasei care invata in sala 001.

select cod
from clase
where sala = 001
v) Afisarea numelui si a prenumelui profesorilor cu specialitatea Matematica.

select p.nume || ' ' || p.prenume as profesor from


profesori p
where upper(p.specialitate) = 'MATEMATICA'

b) Interogari compuse
i) Afisarea tuturor profesorilor care au minim o incadrare de 4 ore.
select p.nume || ' ' || p.prenume as profesor
from profesori p, incadrari i
where p.id = i.id_p and nr_ore = 4
ii) Afisarea profesorilor care predau la clasa 10A.

select p.nume || ' ' || p.prenume as profesor from


profesori p, incadrari i
where p.id = i.id_p and cod_cls = '10A'

iii)Afisarea profesorilor care predau la clasa elevului cu numele Mihai.

select p.nume || ' ' || p.prenume as profesor


from profesori p, incadrari i, elevi e
where p.id = i.id_p and e.clasa = i.cod_cls and e.nume = 'Mihai'

iv) Afisarea claselor la care preda profesorul cu numele ‘Duminica’

select cod
from clase c, profesori p, incadrari i
where p.id = i.id_p and c.cod = i.cod_cls and p.nume = 'Duminica'

v) Afisarea numarului de profesori care predau la clasa 10A.


select count(*)
from profesori p, incadrari i, clase c
where i.id_p = p.id and c.cod = i.cod_cls and cod = '10A'

c) Functii totalizatoare
i) Afisarea profesorului cu cel mai mare nr de ore

select p.nume || ' ' || p.prenume as "Numele profesorului" from


profesori p, incadrari
where p.id = incadrari.id_p and incadrari.nr_ore = (select max(nr_ore) from incadrari)
ii) Afisarea profesorilor cu cel mai mic numar de ore care predau la clasa elevului cu numele
Mihai.

select distinct p.nume || ' ' || p.prenume as "Numele profesorului" from


profesori p, incadrari, clase c, elevi e
where p.id = incadrari.id_p and incadrari.nr_ore = (select min(nr_ore) from incadrari) and e.clasa =
c.cod and initcap(e.nume) = 'Mihai'

iii)Afisarea mediei orelor de la clasa elevului cu numele ‘Mihai’.

select avg(i.nr_ore)
from incadrari i, clase c, elevi e
where i.cod_cls = c.cod and e.clasa = c.cod and initcap(e.nume) = 'Mihai'
d) Utilizarea clauzei Order by

i) Afisarea profesorilor care predau la clasa 10A in ordine crescatoare datei de nastere. select

p.nume || ' ' || p.prenume as "Numele profesorilor de la 10A"


from profesori p, incadrari i, clase c
where p.id = i.id_p and c.cod = i.cod_cls and c.cod='10A'
Order by p.data_n

ii) Afisarea profesorilor care predau la clasa 10A in ordine descrescatoare numelui.
select p.nume || ' ' || p.prenume as "Numele profesorilor de la 10A" from
profesori p, incadrari i, clase c
where p.id = i.id_p and c.cod = i.cod_cls and c.cod='10A'
Order by p.nume desc

e) Subinterogari
i) Afisarea tuturor colegilor elevei cu numele Cernea. select
e.nume || ' ' || e.prenume as "Colegii elevei Cernea"
from elevi e where e.clasa = (select clasa from elevi where lower(nume) = 'cernea') and
lower(e.nume) <> 'cernea’
ii) Afisarea tuturor claselor care au aceeasi specializare clasei in care se afla eleva cu
numele Cernea.

select c.cod
from clase c
where c.specializare = (select c.specializare from
clase c, elevi e
where e.clasa = c.cod and lower(e.nume) = 'cernea')

iii)Afisarea numelor si prenumelor tuturor elevilor care sunt intr-o clasa cu aceeasi
specializare ca a elevei cu numele “Cernea”

select e.nume || ' ' || e.prenume as "Nume elevi" from


elevi e where e.clasa in (select c.cod
from clase c
where c.specializare = (select c.specializare from
clase c, elevi e
where e.clasa = c.cod and lower(e.nume) = 'cernea') ) and lower(e.nume) <> 'cernea'
Cuprins

1. Crearea tabelelor BD 1
a) Crearea tabelei clase 1
b) Crearea tabelei elevi 1
c) Crearea tabelei profesori 2
d) Crearea tabelei incadrari 2

2. Inserarea datelor in tabele 3


a) Inserarea datelor in tabela elevi 3
b) Inserarea datelor in tabela profesori 4
c) Inserarea datelor in tabela clase 4
d) Inserarea datelor in tabela incadrari 5

3. Interogarea Bazei de Date 5


a) Interogari simple 5
b) Interogari compuse 8
c) Functii totalizatoare 11
d) Utilizarea clauzei Order by 13
e) Subinterogari 14

S-ar putea să vă placă și