De la teorie la practică: dezvoltarea competențelor SQL prin interogări complexe

Prezentul proiect didactic propune o abordare sistematică a predării interogărilor SQL multiple (operații JOIN) în cadrul disciplinei Informatică, clasa a XII-a, nivel liceal. Lucrarea își propune să exemplifice modul în care competențele tehnice specifice manipulării bazelor de date relaționale pot fi dezvoltate printr-o metodologie care îmbină explicația teoretică cu exercițiul practic intensiv, într-un context autentic de învățare.

Proiect didactic

Disciplina: Informatică (laborator) Unitatea de învățare: Programare SQL Tema lecției: Interogări multiple. Aplicații Tipul lecției: Consolidare și aplicare practică Clasa: a XII-a A Durata: 50 minute Profesor: Gavrilă Iulia Carmen Liceul Teoretic Dunărea Galați

  1. Competențe specifice
  • Utilizarea limbajului SQL pentru interogarea bazelor de date.
  • Aplicarea operațiilor JOIN pentru extragerea datelor din tabele multiple.
  • Analizarea și interpretarea rezultatelor interogărilor SQL.
  • Rezolvarea de probleme practice pe baza unei structuri relaționale.
  1. Obiective operaționale

O1 – Cunoaștere

  • să explice rolul interogărilor multiple;
  • să identifice tipurile de JOIN utilizate în Oracle.

O2 – Aplicare

  • să utilizeze corect sintaxa JOIN în interogări SQL;
  • să extragă date din două sau mai multe tabele ale bazei FIRMA.

O3 – Analiză

  • să selecteze tipul potrivit de JOIN în funcție de cerință;
  • să interpreteze rezultatele obținute.
  1. Conținutul lecției

3.1. Interogări multiple (JOIN)

JOIN-urile permit combinarea datelor din tabele diferite pe baza unei condiții logice. Tipuri de JOIN: INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, CROSS JOIN.

3.2. Sintaxa Oracle pentru JOIN

Sintaxa:

SELECT coloane FROM tabel1 JOIN tabel2 ON tabel1.col = tabel2.col;

  1. Strategii didactice
  • Explicația
  • Conversația euristică
  • Exercițiul practic
  • Învățare prin descoperire
  • Lucru individual și frontal
  1. Resurse materiale
  • Laptop / PC
  • Videoproiector
  • Oracle Live SQL
  • Fișe de lucru
  • Tabla
  1. Desfășurarea lecției

6.1. Moment organizatoric (2 min) 6.2. Captarea atenției (3 min) 6.3. Anunțarea obiectivelor (2 min) 6.4. Dirijarea învățării (10 min) 6.5. Fixarea cunoștințelor (8 min) 6.6. Aplicarea cunoștințelor (20 min)

  1. Aplicație practică

Să se creeze baza de date FIRMA cu următoarele tabele: Departamente și Angajați și să se introducă câteva înregistrări.

Crearea tabelului Departamente:

CREATE TABLE Departamente (

idd VARCHAR2(4) PRIMARY KEY,

denumire VARCHAR2(50),

data_infiintare DATE

);

Crearea tabelului Angajati:

CREATE TABLE Angajati (

ida NUMBER(3) PRIMARY KEY,

idd VARCHAR2(4),

nume VARCHAR2(50),

prenume VARCHAR2(50),

salariul NUMBER(5),

nr_telefon VARCHAR2(12),

cnp VARCHAR2(13)

);

Introducerea datelor în Departamente:

INSERT INTO Departamente VALUES (‘D001’, ‘Comercial’, TO_DATE(‘2010-03-15′,’YYYY-MM-DD’));

INSERT INTO Departamente VALUES (‘D002’, ‘Financiar’, TO_DATE(‘2008-06-10′,’YYYY-MM-DD’));

INSERT INTO Departamente VALUES (‘D003’, ‘Administrativ’, TO_DATE(‘2012-01-20′,’YYYY-MM-DD’));

INSERT INTO Departamente VALUES (‘D004’, ‘ResurseUmane’, TO_DATE(‘2015-09-01′,’YYYY-MM-DD’));

INSERT INTO Departamente VALUES (‘D005’, ‘IT’, TO_DATE(‘2018-11-25′,’YYYY-MM-DD’));

Introducerea datelor în Angajati:

INSERT INTO Angajati VALUES (101, ‘D001’, ‘Popescu’, ‘Andrei’, 4500, ‘0722123456’, ‘1980101123456’);

INSERT INTO Angajati VALUES (102, ‘D002’, ‘Ionescu’, ‘Maria’, 5200, ‘0733111222’, ‘2960505123456’);

INSERT INTO Angajati VALUES (103, ‘D003’, ‘Georgescu’, ‘Mihai’, 3900, ‘0744556677’, ‘1990201123456’);

INSERT INTO Angajati VALUES (104, ‘D004’, ‘Stan’, ‘Elena’, 4100, ‘0755667788’, ‘2970303123456’);

INSERT INTO Angajati VALUES (105, ‘D005’, ‘Dumitru’, ‘Alexandru’, 6000, ‘0766778899’, ‘1951215123456’);

  1. Rezolvarea subiectelor propuse pentru examenul de atestat 2026

SUBIECTUL 1

  1. a) Afișați numele și prenumele angajaților

SELECT nume, prenume FROM Angajati;

  1. b) Afișați numele, prenumele angajaților din primul departament înființat

SELECT a.nume, a.prenume

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.data_infiintare = (SELECT MIN(data_infiintare) FROM Departamente);

