LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul...

43
UNIVERSITATEA DE STAT „B. P. HASDEU” DIN CAHUL LIMBAJUL SQL: exemple și aplicații Indicații metodico-didactice Svetlana BÎRLEA CAHUL, 2015

Transcript of LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul...

Page 1: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

UNIVERSITATEA DE STAT „B. P. HASDEU” DIN CAHUL

LIMBAJUL SQL: exemple și aplicații

Indicații metodico-didactice

Svetlana BÎRLEA

CAHUL, 2015

Page 2: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

2

CZU 004.655.3(076.5)

B 54

Aprobată spre publicare de către Comisia Metodico-

Științifică a Universității de Stat „B.P.Hasdeu” din Cahul,

proces verbal nr. 1 din 12.11.2015 în calitate de indicații

metodico-didactice pentru studeții specialităților: Informatică și

Informatică-Matematică.

Recenzenţi:

Braicov Andrei, doctor conferențiar universitar, decan al

Facultății de Fizică, Matematică și Tehnologii Informaționale,

Universitatea de Stat din Tiraspol.

Bîclea Diana, doctor, conf. univ. interim., Universitatea

de Stat „B.P. Hasdeu din Cahul”.

Velicova Tatiana, doctor, Universitatea de Stat din

Comrat.

ISBN 978-9975-88-005-3.

Universitatea de Stat „Bogdan Petriceicu Hasdeu” din Cahul

Limbajul SQL: exemple și aplicații: Indicații metodico-

didactice / Svetlana Bîrlea. – Cahul: Universitatea de Stat

"Bogdan Petriceicu Hasdeu" din Cahul, 2015 (Tipogr.

"Centrografic"). – 43 p.

Bibliogr.: p. 37. – 150 ex.

ISBN 978-9975-88-005-3.

004.655.3(076.5)

B 54

Page 3: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

3

CUPRINS

PREFAȚĂ ................................................................................ 4

I. PREZENTAREA BAZEI DE DATE „UNIVERSITATE”

................................................................................................... 4

1.1. Crearea tabelelor și declararea atributelor prin

comenzi SQL ............................................................................ 8

1.2. Modificarea structurii tabelelor ...................................... 9

1.3. Ștergerea tabelelor ......................................................... 11

1.4. Aplicații practice ............................................................ 11

II. INSERAREA, MODIFCAREA ȘI ȘTERGEREA

LINIILOR .............................................................................. 12

2.1. Comanda INSERT ......................................................... 12

2.2. Comanda DELETE ........................................................ 13

2.3. Comanda UPDATE ........................................................ 14

2.4. Aplicații practice ............................................................ 15

III. EXTRAGEREA INFORMAȚIILOR DIN BAZA DE

DATE (FRAZA SELECT) .................................................... 17

3.1. Opțiunea ORDER BY .................................................... 19

3.2. Operatorii BETWEEN, LIKE, IN ................................ 21

3.3. Funcții-agregat: SUM, COUNT, AVG, MAX, MIN ... 25

3.4. Clauza GROUP BY ........................................................ 26

3.5 Clauza HAVING ............................................................. 27

3.6. Aplicații practice ............................................................ 28

IV. LUCRU INDIVIDUAL................................................... 35

BIBLIOGRAFIA ................................................................... 37

ANEXE ................................................................................... 38

Page 4: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

4

PREFAȚĂ

Sistemele de calcul au fost utilizate încă din anii 1950 în

scopul stocării și procesării datelor. Conceptul de bază de date

a apărut în a doua jumătate a anilor 1960. În prezent, bazele de

date constituie principala modalitate de stocare și gestionare a

datelor în cadrul sistemelor informatice.

Informatica de gestiune a impus dezvoltarea şi

diversificarea rapidă a Sistemelor de Gestiune a Bazelor de

Date (S.G.B.D.) şi a condus la realizarea unui număr

impresionant de aplicaţii informatice cu baze de date.

Sistemele şi aplicaţiile informatice cu baze de date sunt

utilizate azi în orice domeniu de activitate și constituie o

tehnologie de infrastructură esențială pentru mediul de faceri

modern.

Lucrarea SQL exemple și aplicații are menirea de a

consolida cunoștințele teoretice și formarea aptitudinilor

practice în ceea ce privește crearea şi utilizarea bazelor de date

prin intermediul limbajului SQL (Structured Query Language).

În ziua de azi, limbajul standard SQL reprezintă nucleul

dezvoltării aplicațiilor ce utilizează baze de date. Astfel,

obiectivul principal al lucării este pregătirea studenților în

domeniul proiectării și utilizării bazelor de date în diferite

domenii economico-sociale.

Lucrarea dată este structurată în 4 compartimente.

Primele trei compartimente din lucrare conțin partea teoretică

(noțiuni generale), exemple rezolvate, precum și sunt propuse

aplicații practice pentru lucrări de laborator. În ultimul

compartiment se propune lucrul individual care va constitui

portofoliul studentului la disciplina Baze de Date.

Considerăm că indicațiile din lucrare vor fi utile

studenţilor şi profesorilor specializaţi în informatică, economie,

baze de date etc., cît și celor care doresc să cunoască limbajul

SQL.

Page 5: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

5

I. PREZENTAREA BAZEI DE DATE „UNIVERSITATE”

Pentru facilitarea realizării obiectivelor și sarcinilor

propuse în lucrarea dată, vom crea și utiliza baza de date –

„UNIVERSITATE”. Astfel, vom utiliza cu precădere baza de

date UNIVERSITATE, în calitate de „cobai” sau bază de date

„martor”.

Baza de date UNIVERSITATE este proiectată pentru

evidența reușitei studenților. Deci, ea trebuie să conțină notele

studenților la toate disciplinele din sesiunea de examene,

precum și informații despre studenți, profesori și disciplinele

studiate. Pentru a stoca informația vom folosi modelul

relațional de reprezentare a datelor. Acest model stochează

datele în unu sau mai multe tabele (entități, relații) între care

există relații de tip unu-la-mulți (1-n ).

Este necesar, mai întîi de toate, să identificăm entitățile

bazei de date, cît și atributele entităților. O atenție deosebită

trebuie acordată și atributelor PRIMARY KEY, pentru

identificarea unică a înregistrărilor dintr-un tabel.

În cazul nostru structura bazei de date va fi următoarea:

STUDENȚI [Idstud, Grupa, Nume, Prenume, Annast, Adresa,

Tel]

DISCIPLINA [Iddiscip, Dendiscip, Nrore, Nrcrdite, Idprof]

PROFESOR [Idprof, Nume, Prenume, Titlust, Gradst,

Idcatedra]

CATEDRA [Idcatedra, Dencatedra, sefcatedra]

REUSITA [Idr, Idstud, Iddiscip, Nota, Dataexam]

Numele coloanelor ce alcătuiesc cheia primară sunt

subliniate cu o linie continuă.

În figura 1. este prezentat modelul relațional al bazei de

date UNIVERSITATE.

Page 6: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

6

Figura 1. Modelul relațional al bazei de date

UNIVERSITATE.

Tabelul STUDENȚI conține informații generale despre

studenți. Fiecare linie din tabel descrie un student. Atributele

sunt:

Idstud – codul studentului;

Grupa – denumirea grupei în care este înmatriculat

studentul;

Nume – numele studentului;

Prenume – prenumele studentului;

Annast – anul nasterii studentului;

Adresa – adresa studentului;

