Retour à la liste des articles Articles
25 minutes de lecture

Top 29 des questions d'entretien pour SQL Server

Vous recherchez un emploi dans le domaine du serveur SQL ? Passez en revue ces 29 questions d'entretien SQL Server incontournables et vous serez bien préparé. Et ne vous souciez pas de chercher les réponses - nous les fournissons également !

La première version de Microsoft SQL Server a été publiée en 1989 et son histoire est riche. Elle a parcouru un long chemin depuis lors, devenant l'un des moteurs de base de données les plus utilisés dans l'industrie des données. Au cours des dix dernières années, il a été le troisième moteur de base de données le plus populaire.

Top 29 des questions d'entretien sur SQL Server

Source : https://db-engines.com/en/ranking_trend

Si votre (prochain) emploi nécessite de travailler avec des bases de données relationnelles, il y a de fortes chances que vous deviez le faire avec SQL Server. Par exemple, les modélisateurs de données conçoivent et mettent en œuvre des bases de données avec l'aide des administrateurs de bases de données. Pour ce faire, les modélisateurs de données utilisent SQL Server pour créer des tables et leurs attributs, définir les relations entre les tables, les contraintes, les types de données, etc. La base de données doit ensuite être remplie de données, ce qui est le travail d'un ingénieur de données. Il utilise SQL Server pour interroger, intégrer, transformer et charger les données.

Une fois que tout est en place, l'administrateur de la base de données assure l'accès et la sécurité des données : il autorise ou révoque l'accès aux données, assure la maintenance et la sauvegarde de la base de données, surveille ses performances, la met à jour et la récupère si nécessaire.

Il existe également toute une série d'emplois liés aux données qui consistent principalement à utiliser les données de la base de données. Il s'agit notamment des analystes de données, des analystes financiers, des analystes quantitatifs, des développeurs BI, des statisticiens et des scientifiques de données. On attend d'eux qu'ils soient capables d'aller chercher les données de manière autonome, ce qui nécessite des compétences en SQL.

SQL Server et T-SQL : Ce qu'il faut savoir

Si les connaissances requises en matière de SQL Server varient d'un poste à l'autre, elles ont toutes en commun la connaissance de T-SQL, le dialecte SQL du serveur SQL. Pour être prêt pour l'entretien d'embauche, vous devez maîtriser T-SQL. La meilleure façon d'y parvenir est d'acquérir une expérience professionnelle, de répondre à des questions d'entretien réelles et de suivre des cours interactifs sur le langage SQL. Pour cette dernière catégorie, nous suggérons notre parcours d'apprentissage Le SQL de A à Z in MS SQL Server. Il s'agit de sept cours interactifs couvrant les bases de T-SQL, les extensions GROUP BY, les requêtes récursives et les Common Table Expressions.

Il existe de nombreux cours de qualité ; voici les cinq que nous suggérons aux débutants en SQL Server.

Par ailleurs, vous devriez également rafraîchir vos connaissances techniques sur SQL Server, car l'entretien comprendra également des questions non liées à SQL.

Nous aborderons ici le plus grand nombre possible de questions d'entretien relatives à SQL Server. Toutefois, aucun emploi dans le domaine des données ne requiert uniquement des connaissances en SQL Server.

Comment se préparer aux autres parties de l'entretien ? Le point de départ doit toujours être la description du poste. Lisez attentivement les exigences. Elles peuvent inclure d'autres langages de programmation (par exemple, Python), l'analyse statistique, l'ETL, la conception de bases de données, l'apprentissage automatique, etc. Envisagez le plan d'action qui vous permettra d'être prêt sur tous ces fronts. Et utilisez toutes les sources disponibles - articles, vidéos YouTube, cours, ensembles de données d'entraînement, plateformes avec des questions d'entretien et toutes sortes de tutoriels différents.

Commençons par les questions d'entretien sur le serveur SQL.

Questions générales d'entretien sur SQL Server

Les intervieweurs aiment souvent vous poser des questions générales sur SQL Server en guise d'échauffement. Commençons par quelques questions faciles...

1. Qu'est-ce que SQL Server ?