SUBIECTUL 2

  1. a) Afișați numărul angajaților din firmă

SELECT COUNT(*) AS nr_angajati FROM Angajati;

  1. b) Afișați numele și prenumele angajaților din departamentul Comercial

SELECT a.nume, a.prenume

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Comercial’;

SUBIECTUL 3

  1. a) Afișați numele și prenumele angajaților în ordine alfabetică

SELECT nume, prenume FROM Angajati ORDER BY nume, prenume;

  1. b) Afișați numărul angajaților din departamentul Financiar

SELECT COUNT(*) AS nr_financiar

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Financiar’;

SUBIECTUL 4

  1. a) Afișați numele angajaților de gen masculin

SELECT nume FROM Angajati WHERE SUBSTR(cnp, 1, 1) IN (‘1′,’5’);

  1. b) Afișați fondul de salarii necesar pentru departamentul Comercial

SELECT SUM(a.salariul) AS fond_salarial

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Comercial’;

SUBIECTUL 5

  1. a) Măriți cu 100 salariul fiecărui angajat

UPDATE Angajati SET salariul = salariul + 100;

  1. b) Afișați numele și prenumele angajaților care lucrează în departamentul înființat cel mai recent

SELECT a.nume, a.prenume

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.data_infiintare = (SELECT MAX(data_infiintare) FROM Departamente);

SUBIECTUL 6

  1. a) Afișați salariul minim al angajaților

SELECT MIN(salariul) AS salariu_minim FROM Angajati;

  1. b) Afișați numele, prenumele și anul nașterii pentru angajații din departamentul Administrativ

SELECT a.nume, a.prenume,

TO_CHAR(TO_DATE(SUBSTR(a.cnp,2,6),’YYMMDD’),’YYYY’) AS anul_nasterii

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Administrativ’;

SUBIECTUL 7

  1. a) Afișați departamentele din firmă

SELECT * FROM Departamente;

  1. b) Afișați numele, prenumele și salariul angajaților care au salariul maxim

SELECT nume, prenume, salariul

FROM Angajati

WHERE salariul = (SELECT MAX(salariul) FROM Angajati);

SUBIECTUL 8

  1. a) Afișați numărul angajaților din fiecare departament

SELECT d.denumire, COUNT(a.ida) AS nr_angajati

FROM Departamente d

LEFT JOIN Angajati a ON d.idd = a.idd

GROUP BY d.denumire;

  1. b) Afișați numele, prenumele, numărul de telefon pentru angajații din departamentul Financiar

SELECT a.nume, a.prenume, a.nr_telefon

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Financiar’;

SUBIECTUL 9

  1. a) Afișați numele, prenumele și salariul angajaților în ordinea descrescătoare a salariului

SELECT nume, prenume, salariul FROM Angajati ORDER BY salariul DESC;

  1. b) Afișați salariul mediu pentru angajații din departamentul Comercial

SELECT AVG(a.salariul) AS salariu_mediu

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd

WHERE d.denumire = ‘Comercial’;

SUBIECTUL 10

  1. a) Afișați numele, prenumele, salariul pentru angajații care au salariul mai mare de 4000

SELECT nume, prenume, salariul FROM Angajati WHERE salariul > 4000;

  1. b) Afișați numele, prenumele și departamentul unde lucrează fiecare angajat

SELECT a.nume, a.prenume, d.denumire

FROM Angajati a

JOIN Departamente d ON a.idd = d.idd;

  1. Evaluare
  • Observarea modului de lucru
  • Corectitudinea interogărilor
  • Rezolvarea aplicațiilor
  • Feedback imediat
  1. Tema pentru acasă

Realizați 5 interogări suplimentare folosind tipuri diferite de JOIN.

Concluzii

Implementarea acestui proiect didactic confirmă premisa că învățarea eficientă a conceptelor de baze de date relaționale necesită o abordare graduală, care pornește de la structuri simple către interogări complexe, menținând permanent legătura cu aplicabilitatea practică. Parcurgerea celor zece subiecte de atestat, organizate progresiv de la interogări simple către cele ce implică multiple tabele și funcții agregate, permite elevilor să construiască incremental înțelegerea logicii relaționale și a potențialului limbajului SQL. Observațiile din activitatea de laborator sugerează că această metodologie – centrată pe exercițiul practic imediat, pe feedback continuu și pe rezolvarea unor cerințe concrete – facilitează nu doar memorarea sintaxei, ci și dezvoltarea unei gândiri structurate, capabile să descompună probleme complexe în pași logici și verificabili.

Din perspectiva dezvoltării instituționale și a calității procesului educațional, acest tip de proiect didactic contribuie la standardizarea practicilor de predare a informaticii aplicative, oferind un cadru replicabil și adaptabil altor contexte curriculare. Pentru sistemul de învățământ românesc, consolidarea competențelor digitale prin predarea practică a bazelor de date răspunde cerințelor pieței muncii contemporane, unde capacitatea de a interoga, analiza și interpreta seturi mari de date devine o competență transversală, necesară în diverse domenii profesionale. Astfel, lecția de informatică depășește statutul de disciplină tehnică izolată și devine un spațiu de formare a competențelor-cheie pentru secolul XXI: rezolvarea de probleme, gândirea critică și alfabetizarea digitală avansată, toate esențiale pentru pregătirea tinerilor în vederea unei participări active și competente în societatea informațională.

 


Încadrare în categoriile științelor educației:

prof. Iulia Carmen Gavrilă

Liceul Teoretic Dunărea, Galați (Galaţi), România
Profil iTeach: iteach.ro/profesor/iulia.gavrila