Tel – numărul de telefon al studentului;

Tabelul DISCIPLINA conține informații generale despre

disciplinele studiate. Fiecare linie din tabel descrie o disciplină.

Atributele sunt:

Iddiscip – codul disciplinei;

Dendiscip – denumirea disciplinei;

Nrore – numărul total de ore, conform planului de

studii;

Nrcredite – numărul de credite, conform planului de

studii;

Page 7: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

7

Idprof – codul profesorului.

Tabelul PROFESOR conține informații generale despre

profesori. Fiecare linie din tabel descrie un profesor. Atributele

sunt:

Idprof – codul profesorului;

Nume – numele profesorului;

Prenume – prenumele profesorului;

Titlust – titlul științific;

Gradst – gradul științific;

Idcatedra – codul catedrei unde activează cadrul

didactic.

Tabelul CATEDRA conține informații generale despre

profesori. Fiecare linie din tabel descrie o catedră. Atributele

sunt:

Idcatedra – codul catedrei unde activează cadrul

didactic.

Dencatedra – denumirea catedrei;

Prenume – prenumele profesorului;

Sefcatedra – șeful de catedră.

Tabelul REUSITA conține informații generale despre

rezultatele obținute de studenți la sesiunea de examinare, adică

ce note au primit la fiecare disciplină în sesiune. Atributele

sunt:

Idr – codul reușitei.

Idstud – codul studentului;

Iddiscip – codul disciplinei;

Nota – nota obținută la examen;

Dataexam – data susținerii examenului.

Page 8: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

8

1.1. Crearea tabelelor și declararea atributelor prin

comenzi SQL

Principalele comenzi SQL care se regăsesc, într-o formă

sau alta, în multe SGBD-uri actuale sunt:

Comenzi pentru definirea bazei de date:

CREATE table – adaugă un nou tabel în baza de date;

DROP table - șterge un tabel din baza de date;

ALTER table – modifică structura unui tabel;

RENAME table – redenumeste tabelul cu un nume nou.

Comenzi pentru manipularea datelor:

SELECT – permite extragerea datelor din baza de date;

INSERT – adăugarea de noi linii (înregistrări) în tabele;

DELETE - ștergerea liniilor din tabele;

UPDATE – modificarea valorilor unor atribute (cîmpuri).

În cele ce urmează, vom da exemple de creare a tabelelor

și modificare a structurii lor.

Comanda SQL utilizată pentru crearea unei tabele este

CREATE table. Sintaxa simplificată pentru această comandă

este următoarea:

CREATE table <nume tabelă> (

<coloana_1> <tip de dată>,

<coloana_2> <tip de dată>,

<coloana_3> <tip de dată>,

...............................................

<coloana_n> <tip de dată>,

[alte restricții])

Tipurile de date utilizate în SQL sunt: int sau integer,

char sau varchar, smallint, numeric, float, date, time.

Pentru crearea unui tabel și declararea atributelor

acestuia, comanda CREATE table are, în cazul tabelului

Studenți următoarea formă:

Page 9: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

9

CREATE table Studenți(

Idstud int not null primary key,

Grupa varchar(15),

Nume varchar(35),

Prenume varchar(35),

Annast int,

Adresa varchar(50),

Tel integer);

Cheia primară a unei tabele este definită de clauza primary

key, care poate fi plasată fie imediat după atributul-cheie (ca în

exemplul precedent), fie după descrierea ultimului atribut al

tabelei.

Exemplul 1:

CREATE table Studenți(

Idstud integer not null,

Grupa varchar(15),

Nume varchar(35),

Prenume varchar(35),

Datanast date,

Adresa varchar(50),

Tel integer,

Primary key(Idstud));

1.2. Modificarea structurii tabelelor

Structura unei tabele poate fi modificată ulterior, în

sensul că este posibil să adăugăm o coloană nouă în tabelă, să

ștergem o coloană existentă din tabelă, sau să modificăm

specificațiile (de tip, de restricții etc.) ale unei coloane

existente.

Comanda dedicată modificării tabelelor în SQL este

ALTER table:

ALTER table <nume-tabelă> ADD/MODIFY/DROP

<nume-coloană> specificații...

Page 10: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

10

Adăugarea unui nou atribut (coloane): Instabsolv

(instituția absolvită) în tabelul Studenți se realizează astfel:

ALTER table Studenți ADD Instabsolv varchar(50)

Coloanele noi, adăugate prin intermediul comenzii

ALTER table se adaugă la sfîrșitul tabelei, în cazul nostru

coloana Instabsolv se va adăuga la sfîrșitul tabelei Studenți și

anume după cîmpul Tel.

Schimbarea tipului de date a unei coloane deja existente

în tabel poate fi modificat doar în cazul cînd în coloana

respectivă încă nu s-au introdus date.

Pentru eliminarea coloanei Instabsolv adăugate anterior

se folosește:

ALTER table Studenți DROP column Instabsolv

În cazul cînd la crearea tabelelor nu s-au definit

restricțiile, atunci ele de asemenea pot fi adăugate (s-au

eliminate) cu comanda ALTER table:

Eliminarea restricției primary key din tabelul Studenți:

ALTER table Studenți DROP primary key

Adăugarea restricției primary key după crearea tabelei sau

reinstituirea ei după ce a fost dezactivată:

ALTER table Studenți ADD primary key(Idstud)

În acest caz coloanele primary key trebuie să fi fost definite

anterior astfel încît să nu accepte valoarea NULL.

Page 11: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

11

1.3. Ștergerea tabelelor

Comanda de ștergere a unei tabele este DROP table.

Înainte de a elimina o tabelă din baza de date trebuie să ne

asigurăm ca ea nu mai conține înregistrări.

Sintaxa acestei comenzi este:

DROP table <nume-tabelă>

Pentru a șterge din baza de date UNIVERSITATE tabela

Studenți se realizează astfel:

DROP table Studenți

1.4. Aplicații practice

1. Creați tabela Disciplina din baza de date UNIVERSITATE

utlizînd comanda CREATE table.

2. Creați tabela Profesor din baza de date UNIVERSITATE

utlizînd comanda CREATE table.

3. Creați tabela Catedra din baza de date UNIVERSITATE

utlizînd comanda CREATE table.

4. Creați tabela Reușita din baza de date UNIVERSITATE

utlizînd comanda CREATE table.

5. Modificați structura tabelei Profesor, adăugînd coloana

Stagiu.

6. Modificați structura tabelei Profesor, adăugînd coloana

Annastere.

7. Modificați structura tabelei Catedra, adăugînd coloana

Adresa.

8. Modificați structura tabelei Profesor, adăugînd coloana

Email.

9. Eliminați coloana Stagiu din tabela Profesor.

10. Eliminați coloana Annastere din tabela Profesor.

11. Eliminați coloana Adresa din tabela Catedra.

12. Eliminați restricția primary key din tabela Catedra.

13. Reinstituiți restricția primary key în tabela Catedra.

Page 12: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

12

II. INSERAREA, MODIFCAREA ȘI ȘTERGEREA

LINIILOR

Limbajul SQL prezintă comenzi dedicate modificării

conținutului unei tabele, înțelegînd prin aceasta 3 acțiuni prin

care se actualizează baza de date:

adăugarea de noi linii (înregistrări în tabelă);

ștergerea unor linii;

modificarea valorii unui atribut (coloane, cîmp).

utilizînd următoarele comenzi de manipulare a datelor:

INSERT, DELETE și UPDATE.

2.1. Comanda INSERT

Comanda SQL de adăugare de noi linii în tabelă este

INSERT, care are, în modul de lucru cel mai simplu, următorul

format:

INSERT into <nume-tabelă>

Values (valoare-atribut1, valoare-atribut2,...)

Valorile se introduc în conformitate cu lista coloanelor

precizată la crearea tabelei respective, lista valorilor trebuie să

fie completă.

Exemplul 1:

INSERT into Studenți values

(1,’IT14’,’Ursachi’,’Daniel’,1998,’Gotesti’,78987542);

În cazul cînd un cîmp de tip integer nu conține nici o

valoare, atunci se va scrie NULL, iar dacă este de tip text se va

lăsa spațiu.

Exemplul 2:

INSERT into Studenți values

(2,’IT14’,’Levitchi’,’Iulia’,1997,”,NULL);

După rularea comenzii INSERT din ambele exemple, tabela

STUDENȚI va arăta astfel:

Page 13: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

13

Idstud Grupa Nume Prenume Annast Adresa Tel

1 IT14 Ursachi Daniel 1998 Gotesti 78987542

2 IT14 Levitchi Iulia 1997

Un alt mod de introducere a datelor în tabele este prin

specificarea coloanelor:

INSERT into <nume-tabelă> [(atribut1, atribut2,...)]

Values (valoare-atribut1, valoare-atribut2,...)

Exemplul 3:

INSERT into Studenți (Idstud, Grupa, Nume, Prenume, Annast,

Adresa, Tel)

Values

(3,’IT14’,’Roman’,’Alexandru’,1998,’Cahul’,65287542);

2.2. Comanda DELETE

Comanda SQL pentru ștergerea uneia sau mai multe linii

dintr-o tabelă este DELETE. Fromatul general al acestei

comenzi este:

DELETE

FROM <nume-tabela>

WHERE <condiție>

Astfel, din tabelă vor fi șterse toate liniile care îndeplinesc

condiția specificată în predicatul din clauza WHERE.

În cazul cînd nu se specifică nici o condiție sunt șterese toate

liniile tabelei.

Exemplul 1:

Din tabela Studenti să se elimine studenții născuți în anul

1998.

DELETE

FROM Studenți

WHERE anul=1998

Page 14: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

14

Exemplul 1:

Din tabela Studenti să se elimine studenții din Cahul născuți

după anul 1996.

DELETE

FROM Studenți

WHERE Adresa=’Cahul’ and Annast>1996.

2.3. Comanda UPDATE

Pentru a modifica valoare unuia sau mai multor atribute

pe una sau mai multe linii dintr-o tabelă, se folosește comanda

UPDATE cu formatul general (simplificat):

UPDATE <nume-tabela>

SET atribut=valoare

[WHERE condiție]

Drept urmare, sunt actualizate toate liniile din tabelă pentru

care este satisfăcută condiția specificată în clauza WHERE. În

cazul cînd nu se specifică nici o condiție se actualizează toate

liniile tabelei. Noile valori sunt date de clauza SET.

Exemplul 1:

În urma comasării grupelor academice, se decide modificarea

denumirii grupei din IT14 în IM14 pentru toți studenții.

UPDATE Studenți

SET Grupa=’IM14’

Exemplul 2:

Modificați numele studentului cu Idstud=2 din Levitchi în

Ciobanu.

UPDATE Studenți

SET Nume=’Ciobanu’

WHERE Idstud=2

Page 15: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

15

Exemplul 3:

Noul număr de telefon al studentului Roman este 079384568.

Să se opereze modificarea în baza de date.

UPDATE Studenți

SET Tel=079384568

WHERE Nume=’Roman’

2.4. Aplicații practice

I. Inserarea liniilor în tabele

1. Introduceți datele în tabela Disciplina din baza de date

UNIVERSITATE.

2. Introduceți datele în tabela Profesor din baza de date

UNIVERSITATE.

3. Introduceți datele în tabela Catedra din baza de date

UNIVERSITATE.

4. Introduceți datele în tabela Reușita din baza de date

UNIVERSITATE.

II. Ștergerea liniilor

1. Eliminați din baza de date disciplinele predate de profesorul

Munteanu Ivan.

2. Eliminați din baza de date toți studenții care s-au născut în

orașul Leova.

3. Eliminați din baza de date toți studenții care s-au născut

după anul 1997.

4. Eliminați din baza de date toate disciplinele cu numărul de

ore mai mic de 120 ore.

5. Eliminați din baza de date toate disciplinele de 4 credite.

6. Eliminați din baza de date toti profesorii de la catedra de

Informatică și Matematică.

7. Efectuați 3 comenzi diferite de ștergere a datelor dintr-o

tabelă a bazei de date UNIVERSITATE, după criteriile alese

de Dvs.

III. Modificarea valorilor unor atribute

1. Noua adresa a studenților din grupa IM14 este

[email protected]. Să se opereze modificarea în baza de date.

Page 16: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

16

2. Modificați denumirea disciplinei cu codul 4 din Statistica în

Statistica Economică.

3. Efectuați 5 comenzi de modificare a datelor din baza de date

UNIVERSITATE, condiția de modificare o specificați Dvs.

Page 17: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

17

III. EXTRAGEREA INFORMAȚIILOR DIN BAZA DE

DATE (FRAZA SELECT)

Procesul de extragere a informațiilor dintr-o bază de date

se numește interogare. Realizarea unei interogări în limbajul

SQL se realizează prin intermediul frazei SELECT.

O clauză SELECT are un format pe cît de simplu pe atît

de flexibil. Formatul general al clauzei SELECT poate fi

reprezentat astfel:

SELECT [DISTINCT] lista_rezultat

FROM tabela sau tabele

[WHERE conditie]

[GROUP BY coloana1, coloana2….]

[HAVING conditie_de_grup]

[ORDER BY coloana1 [ASC|DESC],…]

După cum se observă doar clauzele SELECT și FROM sunt

obligatorii, celelalte fiind opționale.

La modul general și cel mai simplist, o consultare simplă

în SQL poate fi reprezentată astfel:

SELECT C1,C2,…, Cn

FROM R1, R2,…, Rm

WHERE condiție

În clauza SELECT se desemnează lista de atribute (coloane)

din rezultat. Clauza FROM este cea în care sunt enumerate

tabelele (relațiile) din care vor fi extrase informațiile. În clauza

WHERE se specific condiția de selecție. Astfel, prin execuția

unei fraze SELECT se obține un rezultat de formă tabelară.

C1, C2,…, Cn – reprezintă coloanele rezultat;

R1, R2,…, Rm – sunt relațiile ce trebuie parcurse pentru

obținerea rezultatului;

Dacă în locul coloanelor C1, C2,…, Cn, apare simbolul

*, rezultatul va fi alcătuit din toate coloanele relațiilor

Page 18: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

18

specificate în clauza FROM. Coloanele din tabela rezultat

preiau denumirea din tabela/tabelele specificate în FROM.

Schimbarea denumirii coloanei se realizează prin clauza AS.

În limbajul SQL, liniile identice (dublurile) din rezultat

nu se elimină automat. Pentru a elimina liniile duplicat se

folosește clauza DISTINCT care apare între cuvîntul SELECT

și lista de elemente ale rezultatului:

SELECT DISTINCT C1,C2,…, Cn

FROM R1, R2,…, Rm

WHERE condiție