Réponse : SQL Server est le système de gestion de base de données relationnelle (SGBDR) de Microsoft. Il assure le stockage, l'intégrité, la sécurité et l'accès aux données. En d'autres termes, il permet de créer, stocker, mettre à jour, supprimer et récupérer des données.

2. Pouvez-vous expliquer les différentes éditions de SQL Server ?

Réponse : Il existe cinq éditions de SQL Server. L'édition d'entrée de gamme est SQL Server Express, une base de données gratuite destinée à l'apprentissage et à la création de petites applications de bureau et de serveur. Elle est principalement utilisée par les particuliers et les petites organisations qui n'ont besoin que des fonctionnalités de base d'un SGBDR.

SQL Server Developer est concédé sous licence à un seul utilisateur. Il est utilisé comme système de développement et de test, et non comme serveur de production. Il dispose de toutes les fonctionnalités de l'édition Enterprise, mais dans un environnement de non-production. Elle est utilisée par les développeurs et les testeurs.

SQL Server Web est conçu pour les hôtes Web et les points d'accès virtuels (PAV) Web. Il leur permet de partager (à faible coût) leurs services et applications fonctionnant sur SQL Server.

SQL Server Standard fournit des fonctionnalités de gestion de données et de Business Intelligence pour les petites organisations disposant de ressources informatiques minimales. Il offre presque tout ce que fait SQL Enterprise, mais avec certaines limitations.

SQL Enterprise est l'édition de référence pour les grandes entreprises. Elle offre une virtualisation illimitée, un accès au nuage via Azure, ainsi que les meilleures performances, analyses de données et sécurité. C'est également l'édition de SQL Server la plus chère.

3. Quels sont les principaux composants de SQL Server ?

Réponse : SQL Server se compose de plusieurs éléments.

  1. Le moteur de base de données gère le stockage, la sécurité et la transformation des données.
  2. L'application SQL Server démarre, arrête et met en pause le travail des autres composants. Son exécutable est sqlservr.exe.
  3. L'agent SQL Server est un planificateur de tâches qui s'active à chaque événement. Son exécutable est sqlagent.exe.
  4. SQL Server Browser reçoit les requêtes entrantes pour SQL Server et fournit des informations sur les instances de SQL Server installées sur l'ordinateur. Son exécutable est ssqlbrowser.exe.
  5. SQL Server Full-Text Search permet d'effectuer des recherches en texte intégral dans les données à base de caractères stockées dans les tables de la base de données. Son exécutable est fdlauncher.exe.
  6. SQL Server VSS Writer permet de sauvegarder et de restaurer les bases de données en créant des copies fantômes lorsque le serveur SQL n'est pas en cours d'exécution. Son exécutable est sqlwriter.exe.
  7. SQL Server Analysis Services (SSAS) est un composant d'exploration et d'analyse des données, ainsi que de création de rapports et de visualisation des données grâce à la connectivité avec des outils tels que PowerBI et Excel. Il permet également d'utiliser Python et R pour des analyses avancées. Son exécutable est smsmdsrv.exe.
  8. SQL Server Reporting Services (SSRS) est un composant de reporting qui vous permet de créer, de déployer et de gérer des rapports graphiques, mobiles et imprimés. Son exécutable se trouve à l'adresse suivante : ReportingServicesService.exe.
  9. SQL Server Integration Services (SSIS) est un outil ETL pour l'entreposage, l'extraction, la transformation, le chargement et l'intégration des données. Son exécutable se trouve à l'adresse suivante : MsDtsSrvr.exe.

Questions d'entretien SQL/T-SQL

Il s'agit des questions d'entretien pour SQL Server qui sont directement liées à T-SQL et à ses commandes. La plupart d'entre elles ne requièrent aucune démonstration de codage, mais vous devez tout de même posséder de solides connaissances en T-SQL pour y répondre. Si vous souhaitez vous entraîner au codage avant l'entretien, voici quelques questions d'entretien portant sur le codage SQL.

4. Qu'est-ce que T-SQL ? Quelle est la différence entre SQL et T-SQL ?

Réponse : T-SQL est un dialecte SQL utilisé pour communiquer avec la base de données SQL Server.

