Retour à la liste des articles Articles
14 minutes de lecture

Questions d'entretien courantes pour les développeurs SQL débutants

Avez-vous déjà passé un entretien pour un poste de débutant en SQL ? Avez-vous l'intention de postuler à un tel emploi ? Cet article vous aidera à savoir à quoi vous attendre et à vous préparer aux questions courantes d'un entretien de développeur SQL.

Après avoir acquis des connaissances de base en SQL et en programmation, vous vous demandez probablement ce qu'il faut faire ensuite. Ou peut-être que vous ne vous posez pas la question ! Vous savez que ce que vous avez appris disparaîtra rapidement si vous ne l'utilisez pas régulièrement. Et la meilleure façon d'entretenir vos connaissances et, bien sûr, d'en apprendre encore plus est de commencer à travailler comme développeur SQL. Mais vous ne savez pas à quelles questions vous attendre lors d'un entretien. Vous hésitez donc à postuler pour un emploi. Pourtant, savoir ce qu'on vous demandera ne vous aidera pas beaucoup, n'est-ce pas ? Ce dont vous avez besoin, ce sont les réponses ! Je vais donc vous fournir des questions d'entretien pour développeur SQL débutant et, plus important encore, les réponses à ces questions.

Passons aux questions et aux réponses !

Question 1 : Qu'est-ce qu'un modèle de données relationnel ? Expliquez plusieurs autres modèles de données logiques

Modèle de données relationnel

Le modèle relationnel de données est le modèle de données le plus largement utilisé. Il a été introduit en 1969 par Edgar F. Codd. Un modèle de données relationnel est basé sur le concept mathématique de relation. L'objectif des relations est d'éviter la redondance des données, d'assurer l'intégrité des données et d'accélérer la récupération des données.

Dans le contexte de la base de données, un modèle de données relationnel considère la base de données comme une collection de relations, dans laquelle une relation est simplement une table. La table, bien sûr, contient des valeurs. Les trois principaux éléments d'une table sont les colonnes, les lignes et les valeurs.

Les colonnes sont également appelées attributs, ce qui signifie qu'elles représentent certaines propriétés pour lesquelles les données sont stockées. Il est important de noter que les colonnes sont uniques, c'est-à-dire qu'aucune colonne portant le même nom n'est autorisée dans une table.

Chaque ligne est une occurrence unique des attributs. Les lignes sont également appelées enregistrements.

Les valeurs se trouvent aux intersections des colonnes et des lignes.

Modèle de réseau

Le modèle de réseau est un autre modèle courant. Il a été inventé par Charles Bachman en 1969 pour améliorer le modèle de données hiérarchique. Un modèle de réseau est représenté par un graphique dans lequel les types d'objets sont des nœuds et les types de relations des arcs.

Modèle hiérarchique de données

Ce modèle est similaire au modèle de réseau, sauf qu'il est représenté par une structure arborescente au lieu d'un graphique. Comme dans le modèle de réseau, les types d'objets sont représentés par des nœuds, mais les types de relations sont représentés par le lien "propriétaires-membres" entre les données.

Base de données objet-relationnelle

Ce modèle est similaire au modèle de données relationnel, et sa création a été inspirée par les langages de programmation orientés objet, tels que Java, C++, Visual Basic, .Net ou C#. Ce modèle considère une base de données comme une collection d'objets stockés qui consistent en des types de données personnalisés et des méthodes de traitement des données. Chaque objet appartient à une certaine classe. Entre chaque classe, il existe des relations d'héritage et d'agrégation.

Il existe, bien entendu, de nombreux autres modèles de données tels que le modèle documentaire, le schéma en étoile, le modèle corrélationnel, la base de données XML, etc. Mais vous n'avez pas besoin de tous les connaître. Le modèle de données relationnel est le plus couramment utilisé. Et si vous avez postulé pour un emploi de développeur SQL, vous travaillerez probablement avec une base de données relationnelle. Être capable d'expliquer ces quatre modèles de données devrait suffire pour un entretien avec un développeur SQL.

Question 2 : Qu'est-ce qu'un SGBD ?

SGBD est l'abréviation de "Système de gestion de base de données". C'est un logiciel qui se situe entre l'utilisateur de la base de données et la base de données elle-même. Le SGBD opère avec les données selon les instructions données par l'utilisateur de la base de données. Il permet la saisie, le stockage et la récupération des données. Suivant cette logique, le SGBD est un système de gestion de base de données relationnelle, un SGBD créé spécifiquement pour gérer les bases de données relationnelles. Selon la logique de la base de données relationnelle, le SGBDR stocke les données dans des tableaux composés de colonnes et de lignes. Les SGBDR les plus populaires sont Microsoft SQL Server, Oracle Database, MySQL et IBM DB2.