Exemplul 1: Selectați toată informația din tabela Studenți.

SELECT *

FROM Studenți

Exemplul 2: Selectați toată informația din tabela Profesor.

SELECT *

FROM Profesor

Exemplul 3: Selectați studenții din Cahul.

SELECT Nume, Prenume, Adresa

FROM Studenți

WHERE Adresa=’Cahul’

Exemplul 4: Selectați disciplinele cu numărul de credite mai

mare de 4.

SELECT *

FROM Disciplina

WHERE Nrcredite>4

Exemplul 4: Selectați studenții născuți în anul 1999 și 2002.

SELECT *

FROM Studenți

WHERE Annast=1999 or Annast=2003

Page 19: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

19

3.1. Opțiunea ORDER BY

În practică, ordinea de prezentare a rezultatelor este

importantă. În SQL există posibilitatea de sortare a

înregistrărilor în funcție de necesitățile utilizatorilor.

Ordonarea înregistrărilor (liniilor) în rezultatul unei

interogări este posibilă prin clauza ORDER BY. Aceasta este

ultima clauză a frazei SELECT, care poate conține nume de

coloane, aliasuri de coloane.

Exemplul 1: Să se obțină lista studenților în ordine alfabetică.

SELECT*

FROM Studenți

ORDER BY Nume

Aranjarea se va face implicit crescător (ASC). Prin

opțiunea DESC, ordinea prezentării se inversează, adică va fi în

ordine descrescătoare. Cum am menționat anterior, se pot

specifica mai multe coloane care să servească drept criterii

suplimentare de ordonare. La valori egale ale primului atribut,

intră în acțiune criteriul de „balotaj”, care este al doilea atribut

etc.

Exemplul 2: Să se obțină, în ordinea descrescătore a adresei,

lista studenților în ordine crescătoare.

SELECT Idstud, Adresa, Nume, Prenume

FROM Studenți

ORDER BY Adresa DESC, Nume ASC

Page 20: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

20

Idstud Adresa Nume Prenume

8 Telenești Manole Valeriu

7 Telenești Rotari Andrei

29 Taraclia Balan Victor

27 Taraclia Miron Valeriu

28 Taraclia Tulum Alexei

4 Leova Butnaru Ion

22 Leova Chihai Maria

19 Leova Lavric Stelia

23 Leova Para Ion

6 Leova Pascal Lidia

12 Leova Stoica Mihai

21 Gotești Chihai Andrei

9 Gotești Onica Nina

2 Gotești Ursachi Daniel

13 Gotești Zaharia Inga

31 Cimișlia Eni Vera

30 Cimișlia Vieru Sergiu

17 Cantemir Dandeș Gheorghe

18 Cantemir Iacob Nicolae

10 Cantemir Para Ana

15 Cantemir Vulpe Iurie

3 Cahul Blaja Maria

25 Cahul Ciobanu Ion

5 Cahul Drangoi Elena

1 Cahul Levitchi Iulia

26 Cahul Miron Petru

11 Cahul Muchi Dumitru

20 Cahul Petcu Oleg

14 Cahul Roman Iulia

16 Cahul Roman Alexandru

24 Cahul Zaharia Ana

Figura 3.1. Două criterii de ordonare

Page 21: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

21

3.2. Operatorii BETWEEN, LIKE, IN

Prin utilizarea clauzei WHERE se poate specifica o

condiție de selecție. Pentru formularea condițiilor de selecție,

SQL permite utilizarea operatorilor obișnuiți: <, >, =, ≠, ≤, ≥;

conectori logici: AND (pentru și), OR (pentru sau), NOT

(pentru negație, inversarea condiției).

Pe lîngă operatorii menționați mai sus, SQL permite și

utilizarea altor operatori, dintre care ne vom opri la BETWEEN

(între, cuprins între), LIKE (ca și, la fel ca), IN (în), la care se

adaugă IS NULL.

Operatorul BETWEEN

Este util pentru definirea intervalelor. Utilizarea

operatorului BETWEEN este echivalentă cu utilizarea

operatorilor obișnuiți: >=, AND,<= , care se utilizează pentru

selectarea valorilor dintr-un interval.

Exemplul 1: Selectați lista studenților născuți în perioada

1995-2000.

SELECT*

FROM Studenți

WHERE Annast >= 1995 AND Annast <= 2000

Formatul general și simplist de utilizare a operatorului

BETWEEN este următorul:

BETWEEN valoare inferioară AND valoare superioară

Exemplul 2: Selectați lista studenților născuți în perioada

1995-2000 (utilizînd operatorul BETWEEN).

SELECT*

FROM Studenți

WHERE Annast BETWEEN 1995 AND 2000

Page 22: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

22

Operatorul BETWEEN poate fi utilizat atît pentru cîmpuri ce

conțin valori numerice, cît și pentru cîmpuri cu date de tip text

(șir de caractere).

Exemplul 3: Să se obțină în ordine descrescătoare lista

studenților cu adresa cuprinsă între Cahul și Gotești.

SELECT Idstud, Adresa, Nume, Prenume

FROM Studenți

WHERE Adresa BETWEEN 'Cahul’ AND 'Gotești'

ORDER BY Nume DESC

Idstud Adresa Nume Prenume

13 Gotești Zaharia Inga

24 Cahul Zaharia Ana

15 Cantemir Vulpe Iurie

30 Cimișlia Vieru Sergiu

2 Gotești Ursachi Daniel

14 Cahul Roman Iulia

16 Cahul Roman Alexandru

20 Cahul Petcu Oleg

10 Cantemir Para Ana

9 Gotești Onica Nina

11 Cahul Muchi Dumitru

26 Cahul Miron Petru

1 Cahul Levitchi Iulia

18 Cantemir Iacob Nicolae

31 Cimișlia Eni Vera

5 Cahul Drangoi Elena

17 Cantemir Dandeș Gheorghe

25 Cahul Ciobanu Ion

21 Gotești Chihai Andrei

3 Cahul Blaja Maria

Figura 3.2. Operatorul BETWEEN aplicat atributelor șir de

caractere

Page 23: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

23

Operatorul LIKE

Nu întotdeauna cînd dorim să obținem o anumită

informație din baza de date cunoaștem valoarea exactă, suntem

în postura de a nu ști cu exactitate cum se numește un student,

client, un oarecare produs etc. Această situația se întîmplă, cel

mai des, cînd baza de date conține un număr foarte mare de

valori. Anume pentru asemenea situații se utilizează operatorul

LIKE.

LIKE permite compararea unui atribut (exprsii) cu un

literal utilizînd o „mască” construită cu ajutorul specificatorilor

multipli ”%” și ”_” . procentul substituie un șir de lungime

variabilă, 0 – n caractere, în timp ce liniuța (underscore)

substituie un singur caracter.

Exemplul 1: Să se obțină lista studenților al căror nume este

format din 8 caractere.

SELECT*

FROM Studenți

WHERE Nume LIKE '________'

Exemplul 2: Să se obțină lista studenților al căror nume

începe cu litera B.

SELECT*

FROM Studenți

WHERE Nume LIKE 'B%

Exemplul 3: Să se obțină lista studenților al căror nume are

litera d pe a treia poziție.

SELECT*

FROM Studenți

WHERE Nume LIKE '__d%'

Exemplul 4: Să se obțină lista studenților în a căror adresă

apare măcar odată litera m.

SELECT*

FROM Studenți

Page 24: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