SQL est un langage open-source développé par IBM, tandis que T-SQL est créé et détenu par Microsoft. SQL est un langage non procédural, ce qui signifie qu'il exécute une requête SQL à la fois. En revanche, T-SQL est un langage procédural. Cela signifie que les requêtes sont exécutées en bloc dans un ordre logiquement structuré. De plus, T-SQL possède des instructions, des mots-clés et des fonctions qui n'existent pas dans le langage SQL standard. Pour plus de détails à ce sujet, consultez l'article mettant en évidence les 14 différences entre SQL et T-SQL.

5. Quels sont les différents types de jointures dans SQL Server ?

Réponse : Il existe cinq JOINs différents dans SQL Server :

  • (INNER) JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • FULL (OUTER) JOIN
  • CROSS JOIN

JOIN est une jointure interne qui renvoie les lignes correspondantes des deux tables jointes.

LEFT JOIN est une jointure externe qui renvoie toutes les lignes de la première table (gauche) et seulement les lignes correspondantes de la deuxième table (droite). RIGHT JOIN fait la même chose, mais à partir de la droite ; il renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche.

FULL JOIN est une jointure externe qui combine LEFT JOIN et RIGHT JOIN: elle renvoie toutes les lignes de la table de gauche et toutes les lignes de la table de droite.

CROSS JOIN renvoie un produit cartésien - c'est-à-dire qu'il renvoie toutes les combinaisons de toutes les lignes des tables jointes.

Notre aide-mémoire sur les jointures SQL explique clairement chacune de ces jointures à l'aide d'exemples. Si vous souhaitez aller plus loin, voici 10 questions d'entretien sur les jointures SQL.

6. Quel est le but des clauses GROUP BY et HAVING en T-SQL ?

Réponse : GROUP BY organise en groupes les lignes ayant les mêmes valeurs dans une ou plusieurs colonnes. Elle est souvent (mais pas toujours) utilisée avec les fonctions d'agrégation.

Vous trouverez plus de détails dans cet article GROUP BY, ainsi que 5 exemples de GROUP BY dans un autre article.

HAVING est utilisé pour filtrer les groupes sur la base d'une condition spécifiée. Puisqu'elle filtre les groupes, les fonctions d'agrégation sont autorisées dans cette clause.

Voici un article qui explique HAVING plus en détail.

7. Qu'est-ce qu'une sous-requête en T-SQL ?

Réponse : Une sous-requête ou une requête interne est une requête placée à l'intérieur d'une autre requête (appelée requête externe). En T-SQL, les sous-requêtes peuvent être utilisées dans les instructions SELECT, INSERT, UPDATE et DELETE. Elles sont placées dans les clauses FROM, WHERE ou HAVING de l'instruction T-SQL autorisée.

8. Quels sont les différents types de sous-requêtes ?

Réponse : Il existe plusieurs types de sous-requêtes.

Une sous-requête scalaire est une sous-requête qui renvoie précisément une valeur (une ligne et une colonne) comme résultat. Elle est utilisée dans les clauses FROM, WHERE et HAVING.

Une sous-requête à lignes multiples est une sous-requête qui renvoie plusieurs lignes et une ou plusieurs colonnes. Elle est utilisée dans les mêmes clauses que les sous-requêtes scalaires, mais avec les opérateurs IN, NOT IN, ANY, ALL, EXISTS, ou NOT EXISTS.

Les sous-requêtes corrélées utilisent une valeur de la requête externe. Elle est évaluée une fois pour chaque ligne de la requête externe.

Les sous-requêtes non corrélées fonctionnent indépendamment de la requête externe ; elles ne dépendent pas des résultats de la requête externe.

Pour en savoir plus sur les différents types de sous-requêtes, cliquez ici.

9. Quelle est la différence entre UNION et UNION ALL ?

Réponse : UNION et UNION ALL fusionnent les résultats de deux ou plusieurs requêtes en un seul ensemble de résultats. La différence est que UNION n'inclut pas les doublons, alors que UNION ALL le fait.

Vous pouvez en savoir plus sur leur syntaxe et leur utilisation dans cet article sur UNION vs. UNION ALL.

10. Listez les fonctions les plus courantes de SQL Server.

Réponse : Voici les catégories de fonctions et les fonctions les plus couramment utilisées dans SQL Server.

