Extras din notiță
I. SISTEME DE GESTIUNE A BAZELOR DE DATE
1. Facultăţi
Se dă următoarea structură de fişier:
Denumire C,20 (Denumirea facultăţii)
Localitate C,15
Nrstud N,5 (Nr. studenţi)
Nrstudb N,5 (Nr. studenţi bursieri)
An_inf N,4 (Anul înfiinţării)
Nrspec N,2 (Numărul de specializări oferite)
CREATE TABLE facultati(denumire varchar2(20), localitate varchar2(15), nrstud number(5), nrstudb number(5), an_inf number(4),nrspec number(2))
INSERT INTO facultati VALUES ('Matematica','Timisoara',80,20,1970,4)
INSERT INTO facultati VALUES ('Medicina','Timisoara',60,15,1973,3)
INSERT INTO facultati VALUES ('Medicina','Cluj',100,25,1960,5)
INSERT INTO facultati VALUES ('Medicina','Bucuresti',100,25,1961,5)
INSERT INTO facultati VALUES ('Calculatoare','Bucuresti',100,25,1971,6)
INSERT INTO facultati VALUES ('Calculatoare','Timisoara',100,25,1973,6)
Se cer următoarele:
1. Fiind citită de la tastatură o anumită localitate să se determine numărul total de studenţi înscrişi la facultăţile din respectiva localitate.
SELECT SUM(nrstud) FROM facultati WHERE localitate='Timisoara'
2. Să se afişeze facultăţile în ordine descrescătoare după numărul de studenţi.
SELECT denumire,localitate,nrstud FROM facultati ORDER BY nrstud DESC
3. Care este facultatea cu cei mai puţini studenţi bursieri din Cluj?
SELECT denumire,localitate,nrstud,nrstudb FROM facultati WHERE (localitate='Cluj')and (nrstudb=(SELECT MIN(nrstudb)FROM facultati WHERE localitate='Cluj'))
4. Care este cea mai demult înfiinţată facultate?
SELECT denumire,localitate,an_inf FROM facultati WHERE an_inf=(SELECT MIN(an_inf) FROM facultati)
5. Care este numărul de studenţi nebursieri de la facultatea de Medicină din Cluj?
SELECT denumire,localitate,nrstud,nrstudb,nrstud-nrstudb NEBURSIERI FROM facultati WHERE localitate='Cluj' and denumire='Medicina'
6. Să se afişeze facultăţile grupate pe localităţi în ordine cresecătoare a numărului de specializări oferite.
SELECT denumire,localitate,nrspec FROM facultati ORDER BY localitate,nrspec
7. Să se afişeze facultăţile în ordine cronologică a înfiinţării lor, iar pentru acelaşi an de înfiinţare alfabetic.
SELECT denumire,localitate,an_inf FROM facultati ORDER BY an_inf,denumire
8. Care este numărul total de studenţi din Bucureşti şi Timişoara?
SELECT SUM(nrstud)FROM facultati WHERE localitate='Bucuresti' or localitate='Timisoara'
9. Să se afişeze localităţile unde există facultăţi.
SELECT DISTINCT localitate FROM facultati
10. Să se afişeze facultăţile în ordine descrescătoare a numărului de studenţi.
SELECT denumire,localitate,nrstud FROM facultati ORDER BY nrstud DESC
11. Să se afişeze facultăţile în ordine crescătoare a numărului de studenţi, iar pentru acelaşi număr de studenţi în ordine alfabetică.
SELECT denumire,localitate,nrstud FROM facultati ORDER BY nrstud,denumire,localitate
12. Să de determine numărul de facultăţi înfiinţate după un anumit an introdus de la tastatură.
SELECT COUNT(*) FROM facultati WHERE an_inf>=1970
2. Elevi
Se dă următoarea structură de fişier:
Nume C 20
Prenume C 20
Clasa C 4
Nrabs N 3
Motivate N 3
Mpurtare N 2
CREATE TABLE elevi(nume varchar2(20), prenume varchar2(20), clasa varchar2(4), nrabs number(3), motivate number(3), mpurtare number(2))
INSERT INTO elevi VALUES ('Popescu','Ana','10E',20,18,null)
INSERT INTO elevi VALUES ('Popescu','Dan','12G',14,2,null)
INSERT INTO elevi VALUES ('Vasiu','Maria','09F',15,4,null)
INSERT INTO elevi VALUES ('Cristea','Dorina','09F',10,10,null)
INSERT INTO elevi VALUES ('Adam','Maria','10E',15,5,null)
Se cer următoarele:
1. Să se ordoneze crescător după nume şi prenume într-o altă bază de date şi să se afişeze conţinutul acesteia.
CREATE TABLE elevi_ord AS SELECT * FROM elevi ORDER BY nume,prenume
SELECT * FROM elevi_ord
2. Să se afişeze elevii grupaţi pe clase în ordine descrescătoare a numărului de absenţe nemotivate.
SELECT clasa,nume,prenume,nrabs,motivate,nrabs-motivate nemotivate FROM elevi ORDER BY clasa,nemotivate DESC
3. Să se caute după nume şi prenume un anumit elev şi să se afişeze numărul de absenţe motivate.
SELECT clasa,nume,prenume,motivate FROM elevi WHERE nume='Cristea' and prenume='Dorina'
4. Să se afişeze elevii pe clase în ordine alfabetică.
SELECT clasa,nume,prenume FROM elevi ORDER BY clasa,nume,prenume
5. Să se afişeze elevii grupaţi după numărul de absenţe nemotivate în ordine alfabetică.
SELECT nrabs-motivate AS nemotivate,nume,prenume FROM elevi
ORDER BY nemotivate,nume,prenume
6. Să se afişeze elevii care au mai mult de 10 absenţe nemotivate.
SELECT nrabs-motivate AS nemotivate,nume,prenume
FROM elevi
WHERE nrabs-motivate>=10
7. Să se ordoneze crescător după clasă, nume şi prenume într-o altă bază de date şi să se afişeze conţinutul acesteia.
CREATE TABLE el_ord AS SELECT * FROM elevi ORDER BY clasa,nume,prenume
SELECT * FROM el_ord
8. Să se înlocuiască media la purtare cu 9 pentru cei care au un număr de absenţe nemotivate între 10-19.
UPDATE elevi
SET mpurtare=9
WHERE nrabs-motivate BETWEEN 10 AND 19
9. Să se ordoneze crescător după numărul de absenţe într-o altă bază de date şi să se afişeze conţinutul acesteia.
CREATE TABLE el_abs AS SELECT * FROM elevi ORDER BY nrabs
SELECT * FROM el_abs
10. Să se afişeze elevii cu numărul de absenţe cuprins între două valori date X şi Y.
SELECT * FROM elevi
WHERE nrabs BETWEEN 12 and 16
Preview document
Conținut arhivă zip
- Probleme Rezolvate Oracle.doc