Didaxis
lecție · Informatică

Operații pe tabele

Creare, adăugare, modificare, ștergere, căutare și sortare.

Se face în:
Clasa a XII-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Operațiile de bază pe tabele sunt adăugarea de rânduri, modificarea rândurilor existente, ștergerea și citirea lor. În tabelul elevilor, putem adăuga Ana cu id=1, schimba clasa ei sau elimina rândul ei. Condiția de selecție contează: o modificare fără filtru afectează toate rândurile.

Desen la lecția „Operații pe tabele”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Operațiile de bază pe tabele se împart în trei categorii. Definirea structurii: CREATE TABLE creează un tabel cu schema lui, ALTER TABLE adaugă sau schimbă coloane, DROP TABLE elimină tabelul întreg. Modificarea datelor: INSERT adaugă rânduri, UPDATE modifică rândurile existente, DELETE șterge rânduri. Citirea datelor: SELECT întoarce rezultate și nu schimbă tabelul. Crearea structurii, schimbarea rândurilor și interogarea lor sunt operații diferite: DELETE elimină rânduri, nu o coloană din schemă, iar DROP TABLE elimină structura împreună cu toate rândurile. Condiția WHERE decide ce rânduri sunt afectate, iar o modificare fără filtru afectează toate rândurile.

Exemplul 1 — crearea, inserarea, actualizarea și citirea. Ordinea operațiilor este parte a rezultatului:

CREATE TABLE elevi (id integer PRIMARY KEY, nume text NOT NULL);
INSERT INTO elevi (id, nume) VALUES (1, 'Ana');
UPDATE elevi SET nume = 'Ana Maria' WHERE id = 1;
SELECT nume FROM elevi WHERE id = 1;
UPDATE elevi SET nume = 'Ion' WHERE id = 5;

După inserare există rândul Anei. Actualizarea îl schimbă, iar interogarea întoarce „Ana Maria”. Ultimul UPDATE vizează id = 5, un rând care nu există: comanda reușește, dar raportează zero rânduri modificate și nu schimbă nimic. Un UPDATE pe un rând care încă nu a fost inserat nu produce nicio modificare.

Exemplul 2 — modificarea fără filtru. Mai adăugăm doi elevi, apoi omitem clauza WHERE:

INSERT INTO elevi VALUES (2, 'Dan'), (3, 'Mara');
UPDATE elevi SET nume = 'Ana';
SELECT nume, COUNT(*) FROM elevi GROUP BY nume;

Rezultatul este (Ana, 3): UPDATE fără WHERE a schimbat numele tuturor celor trei rânduri, nu al unui singur elev. Același lucru se întâmplă cu DELETE FROM elevi fără condiție, care șterge toate rândurile tabelului, dar păstrează structura lui.

Exemplul 3 — structura și ștergerea unui rând referit. Adăugăm tabelul clase și o coloană clasa_id în elevi, apoi încercăm să ștergem clasa 9:

CREATE TABLE clase (id integer PRIMARY KEY, denumire text NOT NULL);
INSERT INTO clase VALUES (9, 'IX A');
ALTER TABLE elevi ADD COLUMN clasa_id integer REFERENCES clase(id);
UPDATE elevi SET clasa_id = 9 WHERE id = 1;
DELETE FROM clase WHERE id = 9;
DELETE FROM elevi WHERE id = 1;
DELETE FROM clase WHERE id = 9;
SELECT COUNT(*) FROM elevi;

Prima ștergere a clasei 9 este respinsă, fiindcă elevul 1 o referă printr-o cheie externă; o constrângere poate împiedica o operație de ștergere. După ștergerea elevului 1, clasa 9 nu mai este referită și a doua ștergere reușește. Elevii rămași sunt 2, deci ultima interogare întoarce 2. Coloana clasa_id a fost adăugată cu ALTER TABLE, iar rândurile existente au primit în ea valoarea NULL, care a rămas pentru elevii 2 și 3.

Exemplul 4 — actualizare și ștergere cu condiție. Tabelul note păstrează perechile (elev, notă). Operațiile se aplică în ordine, iar fiecare vede rezultatul celei dinainte:

CREATE TABLE note (elev_id integer, nota integer);
INSERT INTO note VALUES (1, 4), (1, 9), (2, 5), (3, 10);
UPDATE note SET nota = nota + 1 WHERE nota < 5;
DELETE FROM note WHERE elev_id = 2;
SELECT COUNT(*), SUM(nota) FROM note;

După inserare sunt patru rânduri. Condiția nota < 5 este adevărată numai pentru rândul , care devine ; expresia nota + 1 folosește valoarea veche a aceluiași rând. Ștergerea elimină rândul , deci rămân , și . Interogarea întoarce 3 rânduri și suma . Dacă UPDATE ar fi rulat a doua oară, nu ar mai găsi nicio notă sub 5 și nu ar modifica nimic.

Exemplul 5 — inserări respinse de constrângeri. Cu tabelul elevi(id PRIMARY KEY, nume NOT NULL), care conține deja rândul , comenzile INSERT INTO elevi VALUES (1, 'Dan') și INSERT INTO elevi VALUES (4, NULL) sunt respinse. Prima încalcă unicitatea cheii primare, deoarece id = 1 există deja; a doua încalcă NOT NULL, pentru că numele lipsește. O inserare respinsă nu adaugă niciun rând, deci SELECT COUNT(*) FROM elevi rămâne 1. Constrângerile apără astfel datele de erori, chiar dacă cel care scrie comanda le greșește.

Valoarea NULL se caută cu IS NULL, nu cu = NULL: în Exemplul 3, SELECT nume FROM elevi WHERE clasa_id IS NULL întoarce numele Dan și Mara, pe când WHERE clasa_id = NULL nu întoarce niciun rând.

Greșeli frecvente

  • Greșit: UPDATE elevi SET nume='Ana' schimbă doar un elev anume.
    Corect: fără WHERE modifică toate rândurile.
  • Greșit: SELECT modifică tabela.
    Corect: citește rezultatele.
  • Greșit: DELETE elimină o coloană din schema tabelului.
    Corect: elimină rânduri selectate.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMECI 5099/2009, anexa 5, Informatică, p. 3–4, 7, clasa XII; rocnee.eu
  • OMECI 5099/2009, anexa 5, Informatică, p. 3, 7, clasa XII; plan de încadrare: OMEC 7723/2024, anexa 2, tabelele 1–25, legislatie.just.ro; filiera tehnologică: OMEC 7724/2024, anexa 4, tabelul calificării, legislatie.just.ro

Documente consultate

  • Programa școlară de informatică, clasa a XII-a (OMECI 5099/2009, anexa 5), CNCE, modulul Baze de date, p. 3 și 7; rocnee.eu
  • PostgreSQL, Documentation 18, capitolele despre INSERT, UPDATE și DELETE, postgresql.org/docs/18/dml.html

Desene: Redactare proprie (desen original), conform OMECI 5099/2009, anexa 5, Informatică XII; informatica.isj-db.ro

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.