Fonctions de chaîne :

  • CONCAT() - Fusionne deux chaînes ou plus.
  • LEFT()Fonctions de chaîne, RIGHT() & SUBSTRING() - Renvoie le nombre spécifié de caractères à partir de l'extrémité gauche ou droite d'une chaîne ou d'une position spécifiée dans la chaîne.
  • LEN() - Renvoie le nombre de caractères de la chaîne.
  • LTRIM(), RTRIM() & TRIM() - Supprime les espaces ou autres caractères à gauche, à droite ou à une position spécifiée dans la chaîne.
  • REPLACE() - Remplace toutes les occurrences d'une sous-chaîne spécifiée par une autre chaîne.
  • LOWER() et UPPER() - Met tous les caractères en minuscules ou en majuscules, respectivement.

Fonctions numériques :

  • ABS() - Renvoie la valeur absolue.
  • ROUND() - Arrondit un nombre à la décimale spécifiée.

Fonctions de date et d'heure :

  • DATEDIFF() - Renvoie la différence entre deux dates spécifiées.
  • CURRENT_TIMESTAMP() - Renvoie la date et l'heure actuelles.
  • DATEADD() - Ajoute une date ou un intervalle de temps à une date et renvoie une nouvelle date.
  • DAY() MONTH(), - Renvoie le jour, le mois ou l'année d'une date. YEAR()

Fonctions d'agrégation :

  • COUNT() - Compte le nombre de lignes renvoyées par une requête.
  • SUM() - Renvoie la somme des valeurs.
  • AVG() - Renvoie la valeur moyenne.
  • MIN() - Renvoie la valeur minimale.
  • MAX() - Renvoie la valeur maximale.

Autres fonctions :

  • CAST() & CONVERT() - Convertit une valeur d'un type de données en un type de données spécifié.
  • COALESCE() - Renvoie la première valeur nonNULL
  • ISNULL() - Renvoie la valeur spécifiée si l'expression est NULL ou si l'expression est différente.
  • NULLIF() - Renvoie NULL si deux expressions sont identiques.

11. Quel est l'objectif des fonctions COALESCE() et NULLIF() ?

Réponse : COALESCE() renvoie la première valeur nonNULL. NULLIF() renvoie NULL si deux expressions sont identiques.

Voici comment vous pouvez utiliser COALESCE() en SQL.

12. Qu'est-ce que Fonctions de fenêtrage dans SQL Server ?

Réponse : Ces fonctions effectuent des calculs sur l'ensemble des lignes liées à la ligne actuelle. Elles sont similaires aux fonctions d'agrégation, mais contrairement à elles, les fonctions de fenêtre ne condensent pas le résultat en une seule ligne. Cela permet d'afficher simultanément les valeurs agrégées et les valeurs individuelles des lignes.

Les fonctions de fenêtre de SQL Server sont utilisées pour le classement, l'agrégation et l'analyse.

Vous pouvez revoir les concepts les plus importants des fonctions de fenêtre grâce à notre feuille de contrôle SQL Fonctions de fenêtrage . Vous pouvez mettre en pratique ce que vous avez appris grâce à ces 11 exercices sur les fonctions de fenêtre SQL. Et si vous voulez être prêt pour l'entretien d'embauche, testez vos connaissances sur ces 10 questions d'entretien sur les fonctions SQL window.

13. Trouver les N premières lignes dans SQL Server.

Réponse : Si nous voulons retourner les 5 premières lignes de la table, nous pouvons le faire comme suit album table, nous pourrions le faire comme ceci :

SELECT TOP 5 *
FROM albums;

14. Que font ROLLUP, GROUPING SETS et CUBE en T-SQL ?

Réponse : Il s'agit d'extensions de GROUP BY. ROLLUP vous permet de créer plusieurs ensembles de regroupement et d'ajouter des sous-totaux et des grands totaux. Avec GROUPING SETS, vous pouvez définir plusieurs ensembles de regroupement, ce qui revient à combiner plusieurs clauses GROUP BY dans une seule requête. CUBE vous permet de créer des groupes pour les combinaisons possibles de colonnes et d'ajouter des sous-totaux.

15. Qu'est-ce qu'un CTE dans SQL Server ?