Question 3 : Qu'est-ce que le diagramme ER, et quels sont ses composants ?

Si vous souhaitez réussir un entretien avec un programmeur SQL, surtout s'il s'agit d'un débutant, vous devez savoir ce qu'est le diagramme ER. Un diagramme ER est un diagramme de relation entre entités, et il montre les relations entre les entités dans une base de données. Il s'agit de l'un des outils importants utilisés lors de la conception d' une base de données. Chaque diagramme ER comporte trois composantes :

  • Entité
  • Relation
  • Attribut

Entité

L'entité est définie au sens large comme tout ce sur quoi nous pouvons collecter des données. Il s'agit d'un objet ou d'un concept du processus de gestion pour lequel vous souhaitez stocker des données. Par exemple, une entreprise a des employés, ces employés ont des numéros d'identification personnels (PIN) uniques, ils travaillent dans certains départements et ils produisent certains produits. Il s'agit d'un processus de gestion et, dans cet exemple, les employés, les départements et les produits sont des entités. Une entité est constituée d'attributs. Plusieurs entités peuvent représenter des ensembles d'entités. Un ensemble d'entités est un nombre quelconque d'entités qui peuvent être considérées comme similaires en fonction de certaines propriétés.

Relations

Les relations montrent comment une entité est connectée ou associée à une autre entité ou à d'autres entités. Dans l'exemple ci-dessus, les employés et les NIP sont des entités. Un employé ne peut avoir qu'un seul NIP. De même, un PIN ne peut être attribué qu'à un seul employé : un PIN est unique. C'est ce qu'on appelle une relation biunivoque. De telles relations sont assez rares dans les bases de données. Si un PIN ne peut être attribué qu'à un seul employé et vice versa, il n'est pas nécessaire d'avoir le PIN comme entité distincte. Il peut être l'attribut d'entité des employés. Un autre exemple est celui des entités employés et départements. La relation entre elles est qu'un employé ne peut travailler que dans un seul département. Cependant, dans un département, il peut y avoir un ou plusieurs employés. Il s'agit d'une relation de type "un à plusieurs". La relation entre les employés et les produits est telle qu'un employé peut produire plus d'un produit. De même, un produit peut être fabriqué par plus d'un employé. Cette relation est appelée "many-to-many".

Attribut

Un attribut représente la propriété d'une entité ou d'une relation à laquelle on peut attribuer une certaine valeur. Un ensemble d'attributs décrit une entité ou une relation. Par exemple, si les employés sont une entité, les attributs peuvent être le nom, le prénom, la date de naissance, etc. Les attributs des départements en tant qu'entité peuvent être le nom du département, le chef de département, le nombre d'employés, etc. Les produits en tant qu'entité peuvent être décrits avec les attributs suivants : ID, nom du produit, couleur du produit, prix du produit, etc.

Question 4 : Qu'est-ce que la normalisation des bases de données ? Expliquez les formes normales

La normalisation est le processus d'organisation des données dans une base de données relationnelle utilisé pour réduire la redondance des données et augmenter leur intégrité. L'objectif est de créer une base de données efficace, fiable et flexible. La normalisation est mise en œuvre en suivant des règles appelées formes normales. Une base de données est généralement considérée comme normalisée lorsqu'elle répond aux exigences de 3NF :

  • Première forme normale (1NF)
  • Deuxième forme normale (2NF)
  • Troisième forme normale (3NF)

Première forme normale (1NF)

Elle exige que les attributs (colonnes de la table) ne contiennent que des valeurs atomiques et uniques. Cela dit, l'objectif de la forme 1NF est de s'assurer qu'aucun ensemble de données n'est représenté par une seule valeur.

Deuxième forme normale (2NF)

Pour qu'une base de données soit en 2NF, elle doit être en 1NF. Elle doit également garantir que tous les attributs dépendent uniquement de la clé primaire d'une table. La clé primaire est un attribut ou un ensemble d'attributs qui définit de manière unique chaque ligne d'une table. Autrement dit, une clé primaire ne peut être attribuée qu'à une seule ligne d'une table.

Troisième forme normale (3NF)

