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
- 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.
- 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.
- 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;
- Strategii didactice
- Explicația
- Conversația euristică
- Exercițiul practic
- Învățare prin descoperire
- Lucru individual și frontal
- Resurse materiale
- Laptop / PC
- Videoproiector
- Oracle Live SQL
- Fișe de lucru
- Tabla
- 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)
- 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’);
- Rezolvarea subiectelor propuse pentru examenul de atestat 2026
SUBIECTUL 1
- a) Afișați numele și prenumele angajaților
SELECT nume, prenume FROM Angajati;
- 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
- a) Afișați numărul angajaților din firmă
SELECT COUNT(*) AS nr_angajati FROM Angajati;
- 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
- a) Afișați numele și prenumele angajaților în ordine alfabetică
SELECT nume, prenume FROM Angajati ORDER BY nume, prenume;
- 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
- a) Afișați numele angajaților de gen masculin
SELECT nume FROM Angajati WHERE SUBSTR(cnp, 1, 1) IN (‘1′,’5’);
- 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
- a) Măriți cu 100 salariul fiecărui angajat
UPDATE Angajati SET salariul = salariul + 100;
- 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
- a) Afișați salariul minim al angajaților
SELECT MIN(salariul) AS salariu_minim FROM Angajati;
- 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
- a) Afișați departamentele din firmă
SELECT * FROM Departamente;
- 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
- 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;
- 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
- 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;
- 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
- 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;
- 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;
- Evaluare
- Observarea modului de lucru
- Corectitudinea interogărilor
- Rezolvarea aplicațiilor
- Feedback imediat
- 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ă.