Réponse : Un CTE (Common Table Expression) est le résultat temporaire nommé d'une instruction SELECT. Ils sont similaires aux sous-requêtes, mais contrairement à elles, les CTE peuvent être utilisés plusieurs fois dans la même requête. Ils sont également similaires aux tables temporaires. Toutefois, le résultat de l'ETC n'est pas stocké dans la mémoire de la base de données ; l'ETC doit être exécuté chaque fois que son résultat est utilisé par une requête.

Les résultats des CTE peuvent être référencés dans les instructions SELECT, INSERT, UPDATE, DELETE et MERGE.

Pour plus de détails, consultez l'article expliquant les CTE dans SQL Server. Pour approfondir vos connaissances, voici sept exemples de CTE dont vous pouvez vous inspirer.

16. Expliquez ce qu'est un CTE récursif et comment en écrire un dans SQL Server.

Réponse : Un CTE récursif fait référence à lui-même. Comme un CTE normal, un CTE récursif dans SQL Server est écrit en utilisant la clause WITH.

La première partie d'un ETC récursif est un membre d'ancrage, qui produit le résultat de base de l'ETC.

Ce résultat est fusionné avec le résultat d'une autre requête, appelée membre récursif parce qu'elle fait référence au membre d'ancrage. Cette fusion est réalisée à l'aide de UNION ALL. L'utilisation de UNION ne fonctionnerait pas (contrairement à d'autres bases de données).

La troisième partie d'un ETC récursif est la condition de terminaison, qui spécifie les conditions d'arrêt de la récursivité, faute de quoi celle-ci pourrait se poursuivre indéfiniment.

Cet article sur les ETC récursifs vous apprendra à transformer la réponse ci-dessus en code.

Questions d'entretien intermédiaires sur SQL Server

Nous allons maintenant examiner les questions destinées aux utilisateurs intermédiaires de SQL Server.

17. Comment créer une table dans SQL Server ?

Réponse : Les tables dans SQL Server sont créées à l'aide de la commande CREATE TABLE. Dans cette commande, vous spécifiez le nom de la table, les noms des colonnes et le type de données que chaque colonne acceptera.

La syntaxe est la suivante :

CREATE TABLE table_name (
   column_1 datatype,
   column_2 datatype,
   column_3 datatype,
   …
);

18. Qu'est-ce qu'une clé primaire ? Qu'est-ce qu'une clé étrangère ?

Réponse : La clé primaire est une colonne (ou une combinaison de colonnes) qui garantit l'identification unique des lignes d'une table. Une clé étrangère est une colonne ou une combinaison de colonnes d'une table qui fait référence à la clé primaire d'une autre table.

19. Quelle est la différence entre les commandes DELETE et TRUNCATE ?

Réponse : Bien qu'elles puissent sembler similaires, elles appartiennent à des catégories différentes de commandes SQL. DELETE est une commande DML (Data Manipulation Language) utilisée pour supprimer tout ou partie des lignes (à l'aide de la clause WHERE ) de la table.

TRUNCATE est une commande DDL (Data Definition Language). Elle supprime toutes les lignes du tableau ; vous ne pouvez pas l'utiliser pour supprimer seulement certaines lignes. Une autre différence est que TRUNCATE n'enregistre pas les modifications de chaque ligne dans le journal, ce qui la rend plus rapide que DELETE. DELETE efface ligne par ligne, chaque suppression étant enregistrée dans le journal.

19. Quelle est la différence entre une table et une vue dans SQL Server ?

Réponse : Une table est un objet de base de données qui constitue le principal stockage de données dans les bases de données relationnelles. Elle se compose de lignes et de colonnes et est stockée en mémoire.

Une vue est une requête stockée qui résulte en une table virtuelle contenant des lignes et des colonnes de données. Une vue ne contient pas de données en elle-même et n'en produit que lorsqu'elle est exécutée. Cela améliore la facilité d'utilisation et la sécurité des données. Cela permet également d'économiser de la mémoire, puisque le résultat de la vue n'est pas stocké en mémoire.

20. Pouvez-vous expliquer les différents types d'index dans SQL Server ?