La 3NF exige qu'une base de données soit en 1NF et 2NF, bien sûr. En outre, aucune dépendance transitive n'est autorisée, ce qui signifie que tous les attributs qui ne sont pas une clé primaire doivent être mutuellement indépendants. Il n'est pas permis qu'un attribut dépende d'un autre attribut, qui dépend d'une clé primaire.

Même s'il existe également la forme normale de Boyce-Codd, la quatrième forme normale, la cinquième forme normale et d'autres formes supplémentaires, la connaissance des trois premières formes normales devrait suffire pour un entretien SQL de niveau débutant.

Question 5 : Que sont les contraintes d'attributs ?

Une contrainte d'attribut est une règle qui limite le type de données qui peuvent être saisies comme un attribut spécifique. Elle est utilisée pour assurer l'intégrité de la base de données. Les cinq contraintes d'attribut les plus courantes sont :

  • NOT NULL - utilisées pour s'assurer que l'attribut ne peut pas avoir une valeur NULL
  • CHECK - utilisées lorsque la valeur de l'attribut doit satisfaire une certaine condition
  • UNIQUE - utilisées lorsqu'une certaine valeur d'attribut ne peut être saisie qu'une seule fois
  • PRIMARY KEY - utilisées pour désigner un attribut en tant que clé primaire, qui doit être UNIQUE et NOT NULL
  • FOREIGN KEY - utilisé pour montrer la relation entre les tables, c'est-à-dire que la valeur de l'attribut dans une table est récupérée à partir de l'attribut d'une autre table.

Question 6 : Quels sont les sous-langages SQL et les principaux mots-clés ?

Le langage SQL peut être divisé en trois groupes ou sous-langages :

  • Le langage de définition de données (DDL)
  • Langage de contrôle des données (DCL)
  • Langage de manipulation des données (DML)

Langage de définition des données (DDL)

Ce sous-langage est utilisé pour créer, supprimer ou modifier un certain objet de la base de données. Les trois principaux mots-clés sont :

  • CREATE - crée un objet (par exemple, une table) dans une base de données
  • DROP - supprime un objet dans une base de données
  • ALTER - modifier un objet déjà existant dans une base de données

Langage de contrôle des données (DCL)

Le DCL est utilisé pour autoriser, créer des rôles et contrôler l'accès à certaines données dans une base de données. Les deux principaux mots-clés sont :

  • GRANT - autorise un certain utilisateur de la base de données à utiliser une base de données ou certains objets de la base de données
  • REVOKE - révoque ou diminue l'autorisation donnée à un certain utilisateur de la base de données.

Langage de manipulation des données (DML)

Ce sous-langage SQL est constitué de mots-clés utilisés pour manipuler des données, c'est-à-dire ajouter, modifier ou supprimer des données. Les principaux mots-clés sont :

  • SELECT - utilisé pour récupérer des données, et occasionnellement utilisé avec d'autres mots-clés, tels que :
    • FROM - utilisé pour choisir la table dans laquelle les données sont extraites
    • WHERE - utilisés pour récupérer des données contenant une valeur spécifique
    • GROUP BY - utilisés pour regrouper les données extraites en fonction d'un certain attribut
    • HAVING - utilisés avec GROUP BY pour identifier les lignes à extraire
    • ORDER BY - utilisé pour trier les données extraites par un certain attribut
  • INSERT - utilisé pour insérer des lignes dans un tableau déjà existant
  • UPDATE - utilisé pour modifier les valeurs d'une ligne déjà existante
  • MERGE - utilisé pour fusionner les données de deux ou plusieurs tableaux
  • DELETE - utilisé pour supprimer des lignes déjà existantes dans une table
  • TRUNCATE - utilisé pour supprimer toutes les données d'une table
  • BEGIN WORK - utilisé pour marquer le début d'une transaction
  • COMMIT - utilisé pour marquer la fin d'une transaction
  • ROLLBACK - permet de rejeter toutes les modifications apportées depuis la dernière COMMIT ou ROLLBACK

Veuillez noter que selon certaines documentations, TRUNCATE est un mot-clé DDL au lieu d'un mot-clé DML.

Question 7 : Expliquez la différence entre TRUNCATE, DELETE, et DROP