24

WHERE Adresa LIKE '%m%'

Operatorul IN

Operatorul IN indică apartenența la o mulțime de valori.

Atunci cînd se testează dacă valoarea unui atribut se încadrează

sau nu într-o listă de valori, în locul folosirii abundente a

operatorului OR este indicat să utilizăm operatorul IN.

Formatul general al operatorului IN:

valoare_atribut IN (expresie1, expresie2,...)

Rezultatul unei cereri ce conține operatorul IN va fi adevărat

dacă valoare_atribut va fi egală cu cel puțin una din valorile

expresie1, expresie2,...

Exemplul 1: Să se obțină lista studenților din Cahul, Telenești

și Leova (fără operatorul IN).

SELECT*

FROM Studenți

WHERE Adresa = 'Cahul' OR Adresa = 'Telenești' OR

Adresa = 'Leova'

Exemplul 2: Să se obțină lista studenților din Cahul, Telenești

și Leova (cu operatorul IN).

SELECT*

FROM Studenți

WHERE Adresa IN( 'Cahul','Telenești','Leova')

Exemplul 3: Care sunt studenții născuți în anul 1995, 1998 și

2001.

SELECT*

FROM Studenți

WHERE Annast IN(1995,1998,2001)

Se întîlnesc situații cînd la completarea bazei de date,

unui student nu i se cunosc adresa, numărul de telefon etc.,

astfel pe una sau mai multe linii aceste atribute au valoarea

NULL.

Page 25: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

25

Operatorul IS NULL a fost introdus pentru asemenea

situații, de a extrage toate valorile NULL pentru un anumit

atribut.

Exemplul 4: Pentru care studenți nu se cunoaște adresa?

SELECT*

FROM Studenți

WHERE Adresa IS NULL

3.3. Funcții-agregat: SUM, COUNT, AVG, MAX, MIN

Funcțiile-agregat sunt funcții care returnează o singură

valoare pentru un grup de linii dintr-un tabel. Formatul general

al unei fraze SELECT ce conține funcții-agregat (funcții de

grup) este:

SELECT funcția-predefenită1, funcția-predefinită2,...

FROM listă tabele

WHERE condiție

Drept rezultat al unei astfel de cereri se va obține o singură

linie.

Principalele funcții-agregat sunt:

Funcția COUNT(x) – care returnează numărul de valori

nenule ale expresiei x sau numărul de linii dintr-un rezultat al

unei interogări. Dacă x este precedat de cuvîntul DISTINCT

atunci funcția COUNT returnează numărul de valori distincte și

nenule ale expresiei x.

Dacă utilizăm: COUNT(*), atunci vom obține numărul

de înregistrări din grup.

Exemplul 1: Afișați numărul studenților.

SELECT COUNT (*) AS NumarStudenți

FROM Studenți

Prezența * ca argument al funcției COUNT are ca efect

numărarea liniilor tabelei Studenți.

Page 26: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

26

Exemplul 2: Afișați numărul studenților cu nume diferite.

SELECT COUNT (DISTINCT Nume) AS NumeDiferite

FROM Studenți

Funcția SUM – este una dintre cele mai utilizate funcții în

aplicațiile economice. Această funcție întoarce suma valorilor

unei expresii.

Exemplul 3: Afișați numărul total de ore la toate disciplinele

din tabela DISCIPLINA.

SELECT SUM (Nrore) AS TotalOre

FROM Disciplina

Exemplul 4: Afișați cîte discipline sunt de 6 credite și care

este numărul lor total de ore.

SELECT COUNT(Dendiscip) AS Numardiscipline,

SUM(Nrore) AS TotalOre

FROM Disciplina

WHERE Nrcredite=6

Funcția AVG – calculează media artimetică a unei coloane,

într-o tabelă oarecare.

Funcția MIN– determină valoare minimă dintr-un atribut.

Funcția MAX – determină valoare maximă dintr-un atribut.

Exemplul 6: Afișați valoare minimă și valoarea maximă

pentru coloana Annast.

SELECT MIN(Annast), MAX(Annast)

FROM Studenți

3.4. Clauza GROUP BY

Clauza GROUP BY permite gruparea datelor dintr-o

tabelă și obținerea informațiilor despregrupurile diferite.

Rezultatul unei farze SELECT ce conține această clauză se

obține prin regruparea tuturor liniilor din tabelele enumerate în

Page 27: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

27

FROM, extrăgîndu-se cîte o apariție pentru fiecare valoare

distinctă a coloanei/grupului de coloane.

Este important de reținut faptul că toate cîmpurile care

apar în SELECT, în afara funcțiilor-agregat, trebuie să apară în

clauza GROUP BY.

Formatul general al clauzei GROUP BY este:

SELECT coloana1, coloana2,...

FROM tabelă sau tabele

GROUP BY coloana-de-regrupare

Exemplul 1: Afișați numărul de studenți din fiecare localitate.

SELECT COUNT(Nume) AS Numărstudenți, Adresa

FROM Studenți

GROUP BY Adresa

Exemplul 2: Să se obțină numărul de studenți pentru fiecare

an.

SELECT COUNT(Nume) AS Numărstudenți, Annast

FROM Studenți

GROUP BY Annast

3.5 Clauza HAVING

În cazul cînd dorim să obținem doar o parte din grupurile

obținute prin utilizarea clauzei GROUP BY trebuie să utilizăm

clauza HAVING. Clauza HAVING este WHERE-ul ce operează

la nivel de grupuri, adică permite specificarea unor condiții de

selecție care se aplică grupurilor de linii create prin clauza

GROUP BY.

Exemplul 1: Să se afișeze localitățile pentru care avem cel

puțin 5 studenți.

SELECT COUNT(Nume) AS Numărstudenți, Adresa

FROM Studenți

GROUP BY Adresa

HAVING (COUNT(Nume)=>5)

Exemplul 2: Care sunt anii pentru care avem cîte 2 studenți.

Page 28: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

28

SELECT COUNT(Nume) AS Numărstudenți, Annast

FROM Studenți

GROUP BY Annast

HAVING (COUNT(Annast)=2)

Exemplul 3: Care sunt disciplinele care au mai mult de 75

ore.

SELECT MAX(Nrore) AS Numărore, Dendiscip

FROM Disciplina

GROUP BY Dendiscip

HAVING (MAX(Nrore)=>75)

3.6. Aplicații practice

Realizați următoarele interogări:

1. Afișați toate înregistrările din tabela Studenți.

2. Afișați anul nasterii și adresa studenților.

3. Afișați toate înregistrările din tabela Profesori.

4. Afișați toate înregistrările din tabela Disciplina.

5. Din ce localități vin studenții?

6. Afișați datele despre studenții din grupa IM14?

7. Afișați toate datele despre studentul Roman Alexandru.

8. Afișați lista studenților din grupa IT14 și IMA14.

9. În ce grupă studiază elevii din Cahul?

10. Afișați lista disciplinelor cu numărul de ore mai mic de

120 ore.

11. Cîte credite are disciplina Algebra?

12. Afișați lista studenților născuți pînă în anul 1998.

13. La ce catedra activează profesorii: Bîrlea și Bunea?

Order BY

14. Afișați lista catedrelor în ordine alfabetică.

15. Să se obțină în ordine descrescătoare a anului nasterii, lista

adreselor în ordine crescătoare a denumirii.

Page 29: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

29

16. Să se obțină în ordine alfabetică a adreselor, lista

