rezolvari sql

11
Subiecte atestat Baze de date _____________________________________________________________________ _________ 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) 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, 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 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) _____________________________________________________________________ ________1

Upload: camelia-diana

Post on 25-Jul-2015

342 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

I. SISTEME DE GESTIUNE A BAZELOR DE DATE

1. FacultăţiSe dă următoarea structură de fişier:

Denumire C,20 (Denumirea facultăţii)Localitate C,15Nrstud 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)

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 facultatiWhere localitate=’Timisoara’;

2. Să se afişeze facultăţile în ordine descrescătoare după numărul de studenţi.

Select denumire, nrstudFrom facultatiOrder by nrstud desc;

3. Care este facultatea cu cei mai puţini studenţi bursieri din Cluj?

Select denumire, localitate, nrstudFrom facultatiWhere (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_infFrom facultatiWhere 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 as nebursieriFrom 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.

_____________________________________________________________________________1

Page 2: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

Select denumire, nrspecFrom facultatiGroup by localitate Order by nrspec

7. Să se afişeze facultăţile în ordine cronogogică a înfiinţării lor, iar pentru acelaşi an de înfiinţare alfabetic.

Select denumire, localitate, an_infFrom facultatiOrder by an_inf, denumire;

8. Care este numărul total de studenţi din Bucureşti şi Timişoara?

Select sum(nrstud)From facultatiWhere 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 nrstud, denumire, localitateFrom facultatiOrder 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, nrstudFrom facultatiOrder 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 facultatiWhere an_inf>1960;

_____________________________________________________________________________2

Page 3: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

2. EleviSe dă următoarea structură de fişier:

Nume C 20Prenume C 20Clasa C 4Nrabs N 3Motivate N 3Mpurtare N 2

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_nou asSelect * From eleviOrder by nume, prenume

Select *From elevi_nou;

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 AS nemotivateFrom eleviOrder 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 nume, prenume, motivateFrom eleviWhere nume= ‘Munteanu’ and prenume=’Ana’ ;

4. Să se afişeze elevii pe clase în ordine alfabetică.

Select nume, prenume, clasaFrom eleviOrder by clasa, nume, prenume ;

5. Să se afişeze elevii grupaţi după numărul de absenţe nemotivate în ordine alfabetică.

Select nume, prenume, clasa, nrabs-motivate as NemotivateFrom eleviOrder by nemotivate, nume, prenume ;

6. Să se afişeze elevii care au mai mult de 10 absenţe nemotivate.

_____________________________________________________________________________3

Page 4: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

Select nume, prenume, nrabs-motivate as NemotivateFrom eleviWhere 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 elevi_21 asSelect *From eleviOrder by clasa, nume, prenume;

Select *From elevi_21;

8. Să se înlocuiască media la purtare cu 9 pentru cei care au un număr de absenţe nemotivate între 10-19.

Update eleviSet mpurtare=9Where nrabs-motivate between 10 and 19 ;

Select *From elevi ;

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 elevi22 asSelect *From eleviOrder by nrabs;

Select *From elevi22;

10. Să se afişeze elevii cu numărul de absenţe cuprins între două valori date X şi Y.

Seelect nume, prenume, nrabsFrom eleviWhere nrabs between 10 and 20 ;

11. Să se afişeze elevii în ordine descrescătoare a mediei la purtare.

Select *From eleviOrder by nrpurtare desc;

12. Să se ordoneze crescător după clasă şi numărul de absenţe nemotivate într-o altă bază de date şi să se afişeze conţinutul acesteia.

_____________________________________________________________________________4

Page 5: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

Create table elevin asSelect nume, prenume, clasa, nrabs, motivate, nrabs-motivate as nemotivateFrom eleviOrder by clasa, nemotivateSelect*From elevin;

13. Să se înlocuiască media la purtare cu 8 pentru cei care au un număr de absenţe nemotivate între 20 şi 29.

Update eleviSet mpurtare=8Where nrabs-motivate between 20 and 29 ;

14. Să se afişeze elevii cu numărul de absenţe nemotivate mai mare decât 30.

Select *From eleviWhere nrabs-motivate>30;

15. Să se înlocuiască câmpul media la purtare astfel 10 (0-9 absenţe), 9(10-19 absenţe), 8(20-29 absenţe).

Update eleviSet mpurtare=10Where nrabs-motivate between 0 and 9 ;

Update eleviSet mpurare=9Where nrabs-motivate between 10 and 19

Update eleviSet mpurtare=8Where nrabs-motivate between 20 and 29 ;

16. Să se afişeze elevii grupaţi după media la purtare în ordine alfabetică.

Select *From eleviOrder by mpurtare,nume,prenume;

_____________________________________________________________________________5

Page 6: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

3. Biblioteca

Creează o tabela Biblioteca care va cuprinde informaţii despre cărţile dintr-o bibliotecă:AUTOR TITLU DOMENIU ANAP EDITURAC,20 C,20 C,20 N,4 C,15

Se cer următoarele:1. Se cere căutarea unei cărţi după titlul aproximativ.2. Afişează toate cărţile unei edituri care au apărut într-un anumit an în ordinea alfabetică a autorilor şi

în cadrul aceluiaşi autor în ordinea alfabetică a titlurilor.3. Să se afişeze cărţile unei anumite edituri citite de la tastatură în ordinea apariţiei.4. Câte cărţi aparţinând unui anumit domeniu dat au apărut la editura Donaris?5. Fiind dat numele unui autor şi un an, determinaţi dacă au apărut în acel an cărţi ale respectivului

autor.6. Fiind dat un anumit domeniu, să se determine câte cărţi aparţinând respectivului domeniu au apărut

după 1995.7. Care este cea mai recent apărută carte de la editura Donaris?8. Câte cărţi au apărut la o anumită editură dată după 1995?

Crearea de tabela

Create table biblioteca(autor varchar2(20), Titlu varchar2(20), Domeniu varchar2(20), Anap number(4),Editura varchar(15));

1. Select *FROM bibliotecaWHERE titlu LIKE ‘%mare%’;

2. Select anap, autor, titluFrom bibliotecaOrder by anap, autor titlu;

3. Select autor, titlu, editura, anapFrom bibliotecaWhere editura=’ ‘Order by anap;;

4. Select count(*)From bibliotecaWhere domeniu=’ ‘ and editura=’Donaris’;

5. Select *from biblioteca

_____________________________________________________________________________6

Page 7: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

where autor=’ ‘ and anap=1980;6. Select count(*)

From bibliotecaWhere domeniu=’ ‘ and anap>1995

7. Select *From bibliotecaWhere anap=(select max(anap) From biblioteca

Where editura=’Donaris’);8. Select count(*)

from bibliotecawhere editura=’ ‘ and anap>1995

9. Select *From bibliotecaOrder by autor, titlu;

_____________________________________________________________________________7

Page 8: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

4. Gestiune Creaţi un o tabela Gestiune cu informatii despre gestionarii unor raioane de magazine:

Cod magazinN,2

Cod raionN,2

GestionarC,25

Data angajăriiD,8

SalariuN,7

Se cer următoarele:1. Când a fost angajat un anumit gestionar al cărui nume se dă?2. Care sunt gestionarii de la un anumit magazin al cărui cod se dă? Se vor afişa pentru fiecare:

numele, codul raionului de care răspunde şi salariul.3. Care sunt gestionarii de la raioanele de încălţăminte? Se dă codul pentru raioanele de încălţăminte.4. Să se afişeze gestionarii în ordine descrescătoare a salariilor, iar pentru acelaşi salariu alfabetic.5. Ce angajat răspunde de primul magazin din fişier?6. Care este totalul salariilor gestionarilor de la magazinul 25?7. Care sunt gestionarii angajaţi la o anumită dată care se citeşte de la tastatură?8. Care sunt gestionarii angajaţi anul trecut?

GESTIUNECREATE TABLE gestiune(codmag number(2), Codraion number(2), Gestionar varchar2(25), Dataang date, Salariu number(7))

1. Select dataangFrom gestiuneWhere gestionar=’ ‘;

2. Select gestionar, codraion, salariuFrom gestiuneWhere codmag=124;

3. Select gestionarFrom gestiuneWhere codraion=1234;

4. Select salariu, gestionarFrom gestiuneOrder by salariu desc,nume;

5. Select gestionarFrom gestiuneWhere codmag=(select min(codmag)From gestiune);

6. Select sum(salariu) as ‘Salariu total’From gestiuneWhere codmag=25;

7. Select *

_____________________________________________________________________________8

Page 9: rezolvari sql

Subiecte atestat Baze de date______________________________________________________________________________

From gestiuneWhere dataang=’12-feb-2007’;

8. Select *From gestiuneWhere TO_CHAR(dataang, ‘YYYY’)=TO_CHAR(SYSDATE-365,’YYYY’)

_____________________________________________________________________________9