Lecții din modul (1/4)
Liste și intervale: IN și BETWEEN
În modulele anterioare ați filtrat cu WHERE folosind egalități și
comparații: salary > 30000, department_id = 1, hired_on >= '2020-01-01'.
Dar când condiția devine "valoarea trebuie să fie una dintre aceste cinci",
OR înlănțuite:
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM employees
WHERE department_id = 1
OR department_id = 2
OR department_id = 3;SQL oferă două comenzi rapide pentru a face acest lucru lizibil.
IN — „una dintre acestea”
Operatorul IN (...) preia o listă de valori și returnează true dacă
coloana este egală cu oricare dintre ele:
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (1, 2, 3);Este identic din punct de vedere semantic cu OR-urile de mai sus, dar mult mai lizibil: este
se citește în mod natural ca "unde department_id este în (1, 2, 3)". De asemenea, funcționează
cu șiruri și date:
SELECT name
FROM departments
WHERE city IN ('Milano', 'Roma');Există și NOT IN (...), care face opusul:
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM employees
WHERE department_id NOT IN (1, 2);BETWEEN — „între A și B, ambele inclusiv”
Când condiția este un interval continuu (numere, date), în loc de
scriind column >= A AND column <= B ai BETWEEN A AND B:
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 30000 AND 50000;BETWEEN este inclusiv pentru ambele puncte finale. Funcționează foarte frumos cu
si date:
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM employees
WHERE hired_on BETWEEN '2020-01-01' AND '2020-12-31';Încearcă
Afișați numele (prenume), numele (numele) și salariul (salariul) angajaților cu un salariu între 30000 și 50000 inclusiv. Trei coloane.
Afișează indiciu
Utilizați ÎNTRE 30000 ȘI 50000 — mai compact și mai ușor de citit decât două comparații unite prin AND.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Listați prenumele (prenume) și numele (numele) angajaților care lucrează în departamentele 1, 2 sau 4 (utilizați IN). Ordonați alfabetic după nume de familie.
Afișează indiciu
WHERE Department_id IN (1, 2, 4) este versiunea compactă a trei SAU.
Soluție disponibilă după 3 încercări