0% ont trouvé ce document utile (0 vote)
23 vues4 pages

Test Technique SQL

Ce document est un test technique SQL évaluant les connaissances des candidats sur les requêtes, jointures, agrégation, et structure de données. Il comprend des questions à choix multiples et des réponses correctes fournies dans la section corrigé. Le test est limité à une durée de 15 minutes et est noté sur 20.

Transféré par

dkankukadima
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues4 pages

Test Technique SQL

Ce document est un test technique SQL évaluant les connaissances des candidats sur les requêtes, jointures, agrégation, et structure de données. Il comprend des questions à choix multiples et des réponses correctes fournies dans la section corrigé. Le test est limité à une durée de 15 minutes et est noté sur 20.

Transféré par

dkankukadima
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TEST TECHNIQUE SQL

NOTE
Candidat :
Date :
Durée : 15 Minutes / 20

I. Requêtes & Sélection II. Jointures (Joins)

1. Quelle commande permet de récupé- 5. Vous voulez toutes les lignes de la table
rer uniquement des lignes uniques (sans A, et seulement les correspondances de
doublons) ? la table B. Quelle jointure utiliser ?
 INNER JOIN
 SELECT UNIQUE
 LEFT JOIN
 SELECT DISTINCT
 RIGHT JOIN
 SELECT DIFFERENT
 FULL OUTER JOIN
 SELECT ONLY
6. Si Table A a 10 lignes et Table B a 5
2. Dans l’ordre d’exécution logique de SQL, lignes, combien de lignes retourne un
quelle clause est traitée en PREMIER ? CROSS JOIN (Produit Cartésien) ?
 15 lignes
 SELECT
 10 lignes
 WHERE
 50 lignes
 FROM
 0 ligne
 ORDER BY
7. Quelle jointure utiliser pour trouver les
3. Comment filtrer les noms qui com- clients qui N’ONT PAS passé de com-
mencent par ’A’ ? mande ?
 INNER JOIN avec une clause WHERE.
 WHERE nom LIKE 'A%'
 LEFT JOIN en filtrant sur [Link] IS
 WHERE nom = 'A*' NULL.
 WHERE nom STARTS WITH 'A'  CROSS JOIN.
 WHERE nom LIKE '%A'  FULL JOIN.

4. Quelle est la différence entre UNION et 8. Qu’arrive-t-il si vous faites une jointure
UNION ALL ? sur une colonne contenant des valeurs
NULL ?
 Aucune différence.  Les NULL correspondent entre eux (NULL
 UNION supprime les doublons, UNION ALL = NULL).
garde tout (et est plus rapide).  Les NULL ne correspondent jamais
 UNION ALL trie les résultats, pas UNION. (même à un autre NULL).
 UNION permet de joindre des tables hori-  SQL renvoie une erreur.
zontalement.  Cela dépend de la base de données.

1
III. Agrégation & Groupement  La première colonne de la table.

9. Quelle est la différence fondamentale 14. À quoi sert une Clé Étrangère (Foreign
entre WHERE et HAVING ? Key) ?
 WHERE filtre avant le groupement, HAVING  À améliorer la vitesse des SELECT.
filtre après l’agrégation.  À garantir l’intégrité référentielle (empê-
 HAVING est obsolète. cher d’insérer un orphelin).
 WHERE ne marche qu’avec des nombres.  À crypter les données.
 HAVING s’utilise sans GROUP BY.  À stocker des données venant de l’étran-
ger.
10. Que retourne COUNT(*) par rapport à
COUNT(colonne) ? 15. Pourquoi créer un Index sur une colonne
?
 C’est exactement la même chose.
 Pour accélérer les opérations d’écriture
 COUNT(*) compte les lignes (y compris (INSERT/UPDATE).
NULL), COUNT(col) ignore les NULLs de
 Pour accélérer les opérations de lecture
cette colonne.
(SELECT/WHERE).
 COUNT(*) est plus lent.
 Pour économiser de l’espace disque.
 COUNT(colonne) compte les valeurs dis-
 Pour trier physiquement la table.
tinctes.
16. Quel est l’inconvénient principal d’avoir
11. Si vous faites un SELECT A, MAX(B) FROM trop d’index sur une table ?
Table, que manque-t-il obligatoirement ?
 Les requêtes SELECT deviennent lentes.
 Une clause ORDER BY.
 Les opérations INSERT, UPDATE, DELETE
 Une clause GROUP BY A. deviennent plus lentes.
 Une clause WHERE.  La base de données plante plus souvent.
 Rien, la requête est valide.  Il n’y a aucun inconvénient.