studenților în ordine descrescătoare a numelui.

17. Să se obțină în ordine descrescătoare a numărului de ore

lista disciplinelor.

18. Afișați în ordine descrescătoare lista disciplinelor cu

numarul de credite mai mare de 4.

19. Să se obțină în ordine alfabetică lista studenților din Cahul

și Gotești, născuți după anul 1998.

20. Să se obțină în ordine crescătoare a codului disciplinei,

lista disciplinelor în ordine crescătoare.

21. Afișați în ordine descrescătoare lista catedrelor.

22. Afișați în ordine decrescătoare a numelui lista profesorilor

de la catedra EMAS.

23. Afișați în ordine descrescătoare lista șefilor de catedră.

24. Afișați în ordine alfabetică a denumirii disciplinei, numele

profesorilor.

Operatorii BETWEEN, LIKE, IN

25. Afișați lista studenților născuți în perioada 1997-2001 în

Cahul.

26. Afișați lista studenților din Cahul, Leova și Telenești.

27. Ce grad și titlu științific au profesorii care predau: Algebra,

PGI, TCI și SIM.

28. La ce catedra activează profesorii Antohi, Zarișneac și

Boboc?

29. Afișați în ordine descrescătore lista disciplinelor cu

numărul de ore cuprins între 70 și 150.

30. Afișați lista studenților din Cantemir și Leova al căror

nume începe cu litera P.

31. Afișați lista studenților al căror prenume conține litera e.

32. Care din discipline au denumirea din 3 caractere?

Page 30: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

30

33. Ce profesori au prenumele conținînd litera n pe a 4-a

poziție?

34. Afișați în ordine descrescătoare lista studenților din

Taraclia și Cahul, născuți în perioada 1998-2001, al căror nume

se sfîrșește cu litera a.

35. Cîte credite și cîte ore au disciplinele predate de profesorii

a căror prenume conține îmbinarea na.

36. În ce grupă învață studenții Ciobanu, Blaja, Para și

Chihai?

37. La ce catedră activează profesorii cu gradul de doctor?

38. Afișați lista studenților care au note negative la SIM,

Statistica și Economia întreprinderii.

39. Ce note au primit studenții din grupa IMA14 la PAC și

GAC.

40. Din ce grupă sunt studenții care au note cuprinse între 8 și

10 la Engleză.

41. Ce note au primit studenții la disciplinele cu numărul de

credite cuprins între 4 și 6.

42. Care este adresa studenților al căror număr de telefon nu se

cunoaște?

43. În ce zi studenții au susținut examenul la Etica

profesională și ce note au primit?

44. Cine este profesorul disciplinelor cu codul cuprins între D4

și D10?

45. La ce catedra activează profesorii cu titlu științific de

asistent și conferențiar?

46. La ce catedra activează profesorii care nu au grad

științific?

Funcții-agregat: SUM, COUNT, AVG, MAX, MIN

47. Afișați numărul de discipline.

48. Afișați numărul profesorilor din Universitate.

Page 31: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

31

49. Cîte catedre sunt în Universitate?

50. Cîți studenți sunt din Cahul?

51. Cîți studenți sunt în grupa IM14?

52. Cîți studenți sunt născuți în perioada anilor 1990-1995?

53. Cîți studenți din anul 1992 sunt din Cahul și Leova?

54. Cîte discipline au 120 ore total.

55. Cîți profesori au gradul științific de doctor?

56. Cîți profesori sunt la catedra Limbi moderne?

57. În cîte zile a fost planificată sesiunea examenelor.

58. Cîți studenți au primit note negative la disciplina PAC și

GAC?

59. Cîte note de 10 au primit studenții din grupa IMA14 în

sesiune?

60. Cîți studenți au primit note cuprinse între 8-9 în sesiune?

61. Care este numărul total de ore la cursurile predate de

profesorii de la catedra Inginerie și Științe Aplicate?

62. Care este numărul total de credite la cursurile profesorilor

Munteanu și Bagrin?

63. Afișați numărul de discipline, numărul total de ore la

disciplinele ghidate de catedra EMAS.

64. Afișați valoarea minimă, maximă și medie pentru coloana

Nota.

65. Să se obțină valoarea minimă și valoarea maximă pentru

cîmpul Nrcredite.

66. Care este primul și ultimul student (în ordinea numelui)

din orașul Cahul?

67. Care este numărul mediu de ore la disciplinele ghidate de

catedra Informatică și Matematică?

68. Care este localitatea cu ultima denumire, în ordine

alfabetică?

Page 32: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

32

69. Să se obțină: numărul total de ore, numărul mediu, maxim

și minim, pentru disciplinele predate de profesorii cu gradul

științific de doctor.

70. Afișați care este cea mai mică și mai mare notă primită de

studenți.

71. Afișați media studenților, pe Universitate.

72. Afișați media studenților din grupa IT14.

73. Afișați nota medie, maximă și minimă la disciplina baze de

date.

74. Afișați valoarea minimă și maximă pe coloana Annastere,

pentru studenții din grupa IM14.

75. Pentru studenții din grupa IMA14, să se calculeze care

este: numărul de studenți, nota medie, minimă și maximă.

76. Să se obțină cîți studenți sunt din Cahul și să se calculeze

care este nota lor medie, minimă și maximă la disciplina PGI.

77. Pentru studenții Cantemir și Leova, să se calculeze care

este nota medie, minimă și maximă.

78. Pentru studenții din grupa IMA14, să se calculeze care

este: numărul de studenți, nota medie, minimă și maximă.

79. Afișați care este cea mai mică și cea mai mare notă primită

de studențiidin Cimișlia și Taraclia.

80. Afișați care este: nota medie, cea mai mare și cea mai mică

notă primită de studenții din grupa IM14 și IT14.

81. Afișați care este: nota medie, cea mai mare și cea mai mică

notă la disciplinele predate de profesorul Todos Irina.

82. Afișați care este nota medie la examenele susținute în luna

decembrie.

83. Afișați care este: nota medie, minimă și maximă a

studentului Chihai Andrei.

84. Afișați care este cea mai mică notă primită la disciplina

Teoria economică.

Page 33: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

33

85. Afișați care este nota medie la examenele susținute pe data

de 16 și 18 decembrie.

Clauza GROUP BY

86. Afișați numărul studenți din Universitate grupați pe grupe

de studii.

87. Să se obțină numărul de discipline predate de fiecare

profesor.

88. Afișați cîți profesori sunt la fiecare catedră.

89. Care este numărul de studenți pentru fiecare localitate?

90. Afișați numărul de studenți grupați după coloana

Annastere.

91. Afișați numărul mediu și numărul total de ore, pentru

fiecare profesor.

92. Afișați nota medie, minimă și maximă pentru fiecare

student.

93. Să se obțină: nota medie, minimă și maximă, pentru

fiecare grupă de studii.

94. Care este cea mai mare notă primită de studenți, pentru

fiecare localitate.

95. Să se obțină: nota medie, minimă și maximă, pentru

fiecare zi din sesiune.

96. Să se obțină: nota medie, minimă și maximă, pentru

fiecare disciplină, în ordine albabetică după denumirea

disciplinei.

97. Să se obțină numărul disciplinelor predate de profesori,

conform gradului științific.

Clauza HAVING

98. În ce grupe de studii avem mai puțin de 10 studenți

înmatriculați?

99. Care profesori predau cel puțin 2 discipline?

Page 34: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

