
Vous préparez un entretien pour un poste de développeur SQL, PL/SQL ou DBA Oracle ? Voici 30 questions d’entretien SQL Oracle parmi les plus fréquentes, avec des réponses claires et des liens pour approfondir. Elles couvrent les requêtes, les jointures, les contraintes, le PL/SQL et la performance — exactement ce que les recruteurs testent.
Requêtes & bases
1. Quelle différence entre WHERE et HAVING ?
WHERE filtre les lignes avant le regroupement ; HAVING filtre les groupes après GROUP BY (sur des agrégats). Voir WHERE vs HAVING.
2. Différence entre UNION et UNION ALL ?
UNION supprime les doublons (et trie) ; UNION ALL garde tout et va plus vite. Voir UNION vs UNION ALL.
3. À quoi sert DISTINCT ?
À éliminer les lignes en double dans le résultat d’un SELECT.
4. Quelle différence entre IN et EXISTS ?
EXISTS s’arrête au premier match (souvent meilleur sur grosses sous-requêtes) ; attention au piège de NOT IN avec les NULL. Voir IN vs EXISTS.
5. Comment limiter le nombre de lignes ?
FETCH FIRST n ROWS ONLY (12c+) ou ROWNUM avant. Pas de LIMIT en Oracle.
Jointures
6. Citez les types de jointures.
INNER, LEFT, RIGHT, FULL OUTER, et CROSS JOIN. Voir les jointures.
7. Différence entre INNER JOIN et LEFT JOIN ?
INNER ne garde que les lignes ayant une correspondance ; LEFT garde toutes les lignes de gauche, avec NULL à droite si pas de correspondance.
8. Qu’est-ce qu’un produit cartésien ?
Le résultat d’une jointure sans condition (CROSS JOIN) : chaque ligne de A combinée à chaque ligne de B.
9. Comment trouver les lignes d’une table sans correspondance dans une autre ?
LEFT JOIN + WHERE b.id IS NULL, ou NOT EXISTS.
Contraintes & modèle
10. Quels types de contraintes connaissez-vous ?
PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK. Voir les contraintes.
11. Différence entre clé primaire et clé unique ?
La clé primaire est unique ET non nulle (une seule par table) ; une contrainte UNIQUE autorise un NULL et peut être multiple.
12. Différence entre TRUNCATE, DELETE et DROP ?
DELETE supprime des lignes (réversible) ; TRUNCATE vide la table (rapide, non réversible) ; DROP supprime la table. Voir le comparatif.
13. Qu’est-ce qu’un index et quand l’utiliser ?
Une structure qui accélère les recherches. Utile sur les colonnes filtrées/jointes souvent, au prix d’écritures plus lentes. Voir INDEX.
14. Vue vs vue matérialisée ?
La vue se recalcule à chaque appel (toujours à jour) ; la matérialisée stocke le résultat (rapide, à rafraîchir). Voir le comparatif.
Fonctions & manipulation
15. Comment gérer les valeurs NULL ?
Avec NVL, NVL2, COALESCE, ou IS NULL. Rappel : NULL = NULL est faux.
16. Différence entre NVL et COALESCE ?
NVL prend 2 arguments ; COALESCE en prend plusieurs et renvoie le premier non NULL (standard SQL).
17. CASE ou DECODE ?
CASE est standard et gère les conditions complexes ; DECODE est propre à Oracle et ne fait que des égalités. Voir CASE.
18. Comment concaténer des chaînes ?
Avec || ou CONCAT.
19. Différence entre RANK, DENSE_RANK et ROW_NUMBER ?
ROW_NUMBER = unique ; RANK = ex æquo avec sauts ; DENSE_RANK = ex æquo sans saut. Voir DENSE_RANK & NTILE.
20. Qu’est-ce que SYSDATE ?
La date et l’heure courantes du serveur. Voir SYSDATE.
PL/SQL
21. Différence entre SQL et PL/SQL ?
SQL interroge les données ; PL/SQL ajoute variables, conditions, boucles et gestion d’erreurs. Voir SQL vs PL/SQL.
22. Qu’est-ce qu’un curseur ? Implicite vs explicite ?
Un pointeur vers un résultat. Implicite = géré par Oracle ; explicite = déclaré par vous (OPEN/FETCH/CLOSE). Voir les curseurs.
23. Différence entre procédure et fonction ?
Une fonction retourne une valeur (utilisable dans un SELECT) ; une procédure exécute des actions. Voir les procédures.
24. Qu’est-ce qu’un trigger ?
Un bloc qui s’exécute automatiquement avant/après un INSERT, UPDATE ou DELETE. Voir les triggers.
25. Comment gérer les exceptions en PL/SQL ?
Dans un bloc EXCEPTION (NO_DATA_FOUND, TOO_MANY_ROWS, OTHERS…). Voir la gestion des exceptions.
26. À quoi servent BULK COLLECT et FORALL ?
À traiter des milliers de lignes en un seul aller-retour SQL↔PL/SQL (×10 à ×100 plus rapide). Voir BULK COLLECT & FORALL.
Transactions & performance
27. Que font COMMIT et ROLLBACK ?
COMMIT valide définitivement une transaction ; ROLLBACK annule les modifications non validées. Voir les transactions.
28. Qu’est-ce qu’un SAVEPOINT ?
Un point de repère dans une transaction vers lequel on peut faire un ROLLBACK partiel.
29. Comment analyser une requête lente ?
Avec EXPLAIN PLAN, en vérifiant les index, les statistiques et les full table scans.
30. Citez 3 bonnes pratiques de performance SQL.
Filtrer tôt (WHERE), indexer les colonnes filtrées/jointes, éviter SELECT *, et privilégier les opérations ensemblistes plutôt que ligne à ligne.
Comment réussir l’entretien
- Pratiquez sur une vraie base (Oracle Live SQL, Cloud Free Tier — voir nos meilleurs outils SQL).
- Sachez expliquer, pas seulement réciter : un recruteur teste la compréhension.
- Révisez les fondamentaux avec notre cours SQL Oracle complet et gratuit.
FAQ
Quelles questions reviennent le plus en entretien Oracle ?
Les jointures, la différence WHERE/HAVING, NULL/NVL, TRUNCATE vs DELETE, les curseurs et la gestion des exceptions PL/SQL.
Faut-il connaître le PL/SQL pour un poste SQL ?
Pour un poste développeur Oracle ou DBA, oui : au minimum curseurs, procédures, exceptions. Pour un poste analyste, le SQL pur peut suffire.
Comment se préparer efficacement ?
Pratiquez chaque concept sur une vraie base, et entraînez-vous à expliquer à voix haute. La régularité prime sur le bachotage.