Maintenant que vous connaissez la réponse à la question précédente, celle-ci devrait être facile. Comme vous l'avez déjà appris, TRUNCATE supprime toutes les données de la table. Si vous utilisez DELETE, vous pouvez supprimer certaines lignes (si vous utilisez la clause WHERE), ou vous pouvez supprimer toutes les lignes, comme pour TRUNCATE. La principale différence est que DELETE supprime les données ligne par ligne, chaque ligne supprimée étant enregistrée par RDBMS. Si vous essayez de supprimer une grande quantité de données, l'utilisation de DELETE sera beaucoup plus lente que celle de TRUNCATE, car TRUNCATE n'enregistre qu'une seule action. Il est également bon de savoir que TRUNCATE ne peut pas être utilisé s'il existe une clé étrangère dans une table. L'utilisation de TRUNCATE verrouillera également la table, il n'est donc pas conseillé de l'utiliser sur des tables partagées.

Mais que fait DROP? Il supprime sûrement quelque chose, mais quoi ? La principale différence est que TRUNCATE et DELETE sont utilisés pour supprimer les données d'une table, mais pas la table elle-même. En revanche, en utilisant DROP, vous supprimez l'ensemble du tableau. La suppression d'une table signifie que vos données disparaîtront, bien sûr. Mais vous supprimerez également les index, les déclencheurs, les contraintes et les spécifications de permission.

Question 8 : Quels sont les types de jointures en SQL ?

Les jointures en SQL sont utilisées si vous essayez d'utiliser les données de deux tables ou plus en même temps. Pour ce faire, vous devez connecter les tables d'une manière ou d'une autre, ce qui peut être fait en utilisant les cinq types de jointures SQL :

  • Jointure croisée
  • Jointure interne
  • Jointure externe gauche
  • Jointure externe droite
  • Jointure externe complète

Jointure croisée

Ce type de jointure signifie que chaque ligne d'une table est jointe à chaque ligne d'une autre table. Elle multiplie les lignes. Cette méthode n'est pas recommandée si vous travaillez avec une grande quantité de données. Ce type de jointure est également appelé produit cartésien. Vous trouverez plus de détails sur la jointure croisée dans cet article.

Jointure interne

La jointure interne permet de récupérer les données pour lesquelles les enregistrements de la première table sont égaux aux enregistrements de la deuxième table, sur la base d'une condition définie. Il existe également un article expliquant plus en détail la jointure interne, qui pourrait vous aider à préparer votre entretien.

Jointure externe gauche

Lorsque vous utilisez ce type de jointure, vous récupérez toutes les lignes de la première table (ou table de gauche) et les lignes correspondantes de la deuxième table (ou table de droite). S'il n'y a pas de ligne correspondante dans la deuxième table, vous obtiendrez une valeur NULL.

Jointure externe droite

Le principe d'utilisation de cette jointure est le même que celui de la jointure externe gauche. Elle renvoie toutes les lignes de la deuxième table (ou table de droite) et les lignes correspondantes de la première table (ou table de gauche). L'absence de lignes correspondantes dans la première table entraînera une valeur NULL.

Jointure externe complète

L'utilisation de cette jointure permet de récupérer toutes les lignes de la première table et toutes les lignes de la deuxième table. S'il y a des lignes non correspondantes, à la fois dans la première et la deuxième table, elles seront affichées comme une valeur NULL. Il existe un excellent article expliquant tout ce que vous devez savoir sur les jointures externes, ainsi que des exemples.

Vous sentez-vous prêt pour les questions d'entretien avec les développeurs SQL ?

Dans cet article, j'ai abordé certaines questions et réponses de base susceptibles d'être posées lors d'un entretien d'entrée dans le domaine du SQL. Je considère que ces questions sont essentielles pour toute personne aspirant à un emploi de développeur SQL. Bien sûr, cela ne signifie pas que vous n'avez pas besoin de connaître autre chose que ces huit questions et réponses. Cela ne doit servir que de ligne directrice, alors n'hésitez pas à approfondir ces sujets. De nombreuses autres questions peuvent également être posées, mais ces huit questions devraient vous donner une idée de ce à quoi vous pouvez vous attendre. Si vous n'êtes pas sûr de comprendre les concepts ci-dessus, entraînez-vous un peu en suivant des cours. La plate-forme LearnSQL.fr propose des cours pratiques sur les bases de SQL (en général) et la jonction de tableaux.

Cet article vous a-t-il été utile ? Vous a-t-il encouragé à postuler à l'offre d'emploi que vous avez vue publiée il y a quelques jours ? Faites-moi savoir comment ça s'est passé et si certaines de ces questions vous ont été posées. Ou peut-être avez-vous déjà participé à plusieurs entretiens d'embauche ? Que vous a-t-on demandé ? Avez-vous trouvé certaines des réponses ci-dessus insuffisantes ou trop détaillées ? Faites-le moi savoir dans la section des commentaires ! Je serais heureux de connaître votre expérience.