app php quiz interview training. part 3.
SQL - 10 Domande con Risposte ed Esempi
1. Qual è la differenza tra INNER JOIN, LEFT JOIN e RIGHT JOIN?
Risposta:
INNER JOIN → Restituisce solo le righe con corrispondenza in entrambe le tabelle.
LEFT JOIN → Restituisce tutte le righe della tabella di sinistra e quelle corrispondenti della tabella di destra (se esistono).
RIGHT JOIN → Come
LEFT JOIN, ma prende tutte le righe della tabella di destra.
Esempio:
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.dept_id = departments.id;
✅ Restituisce solo gli impiegati con un reparto associato.
2. Come si usa GROUP BY e HAVING?
Risposta:
GROUP BYraggruppa i risultati in base a una colonna.HAVINGfiltra i gruppi, comeWHERE, ma su funzioni aggregate.
Esempio:
SELECT dept_id, COUNT(*) AS total_employees
FROM employees
GROUP BY dept_id
HAVING COUNT(*) > 5;
✅ Restituisce solo i dipartimenti con più di 5 impiegati.
3. Qual è la differenza tra UNION e UNION ALL?
Risposta:
UNIONrimuove i duplicati.UNION ALLmantiene tutti i record, anche i duplicati.
Esempio:
SELECT name FROM customers
UNION
SELECT name FROM suppliers;
✅ Restituisce i nomi senza duplicati.
Per mantenerli, basta usare UNION ALL.
4. Cosa fa COALESCE() in SQL?
Risposta:COALESCE() restituisce il primo valore NON NULL tra quelli forniti.
Esempio:
SELECT name, COALESCE(email, 'No Email') AS email
FROM users;
✅ Se email è NULL, mostra "No Email" invece.
5. Qual è la differenza tra DELETE, TRUNCATE e DROP?
Risposta:
DELETE → Cancella record specifici, può usare
WHERE.TRUNCATE → Cancella tutti i record, resettando anche l'
AUTO_INCREMENT.DROP → Cancella l'intera tabella dal database.
Esempio:
DELETE FROM users WHERE id = 10; -- Cancella un singolo record
TRUNCATE TABLE users; -- Cancella tutti i record ma mantiene la struttura
DROP TABLE users; -- Cancella la tabella completamente
6. Cosa fa EXPLAIN in SQL?
Risposta:EXPLAIN mostra il piano di esecuzione di una query, utile per ottimizzare le prestazioni.
Esempio:
EXPLAIN SELECT * FROM employees WHERE dept_id = 3;
✅ Mostra come il database esegue la query e se usa indici (INDEX).
7. Come si crea un indice e perché è utile?
Risposta:
Un indice accelera le ricerche nei database.
Esempio:
CREATE INDEX idx_employees_dept ON employees(dept_id);
✅ Ora le ricerche per dept_id saranno più veloci.
8. Come si fa una subquery in SQL?
Risposta:
Una subquery è una query dentro un'altra query.
Esempio:
SELECT name FROM employees
WHERE dept_id = (SELECT id FROM departments WHERE name = 'HR');
✅ Restituisce tutti gli impiegati del dipartimento HR.
9. Come si usa CASE in SQL?
Risposta:CASE permette di scrivere condizioni dentro una query.
Esempio:
SELECT name,
CASE
WHEN salary > 5000 THEN 'Alto'
WHEN salary BETWEEN 3000 AND 5000 THEN 'Medio'
ELSE 'Basso'
END AS stipendio_categoria
FROM employees;
✅ Classifica gli stipendi in Alto, Medio, Basso.
10. Cosa fa LAG() e LEAD() in SQL?
Risposta:
LAG()prende il valore precedente di una colonna.LEAD()prende il valore successivo di una colonna.
Esempio:
SELECT name, salary,
LAG(salary) OVER (ORDER BY id) AS prev_salary,
LEAD(salary) OVER (ORDER BY id) AS next_salary
FROM employees;
✅ Mostra lo stipendio precedente e successivo per ogni dipendente.