12. Quelle fonction permet de remplacer une 17. Quelle est la différence entre DELETE et
valeur NULL par une valeur par défaut (ex: TRUNCATE ?
0) ?
 TRUNCATE supprime la table elle-même.
 ISNULL() ou COALESCE()  DELETE est plus rapide.
 REPLACE()  TRUNCATE est une opération DDL (rapide,
 NULLIF() réinitialise ID), DELETE est DML (ligne par
ligne, logué).
 CHANGE()
 DELETE ne peut pas avoir de clause WHERE.

IV. Structure & Performance 18. À quoi sert une CTE (Common Table Ex-
pression / WITH ...) ?
13. Qu’est-ce qu’une Clé Primaire (Primary
 À créer une table temporaire physique.
Key) ?
 À rendre le code plus lisible en nommant
 N’importe quelle colonne indexée. une sous-requête temporaire.
 Une colonne (ou groupe) qui identifie de  À exporter les données.
façon unique chaque ligne (Non NULL +  C’est une vieille syntaxe obsolète.
Unique).
 Une colonne qui fait le lien vers une 19. Quel type de donnée est le plus optimisé
autre table. pour stocker une date ?

2
 VARCHAR(10) (ex: ’2023-01-01’) classement (1, 2, 3...) des ventes par ven-
deur ?
 INT (ex: 20230101)
 DATE ou DATETIME  RANK() ou ROW_NUMBER()
 TEXT  COUNT()
 SUM()
20. Quelle fonction utiliser pour obtenir un  GROUP_ID()

3
CORRIGÉ & EXPLICATIONS
Ne pas consulter avant la fin du test.

X Q1 : SELECT DISTINCT. Permet de dédou- X Q11 : Une clause GROUP BY A. Règle d’or
blonner les résultats. : tout ce qui n’est pas dans une fonction
d’agrégation (SUM, MAX...) doit être dans
X Q2 : FROM. SQL commence par identifier le GROUP BY.
la source des données avant de filtrer ou
sélectionner. X Q12 : COALESCE(). Standard ANSI. IS-
NULL est spécifique à certains moteurs
X Q3 : LIKE ’A%’. Le symbole % est le joker (SQL Server).
(wildcard) standard en SQL pour ”n’im-
X Q13 : Unique + Not Null. Elle sert d’iden-
porte quelle chaîne”.
tifiant strict.
X Q4 : UNION supprime les doublons. X Q14 : Intégrité référentielle. Elle em-
UNION ALL empile tout bêtement, ce qui pêche, par exemple, de supprimer un
évite une opération de tri coûteuse. À pri- Client s’il a encore des Commandes, ou
vilégier si on sait qu’il n’y a pas de dou- de créer une Commande pour un Client
blons. qui n’existe pas.
X Q5 : LEFT JOIN. Garde tout ce qui est à X Q15 : Accélérer la lecture. Comme l’in-
gauche (Table A), et met NULL si pas de dex d’un livre, cela permet d’aller direc-
correspondance à droite. tement à la ligne sans scanner toute la
table.
X Q6 : 50 lignes. Le produit cartésien mul-
tiplie le nombre de lignes (10 x 5). X Q16 : Ralentit l’écriture. À chaque IN-
SERT/UPDATE, le moteur doit mettre à
X Q7 : LEFT JOIN avec IS NULL. C’est la mé- jour la table ET tous les index associés.
thode standard pour trouver les ”orphe-
lins” ou les non-correspondances. X Q17 : TRUNCATE est DDL (Rapide). Il
désalloue les pages de données d’un
X Q8 : Les NULL ne correspondent ja- coup. DELETE scanne ligne par ligne et
mais. En SQL, NULL n’est pas une valeur, écrit tout dans le journal de transaction.
c’est une absence de valeur. NULL = NULL
X Q18 : Lisibilité. Une CTE (Common Table
renvoie ”Unknown”, pas ”True”.
Expression) permet de définir une ”vue
temporaire” au début de la requête pour
X Q9 : WHERE avant, HAVING après. On
simplifier la logique principale.
filtre les lignes brutes avec WHERE, puis
on groupe, puis on filtre les résultats X Q19 : DATE. Toujours utiliser le type natif
agrégés avec HAVING (ex: Total > 100). pour profiter des fonctions de date et du
tri chronologique correct.
X Q10 : COUNT(*) compte tout.
COUNT(col) ignore les NULLs, ce qui peut X Q20 : ROW_NUMBER() / RANK(). Ce
fausser les résultats si on voulait juste sont des ”Window Functions” essentielles
compter les lignes. pour l’analytique avancée.

Vous aimerez peut-être aussi