34

100. Să se afișeze grupele de studii pentru care nota medie a

studenților nu este mai mică de 7.

101. Să se obțină lista disciplinelor cu nota medie mai mare de

8, în ordine descrecătoare după denumirea disciplinei.

102. Să se afișeze studenții care au media mai mică de nota 5.

103. Să se afiseșe lista catedrelor unde activează cel puțin doi

profesori.

104. Din ce localități avem doar cîte 2 studenți?

Indicații la problemele propuse:

Problemele propuse la fiecare compartiment se fac după

modelele de exemple prezentate în unitatea de învățare sau

după tipicul acestora.

Page 35: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

35

IV. LUCRU INDIVIDUAL

A. Să se proiecteze o bază de date pentru:

1. Evidența mersului trenurilor și rezervare de bilete, gara

feroviară Chișinău.

2. Evidența cărților și a cititorilor unei biblioteci.

3. Gestiunea vînzărilor unui magazin de produse IT.

4. Gestiunea activității unei întreprinderi de construcții.

5. Evidența bolnavilor dintr-un spital.

6. Gestiunea exporturilor unei întreprinderi.

7. Evidența vînzărilor/închirierilor la un magazin AUTO.

8. Gestiunea activității unui aeroport (zboruri, destinații,

angajați etc.).

9. Evidența salariului angajaților unui gimnaziu.

10. Evidența medicamentelor într-o farmacie.

11. Evidența creditelor la o companie de microfinanțare.

12. Gestiunea activității unei pensiuni turistice (turiști,

rezervări camere etc.).

13. Evidența angajaților, de către serviciul Resurse umane,

din cadrul unei instituții de învățământ superior.

B. Definiți tabelele bazei de date, structura acestora și a

relațiilor dintre tabele. Creați tabelele prin comanda

CREATE table.

C. Introduceți date în tabele utilizînd comanda Insert (nu

mai puțin de 7 înregistrări).

D. Efectuați următoarele modificări în structura bazei de

date.

1. Redenumiți un tabel.

2. De adăugare a unui atribut (3 exemple).

3. De ștergere a unui atribut (2 exemple).

4. De anulare/instituire a restricției primary key (cîte 1

exemplu).

E. Modificați conținutul tabelelor:

1. Ștergeți cîte 2 linii din fiecare tabel.

2. Modificați valoarea unuia sau mai multor atribute

utilizînd comanda UPDATE (5 exemple).

Page 36: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

36

F. Realizați următoarele tipuri de interogări:

1. Interogări simple de selecție a înregistrărilor (3

exemple).

2. Interogări de sortare a înregistrărilor (3 exemple).

3. Interogări cu utilizarea operatorului BETWEEN (2

exemple).

4. Interogări cu utilizarea operatorului LIKE (2 exemple).

5. Interogări cu utilizarea operatorului IN (2 exemple).

6. Interogări cu utilizarea operatorului IS NULL (1

exemplu).

7. Interogări ce conțin funcții-agregat: COUNT, MIN,

MAX, SUM, AVG (10 exemple).

8. Interogări de grupare a datelor (2 exemple).

9. Interogări de grupare cu utilizarea clauzei HAVING (2

exemple).

10. Interogări de grupare cu utilizarea clauzei ORDER BY

(2 exemple).

11. Interogări cu extragerea datelor din 2 sau mai multe

tabele (4 exemple).

La termenul programat de profesor, fiecare student, va

prezenta lucrul individual pe suport de hîrtie la catedra de

specialitate.

Page 37: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

37

BIBLIOGRAFIE

1. Cotelea V., Cotelea M. Microsoft SQL Server 2008. Lucrări

practice. Baze de date. Chișinău: ASEM, 2009. 205 p.

2. Darie C., Bucica M. PHP5 și MYSQL pentru comerț

electronic. București: Teora, 2006. 598 p.

3. Dulu A. Baze de date – Access. ECDL modulul 5.

București: Andreco Educational, 2004. 64 p.

4. Fehily Chris. SQL. București: ALL, 2004. 416 p.

5. Florescu V. Baze de date: fundamente teoretice și practice.

București: Infomega, 2002. 548 p.

6. Forta B. SQL în lecții de 10 minute. București: Teora, 2004.

232 p.

7. Fotache M. SQL. Dialecte DB2, Oracle și Visual FoxPro.

Iași: Polirom, 2001. 368 p.

8. Fotache M. Dialecte DB2, Oracle și PostgreSQL și SQL

Server. Iași: Polirom, 2009. 880 p.

9. Fotache M. Proiectarea bazelor de date. Normalizare și

postnormalizare. Implementări Oracle și SQL. Iași: Polirom,

2005. 348 p.

10. Fotache M. Baze de date relaționale. Organizare,

interogare și normalizare. Iași: Junimea, 1997. 385 p.

11. Hernandez M. J. Proiectarea bazelor de date. București:

Teora, 2003. 402 p.

12. Lungu I. Baze de date: organizare, proiectare și

implementare. București: All, 1995. 354 p.

13. Oprea D., Airinei D., Fotache M. Sisteme informaționale

pentru afaceri. Iași: Polirom, 2002. 392 p.

14. Pascu C. Totul despre SQL: interogarea bazelor de date.

București: Tehnică, 1994. 159 p.

15. Popa G. ș.a. Baze de date Access. București: Cison, 2003.

372 p.

16. Великова Т., Сиркели В. Язык запросов SQL. учебно-

методическое пособие. Комрат: Комрат. гос. ун-т, 2012. 59

стр.

Page 38: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

38

ANEXE

STUDENȚI

Idstud Grupa Nume Prenume Annast Adresa Tel

1 IT14 Levitchi Iulia 1997 Cahul 22557

2 IT14 Ursachi Daniel 1998 Gotești 58741

3 IM14 Blaja Maria 1994 Cahul 24598

4 IM14 Butnaru Ion 1995 Leova 32554

5 IMA14 Drangoi Elena 1991 Cahul 29898

6 IMA14 Pascal Lidia 2001 Leova 36512

7 IMA14 Rotari Andrei 2000 Telenești 78952

8 IT14 Manole Valeriu 2001 Telenești 74129

9 IT14 Onica Nina 1999 Gotești

10 IM14 Para Ana 1999 Cantemir 26614

11 IM14 Muchi Dumitru 1997 Cahul 21547

12 IMA14 Stoica Mihai 1992 Leova 35510

13 IM14 Zaharia Inga 1998 Gotești 56419

14 IM14 Roman Iulia 1995 Cahul 22014

15 IMA14 Vulpe Iurie 1998 Cantemir 22546

16 IT14 Roman Alexandru 1994 Cahul 22014

17 IT14 Dandeș Gheorghe 1995 Cantemir 21547

18 IM14 Iacob Nicolae 1993 Cantemir 20158

19 IM14 Lavric Stelia 1992 Leova

20 IM14 Petcu Oleg 1994 Cahul 21156

21 IM14 Chihai Andrei 1996 Gotești

22 IM14 Chihai Maria 1997 Leova 32189

23 IM14 Para Ion 2001 Leova 39245

24 IT14 Zaharia Ana 2000 Cahul 24498

25 IT14 Ciobanu Ion 1994 Cahul

26 IM14 Miron Petru 1992 Cahul

27 IT14 Miron Valeriu 1991 Taraclia 78452

28 IMA14 Tulum Alexei 1990 Taraclia 73264