Réponse : Les index suivants sont pris en charge par SQL Server :

  • Hash
  • Mémoire optimisée non groupée
  • En grappe
  • Non groupé
  • Unique
  • Columnstore
  • Index avec colonnes incluses
  • Index sur les colonnes calculées
  • Filtré
  • Spatial
  • XML
  • Texte intégral

Les deux principales catégories d'index sont les index groupés et les index non groupés.

Lesindex en grappe font partie de la structure de la table et déterminent l'ordre physique de stockage et de tri en fonction de la valeur de la clé de l'index. Il ne peut y avoir qu'un seul index en grappe par table. Lorsqu'elle recherche des données, la requête parcourt le tableau ligne par ligne jusqu'à ce qu'elle trouve l'index spécifié.

Lesindex non groupés contiennent des valeurs clés, chaque valeur clé ayant un pointeur vers la ligne de données qui contient la valeur clé. Cela signifie que la requête va directement à la ligne de données avec un index spécifié ; il n'est pas nécessaire de parcourir toutes les données avant elle. Ces index sont structurés et stockés séparément des tables indexées.

21. Quelle est la différence entre une fonction et une procédure stockée ?

Réponse : Les fonctions sont des routines qui renvoient des valeurs calculées et ne peuvent pas modifier les objets de la base de données. Elles doivent avoir au moins un paramètre et renvoyer un résultat.

