Cum funcționează
Structura de bază e cea de la tabelul Carti. Aici apar datele
calendaristice şi condițiile compuse.
Datele calendaristice
Enunțul scrie datele în formatul românesc 12.mai.1998, dar în SQL se folosește formatul
ISO: AAAA-LL-ZZ, adică '1998-05-12'.
| Din enunț |
În SQL |
12.mai.1998 |
'1998-05-12' |
27.mar.1999 |
'1999-03-27' |
07.feb.1998 |
'1998-02-07' |
Motivul pentru care acest format e cel standard: datele scrise aşa se sortează corect ca text.
'1998-02-07' vine înaintea lui '1998-09-10' şi alfabetic, şi cronologic. Cu formatul
07.02.1998 sortarea ar ieşi complet greşit.
Data se scrie între apostrofuri, ca textul.
În Access, datele se scriu între diez: #05/12/1998#, în format lunar american. În SQL standard
rămâi la '1998-05-12'.
Condițiile compuse: AND
Cerința c) cere două condiții simultan — clasa 11 şi seria B:
WHERE Clasa = 11 AND Seria = 'B'
| Operator |
Când e adevărat |
AND |
ambele condiții |
OR |
măcar una |
NOT |
condiția inversă |
Observă că Clasa = 11 e fără apostrofuri (coloană numerică), iar Seria = 'B' cu apostrofuri
(text). Tipul coloanei decide, nu cum arată valoarea.
Rezultat: Dobre Andrei, Dorobantu Diana, Banu Diana.
UPDATE cu mai multe coloane
SET Clasa = 11,
Seria = 'A'
O singură instrucţiune poate modifica mai multe coloane deodată — se despart prin virgulă, nu
prin AND. Confuzia e frecventă, pentru că în WHERE condițiile chiar se leagă cu AND.
Identificarea elevei se face după nume şi prenume. Nu ar fi corect doar după Prenume = 'Ana'
sau doar după nume — în tabel există două eleve cu prenumele Diana, iar un tabel real ar avea mai
mulți omonimi. Cel mai sigur ar fi WHERE Nr_matricol = 1107, pentru că numărul matricol e unic.
Greșeli frecvente
- Data în format românesc —
'12.mai.1998' nu e recunoscută ca dată.
SET Clasa = 11 AND Seria = 'A' — la SET se folosește virgulă; cu AND se scrie de fapt o
expresie logică, iar Clasa primeşte valoarea 0 sau 1.
WHERE Clasa = 11 AND Seria = B — B fără apostrofuri e citit ca nume de coloană.
Clasa = '11' cu apostrofuri — funcționează uneori, dar e greşit conceptual pentru o coloană
numerică.
- Identificarea după un singur câmp — poate modifica mai multe persoane decât ai vrut.
UPDATE fără WHERE — toți elevii ajung în clasa 11 A.