Ce face WHERE
WHERE se pune după FROM și păstrează doar rândurile pentru care condiția este adevărată. Funcționează la fel în SELECT, UPDATE și DELETE.
Operatori de comparare: =, <> sau != (diferit), <, >, <=, >=. Condițiile se combină cu AND, OR și NOT. Textele se scriu între apostrofuri: 'Cluj'.
Parametri
| Parametru | Descriere |
|---|---|
conditie |
Expresia verificată pentru fiecare rând. |
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE produse (
id INT PRIMARY KEY,
nume VARCHAR(50) NOT NULL,
categorie VARCHAR(30),
pret INT,
stoc INT
);
INSERT INTO produse VALUES
(1, 'Laptop', 'Electronice', 3500, 4),
(2, 'Mouse', 'Electronice', 80, 25),
(3, 'Birou', 'Mobilier', 900, 0),
(4, 'Scaun', 'Mobilier', 650, 7),
(5, 'Monitor', 'Electronice', 1200, 3);
Exemplul 1: O singură condiție
SELECT nume, pret FROM produse WHERE pret > 1000;
Rezultat
+---------+------+
| nume | pret |
+---------+------+
| Laptop | 3500 |
| Monitor | 1200 |
+---------+------+
Exemplul 2: Condiții combinate cu AND și OR
SELECT nume, categorie, stoc
FROM produse
WHERE categorie = 'Mobilier' AND stoc > 0;
SELECT nume, pret
FROM produse
WHERE pret < 100 OR pret > 3000;
Rezultat
+-------+-----------+------+
| nume | categorie | stoc |
+-------+-----------+------+
| Scaun | Mobilier | 7 |
+-------+-----------+------+
+--------+------+
| nume | pret |
+--------+------+
| Laptop | 3500 |
| Mouse | 80 |
+--------+------+
Exemplul 3: Paranteze pentru ordinea condițiilor
AND are prioritate față de OR. Pune paranteze ca să fie clar ce vrei.
SELECT nume, categorie, pret
FROM produse
WHERE categorie = 'Electronice' AND (pret < 100 OR stoc < 4);
Rezultat
+---------+-------------+------+
| nume | categorie | pret |
+---------+-------------+------+
| Mouse | Electronice | 80 |
| Monitor | Electronice | 1200 |
+---------+-------------+------+
Greșeli frecvente
- Scrii textele între ghilimele duble. În modul strict ANSI din MySQL, ghilimelele duble înseamnă nume de coloană. Folosește apostrofuri:
'Cluj'. - Compari cu
NULLfolosind=.WHERE email = NULLnu găsește niciodată nimic. FoloseșteIS NULL. - Folosești un alias din
SELECTînWHERE.WHEREse evaluează înaintea luiSELECT, deci aliasul nu există încă.
Comenzi înrudite
SELECT: Citește date dintr-un tabel. Este comanda SQL folosită cel mai des.LIKE: Caută texte după un model: începe cu, se termină cu, conține.IN: Verifică dacă o valoare se află într-o listă. Înlocuiește mai multe condiții OR.IS NULL: Găsește rândurile în care o coloană nu are valoare (NULL) sau, cu IS NOT NULL, în care are.