Dans SQL Server, il existe une distinction entre les fonctions intégrées et les fonctions définies par l'utilisateur. Les fonctions intégrées sont fournies avec SQL Server ; elles sont réparties dans les catégories suivantes :

  • Lesfonctions agrégées effectuent un calcul sur un groupe de lignes (c'est-à-dire en utilisant GROUP BY et des valeurs de colonnes partagées) et renvoient une valeur unique pour l'ensemble du groupe.
  • Lesfonctions analytiques effectuent des calculs sur l'ensemble des lignes liées à la ligne actuelle. Il s'agit de fonctions de fenêtre agrégées.
  • Lesfonctions de manipulation de bits permettent de travailler plus efficacement avec des informations binaires.
  • Les fonctions declassement (c'est-à-dire les fonctions de fenêtre de classement) classent les lignes et/ou les données dans un ordre particulier.
  • Les fonctions dejeux de lignes contiennent des ensembles de lignes avec toutes les valeurs des colonnes. Elles peuvent être référencées à la place des tables dans les instructions T-SQL.
  • Lesfonctions scalaires prennent un paramètre et renvoient une valeur.

Les fonctions définies par l'utilisateur présentent toutes les caractéristiques des fonctions intégrées, à ceci près qu'elles sont créées par les utilisateurs. Vous pouvez les créer, les stocker et les appeler à tout moment.

Les procédures stockées sont des instructions SQL précompilées qui exécutent de manière répétée un ensemble d'actions. Contrairement aux fonctions, les procédures stockées n'ont pas besoin de paramètre, ne doivent pas renvoyer de résultat et peuvent modifier les objets de la base de données.

INSERTLes commandes de type "T", " UPDATE" et " DELETE " sont autorisées dans les procédures stockées, mais pas dans les fonctions.

Les fonctions fonctionnent avec SELECT, WHERE, et HAVING; ce n'est pas le cas des procédures stockées.

Les procédures stockées peuvent utiliser des transactions et appeler des fonctions. En revanche, les fonctions ne peuvent pas utiliser de transactions, ni appeler des procédures stockées.

22. Quelle est la différence entre une table temporaire et une variable de table ?

Réponse : Les tables temporaires sont le stockage temporaire du résultat d'une requête. Elles ne sont disponibles que pour la session dans laquelle elles ont été créées.

Une variable de table est une variable locale qui, comme la table temporaire, stocke temporairement des données. Les variables de table sont utilisées dans les fonctions, les procédures stockées et les lots.

Les tables temporaires étant de véritables tables, elles conviennent mieux que les variables de table pour les grandes quantités de données. Cela signifie que vous pouvez utiliser les commandes SELECT INTO, ALTER TABLE et TRUNCATE avec les tables temporaires. Vous pouvez créer des index ou faire tout ce que vous feriez avec une table "normale". Les tables temporaires peuvent également être utilisées dans les transactions et les procédures stockées, mais pas dans les fonctions.

23. Qu'est-ce qu'un déclencheur ? Quand l'utiliseriez-vous ?

Réponse : Un déclencheur est un type de procédure stockée qui s'exécute automatiquement (c'est-à-dire qui est déclenchée) lorsqu'un événement spécifié se produit.

Les déclencheurs DML sont activés lorsqu'un utilisateur tente de modifier les données d'une table en utilisant INSERT, UPDATE ou DELETE. Les déclencheurs DDL s'exécutent lorsque les utilisateurs utilisent CREATE, ALTER ou DROP. Il existe également des déclencheurs de connexion qui sont activés lorsqu'un utilisateur établit une connexion avec SQL Server.

Un exemple d'utilisation d'un déclencheur DML est celui d'une table qui stocke des données sur les employés, y compris leur salaire. Vous pouvez créer un déclencheur chaque fois que quelqu'un modifie les informations relatives à un employé ; le déclencheur stocke les informations modifiées dans une table distincte. De cette façon, vous pouvez avoir un aperçu historique des modifications apportées aux informations relatives à chaque employé.

24. Quelle est la différence entre Commit et Rollback ?

Réponse : COMMIT TRANSACTION enregistre de façon permanente toutes les modifications de données apportées par une transaction.

ROLLUP TRANSACTION permet d'annuler toutes les modifications survenues depuis le dernier commit des modifications de la transaction.

SQL avancé Questions d'entretien sur le serveur

Allons plus loin dans la connaissance de SQL Server et couvrons plusieurs questions d'entretien avancées. Vous trouverez d'autres questions avancées et des exemples de codage dans cet article.

25. Pouvez-vous expliquer les différents types de réplication dans SQL Server ?

Réponse : La réplication transactionnelle est une réplication en temps quasi réel de la copie de la base de données principale (éditeur) vers la base de données sur laquelle elle est répliquée (abonné).

Dans la réplication par fusion, toutes les modifications effectuées hors ligne sont effectuées chaque fois que les deux bases de données sont connectées. Cette méthode est similaire à la réplication transactionnelle, mais les modifications sont apportées à la fois à l'éditeur et à l'abonné.

La réplication par instantané prend des instantanés de la copie de la base de données principale à un moment donné et réplique ses données dans une autre base de données.

La réplication poste à poste est une variante de la réplication transactionnelle qui permet la réplication sur un nombre quelconque de serveurs.

La réplication transactionnelle bidirectionnelle réplique les données entre deux serveurs, les deux serveurs publiant et s'abonnant aux données de l'autre serveur.

La réplication des abonnements actualisables consiste, après que la modification a été apportée à la base de données de l'abonné, à transmettre d'abord ces données à une copie de la base de données principale. Ce n'est qu'ensuite qu'elles sont répliquées vers d'autres abonnés.

26. Expliquez les différents types de verrous dans SQL Server.

Réponse : Dans la gestion des bases de données, les verrous sont un moyen pour SQL Server d'assurer la simultanéité des transactions dans un environnement où plusieurs utilisateurs accèdent à la même base de données en même temps. Lorsque le serveur SQL traite une requête, il décide quelles ressources de données seront utilisées et comment. Lors de l'exécution d'une requête, il décide également du type de verrou qui sera appliqué pour protéger la ressource de données.

Voici les types de modes de verrouillage dans le serveur SQL :

  • Le mode de verrouillagepartagé (S) est utilisé pour les instructions en lecture seule, par exemple SELECT. Il rend les données disponibles uniquement en lecture. Cela signifie que pendant l'exécution de la requête, les données ne peuvent pas être modifiées.
  • Le mode de verrouillageUpdate (U) est utilisé pour les données qui vont être mises à jour. Contrairement au mode de verrouillage S, une seule transaction peut détenir un verrou U, ce qui permet d'éviter les blocages. Une fois que la transaction est prête à mettre à jour les données, le mode de verrouillage passe au verrouillage X.
  • Le mode de verrouillageexclusif (X) est utilisé pour garantir qu'une seule transaction peut mettre à jour les mêmes données à la fois. Il est utilisé avec des commandes telles que INSERT, UPDATE et DELETE.
  • Le mode de verrouillageintentionnel (I) garantit l'établissement d'une hiérarchie de verrouillage. Il informe les autres transactions de l'intention d'imposer un verrou S ou X, empêchant ainsi une autre transaction de les imposer. Il existe trois verrous d'intention : intention partagée (IS), intention exclusive (IX) et partagée avec intention exclusive (SIX).
  • Le mode de verrouillageSchema (Sch) est utilisé pour les opérations dépendant du schéma. Le verrou de modification du schéma (Sch-M) pour les instructions DDL (CREATE, ALTER, DROP) empêche l'accès aux données lorsque la structure de l'objet est en cours de modification. Le verrou de stabilité du schéma (Sch-S) est utilisé lorsque des transactions dépendantes du schéma sont exécutées. Il autorise tous les autres verrous à l'exception de Sch-M.
  • Le mode de verrouillageBulk Update (BU) est imposé lorsque les données sont copiées en masse et que l'indice TABLOCK est spécifié.
  • Le mode deverrouillage par plage de clés est utilisé dans les niveaux d'isolation des transactions sérialisables. Il permet d'éviter les lectures fantômes, c'est-à-dire lorsque la même requête renvoie des résultats différents à chaque fois qu'elle est exécutée.

27. Quelle est la différence entre un deadlock et un livelock ?

Réponse : Il y a blocage lorsque deux processus ou plus s'empêchent mutuellement d'acquérir un verrou. En d'autres termes, c'est lorsque chaque processus possède un verrou sur un élément de données et tente d'acquérir un verrou sur un autre élément de données verrouillé par un autre processus. SQL Server met fin à l'un des processus. Dans le cas contraire, le blocage se poursuivrait indéfiniment.

Un livelock se produit lorsque les verrous partagés se chevauchent, empêchant ainsi un autre processus d'acquérir un verrou exclusif.

28. Quelle est la différence entre une vue matérialisée et une vue non matérialisée ?

Réponse : Les vues matérialisées sont des vues logiques de données dont le résultat est enregistré dans une table, ce qui permet d'exécuter une requête une seule fois. Elles augmentent les performances, car le résultat peut être indexé (c'est une table !). D'un autre côté, le résultat peut ne pas être récent si la sortie de la vue matérialisée n'a pas été mise à jour.