29 IT14 Balan Victor 2000 Taraclia 71029

30 IMA14 Vieru Sergiu 1998 Cimișlia 98745

31 IT14 Eni Vera 1998 Cimișlia 93548

Page 39: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

39

DISCIPLINA

Iddiscip Dendiscip Nrore Nrcredite Idprof

D1 Algebra 120 4 P4

D2 TCI 180 6 P3

D3 Engleza 90 3 P10

D4 Baze de date 120 4 P2

D5 Statistica 60 2 P3

D6 Etica profesionala 90 3 P5

D7 Ingineria

programarii

180 6 P1

D8 PAC 175 5 P8

D9 GAC 120 4 P7

D10 SIM 120 4 P2

D11 Teoria economica 90 3 P6

D12 PGI 175 5 P9

PROFESOR

Idprof Nume Prenume Titlust Gradst Idcated

ra

P1 Munteanu Ivan Asistent C1

P2 Bîrlea Svetlana Lector Doctor C1

P3 Popovici Ilona Lector C2

P4 Bagrin Dumitru Lector C2

P5 Todos Irina Confere

ntiar

Doctor C3

P6 Antohi Liudmila Lector C3

P7 Boboc Ana Lector C1

P8 Bunea Marina Lector Doctor C1

P9 Zarișneac Natalia Lector C3

P10 Bozbei Valentine Asistent C4

Page 40: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

40

CATEDRA

Idcatedra Dencatedra Sefcatedra

C1 Inginerie și științe Aplicate Rumeus I.

C2 Informatica și Matematica Bagrin D.

C3 EMAS Rosca S.

C4 Limbi moderne Fugiji M.

REUSITA

Idr Idstud Iddiscip Nota Dataexam

r1 1 D1 5 29.12.2014

r2 2 D1 10 29.12.2014

r3 3 D1 6 29.12.2014

r4 4 D1 8 29.12.2014

r5 5 D1 9 29.12.2014

r6 6 D1 7 29.12.2014

r7 7 D1 10 29.12.2014

r8 8 D1 9 29.12.2014

r9 9 D1 8 29.12.2014

r10 10 D1 9 29.12.2014

r11 11 D1 10 29.12.2014

r12 12 D1 9 29.12.2014

r13 13 D1 2 29.12.2014

r14 14 D1 6 29.12.2014

r15 15 D1 8 29.12.2014

r16 16 D1 9 29.12.2014

r17 17 D1 9 29.12.2014

r18 18 D1 10 29.12.2014

r19 19 D1 10 29.12.2014

r20 20 D1 10 29.12.2014

r21 21 D1 10 29.12.2014

r22 22 D1 8 29.12.2014

r23 23 D1 8 29.12.2014

r24 24 D1 8 29.12.2014

r25 25 D1 7 29.12.2014

r26 26 D1 5 29.12.2014

Page 41: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

41

r27 27 D1 5 29.12.2014

r28 28 D1 6 29.12.2014

r29 29 D1 6 29.12.2014

r30 30 D1 6 29.12.2014

r31 31 D1 6 29.12.2014

r32 1 D2 8 27.12.2014

r33 2 D2 8 27.12.2014

r34 3 D2 8 27.12.2014

r35 4 D2 7 27.12.2014

r36 5 D2 5 27.12.2014

r37 6 D2 7 27.12.2014

r38 7 D2 7 27.12.2014

r39 8 D2 27.12.2014

r40 9 D2 4 27.12.2014

r41 10 D2 4 27.12.2014

r42 11 D2 3 27.12.2014

r43 12 D2 2 27.12.2014

r44 13 D2 6 27.12.2014

r45 14 D2 9 27.12.2014

r46 15 D2 9 27.12.2014

r47 16 D2 8 27.12.2014

r48 17 D2 10 27.12.2014

r49 18 D2 10 27.12.2014

r50 19 D2 10 27.12.2014

r51 20 D2 10 27.12.2014

r52 21 D2 5 27.12.2014

r53 22 D2 4 27.12.2014

r54 23 D2 8 27.12.2014

r55 24 D2 8 27.12.2014

r56 25 D2 9 27.12.2014

r57 26 D2 9 27.12.2014

r58 27 D2 9 27.12.2014

r59 28 D2 8 27.12.2014

r60 29 D2 5 27.12.2014

r61 30 D2 5 27.12.2014

Page 42: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

42

r62 31 D3 5 16.01.2015

r63 1 D3 5 16.01.2015

r64 2 D3 7 16.01.2015

r65 3 D3 16.01.2015

r66 4 D3 9 16.01.2015

r67 5 D3 6 16.01.2015

r68 6 D3 3 16.01.2015

r69 7 D3 3 16.01.2015

r70 8 D3 2 16.01.2015

r71 9 D4 5 12.01.2015

r72 10 D4 4 12.01.2015

r73 11 D4 4 12.01.2015

r74 12 D4 8 12.01.2015

r75 13 D4 8 12.01.2015

r76 14 D4 8 12.01.2015

r77 15 D4 7 12.01.2015

r78 16 D4 7 12.01.2015

r79 17 D5 7 28.12.2014

r80 18 D5 7 28.12.2014

r81 19 D5 10 28.12.2014

r82 20 D5 8 28.12.2014

r83 21 D5 7 28.12.2014

r84 22 D5 9 28.12.2014

r85 23 D5 2 28.12.2014

r86 24 D6 6 14.12.2014

r87 25 D6 5 14.12.2014

r88 26 D6 6 14.12.2014

r89 27 D6 8 14.12.2014

r90 28 D6 9 14.12.2014

r91 29 D6 6 14.12.2014

r92 30 D6 7 14.12.2014

r93 31 D6 8 14.12.2014

r94 1 D6 10 14.12.2014

r95 2 D6 10 14.12.2014

r96 3 D6 10 14.12.2014

Page 43: LIMBAJUL SQL - feisa.usch.mdfeisa.usch.md/wp-content/uploads/2017/03/SQL.pdf · prin intermediul limbajului SQL (Structured Query Language). În ziua de azi, limbajul standard SQL

43

r97 4 D7 5 26.12.2014

r98 5 D7 6 26.12.2014

r99 6 D7 5 26.12.2014

r100 7 D7 8 26.12.2014

r101 8 D7 8 26.12.2014

r102 9 D7 4 26.12.2014

r103 10 D8 9 18.12.2014

r104 11 D8 2 18.12.2014

r105 12 D8 8 18.12.2014

r106 13 D8 8 18.12.2014

r107 14 D8 5 18.12.2014

r108 15 D8 7 18.12.2014

r109 16 D9 6 16.01.2015

r110 17 D9 7 16.01.2015

r111 18 D9 7 16.01.2015

r112 19 D9 10 16.01.2015

r113 20 D9 5 16.01.2015

r114 21 D9 8 16.01.2015

r115 22 D10 9 12.01.2015

r116 23 D10 9 12.01.2015

r117 24 D10 9 12.01.2015

r118 25 D10 8 12.01.2015

r119 26 D11 8 23.12.2014

r120 27 D11 7 23.12.2014

r121 28 D11 5 23.12.2014

r122 29 D11 5 23.12.2014

r123 30 D11 6 23.12.2014

r124 31 D11 6 23.12.2014

r125 1 D12 6 16.12.2014

r126 2 D12 7 16.12.2014

r127 3 D12 8 16.12.2014

r128 4 D12 9 16.12.2014

r129 5 D12 10 16.12.2014