Les vues non matérialisées sont également des vues logiques des données, mais leur sortie n'est enregistrée nulle part. L'inconvénient est que vous devez exécuter la vue chaque fois que vous souhaitez utiliser son résultat. Sur une note plus positive, vous êtes assuré d'obtenir les données les plus récentes.

29. Quelle est la différence entre les transactions implicites et explicites ?

Réponse : Les transactions explicites sont initiées avec BEGIN TRANSACTION; la modification des données est validée avec COMMIT TRANSACTION.

Pour les transactions implicites, SQL Server prend l'initiative de les démarrer implicitement (sans la commande BEGIN TRANSACTION ). Elles doivent cependant être validées ou annulées explicitement par l'utilisateur.

Si le mode implicite est activé, voici les mots-clés qui lanceront la transaction implicite :

  • BEGIN TRANSACTION
  • CREATE
  • UPDATE
  • DELETE
  • DROP
  • FETCH
  • INSERT
  • OPEN
  • GRANT
  • REVOKE
  • SELECT
  • ALTER
  • TRUNCATE

Vous vous sentez à l'aise avec les questions d'entretien sur SQL Server ?

Nous espérons que c'est le cas ! Les 29 questions d'entretien que nous avons présentées (et auxquelles nous avons répondu) comprennent des questions d'entretien générales, T-SQL, intermédiaires et avancées sur SQL Server.

La catégorie des questions T-SQL contient le plus grand nombre de questions, ce qui reflète son importance. Comme nous l'avons dit au début, l'écriture de requêtes T-SQL est une exigence commune à tous les métiers qui travaillent avec des bases de données relationnelles sous quelque forme que ce soit.

Par conséquent, lorsque vous vous préparez à un entretien, vous ne devez pas considérer les autres questions comme inutiles. En termes de gestion du temps, vous devriez vous concentrer sur la maîtrise de T-SQL. Le site Le SQL de A à Z de MS SQL Server est une plate-forme parfaite pour cela !

Maintenant, c'est à vous de vous entraîner et de réussir cet entretien d'embauche !