Le langage de requête structuré (SQL) est le langage de programmation standard utilisé par les administrateurs de bases de données et les analystes de données pour interroger les bases de données. Il est largement utilisé dans les langages de programmation des sites web, des applications et d’autres plateformes.
Il permet d’accéder aux données d’une base de données et de les manipuler, notamment en créant et en modifiant des tables et des colonnes et en interrogeant les données à l’aide de commandes SQL.
Ce billet vous donnera sans doute des indications si vous cherchez des questions et des réponses à utiliser lorsque vous vous préparez à un entretien d’embauche en SQL. Lors d’un entretien d’embauche pour un ingénieur de données, un analyste de données, un administrateur de base de données, etc.
Quelles sont les commandes SQL de base ?
Voici quelques-unes des commandes SQL les plus importantes :
- SELECT – extrait des données d’une base de données.
- CREATE TABLE – crée une nouvelle table.
- DELETE – supprime les données d’une base de données.
- INSERT INTO – insère de nouvelles données dans une base de données.
- ALTER DATABASE – modifie une base de données.
- CREATE DATABASE – crée une nouvelle base de données.
- UPDATE – met à jour les données d’une base de données.
Quelles sont les quatre instructions SQL importantes ?
Les principales instructions SQL sont divisées en quatre catégories :
- Les instructions du langage de définition des données (DDL)
- Instructions du langage de manipulation des données (DML)
- Les instructions du langage de contrôle des données (DCL)
- Déclarations du langage de contrôle des transactions (TCL)
Quelle est la signification de la clé primaire en SQL ?
Une clé primaire est une colonne (ou un ensemble de colonnes) qui permet d’identifier chaque ligne d’une base de données de manière unique. Les bases de données SQL accordent une grande importance aux clés primaires. Elles fournissent à chaque ligne d’une table de base de données un identifiant unique. Une clé primaire peut être constituée d’un ou de plusieurs champs et il ne peut y avoir qu’une seule clé primaire par table.
Que sont les types de données SQL ?
Un type de données est un attribut qui décrit le type de données qu’un objet peut stocker, comme les chaînes binaires, les données numériques, les données de caractères, les données financières, les données de date et d’heure, etc.
En SQL, les types de données sont classés dans les catégories suivantes :
- Numériques exacts
- Données numériques approximatives
- Date et heure
- Chaînes de caractères
- Chaînes de caractères Unicode
- Chaînes binaires
Où sont stockés les noms d’utilisateur et les mots de passe dans le serveur SQL ?
Les noms d’utilisateur et les mots de passe sont stockés dans les tables SQL sys.server principals et sys.sql logins, respectivement. Les mots de passe ne sont pas stockés en texte normal.
Qu’est-ce que l’injection SQL ?
Les attaques par injection SQL sont l’un des types de cyber-attaques les plus courants aujourd’hui. Elles permettent à des attaquants malveillants d’accéder à des données en manipulant la base de données d’une application. Cela peut avoir de nombreuses conséquences négatives, allant des pertes financières à la perte de données sensibles. La meilleure façon de se protéger contre les attaques par injection SQL est de les empêcher de se produire.
Qu’est-ce qu’un déclencheur en SQL et quels sont ses types ?
Un déclencheur est un type spécial de procédure stockée qui s’exécute automatiquement lorsqu’un événement se produit dans le serveur de base de données. Les déclencheurs sont utilisés pour évaluer les données avant ou après leur modification à l’aide des instructions DDL et DML.
Il existe trois types de déclencheurs : LOGON, DDL et DML.
- Déclencheurs LOGON : Ces déclencheurs sont activés lorsqu’ un utilisateur déclenche un événement de connexion.
- Les déclencheurs DDL sont déclenchés chaque fois qu’une commande DDL telle que CREATE, ALTER ou DROP est émise.
- Déclencheurs DML : Ils sont déclenchés chaque fois qu’une commande DML modifie des données. Comparables à INSERT, UPDATE et DELETE
Comment distinguer les fonctions à ligne unique des fonctions à lignes multiples ?
Une seule ligne d’un tableau peut être affectée par des fonctions à ligne unique. Elles exécutent une ligne et ne renvoient qu’un seul résultat. Il est bien connu que les conversions de longueur et de casse sont des fonctions à une seule ligne.
Les lignes d’un tableau peuvent être affectées par plusieurs fonctions de ligne simultanément. Elles sont également connues sous le nom de fonctions de groupe, car elles exécutent plusieurs lignes avant de renvoyer un seul résultat.
Qu’est-ce que la normalisation des bases de données et quels sont ses quatre principaux types en SQL ?
La normalisation des bases de données est un processus par lequel les données sont organisées pour une accessibilité plus rapide et pour réduire la redondance des données. Les colonnes et les tables d’une base de données sont organisées au cours de la normalisation afin de s’assurer que toutes les dépendances sont correctement maintenues par les contraintes d’intégrité de la base de données.
Les quatre types de processus de normalisation des bases de données sont les suivants :
- Première forme normale (1 NF)
- Deuxième forme normale (2 NF)
- Troisième forme normale (3 NF)
- Forme normale de Boyce Codd ou quatrième forme normale (BCNF ou 4 NF)
Que sont les index et les contraintes en SQL ?
Les index sont l’un des concepts les plus importants en SQL. Ils nous permettent de trouver rapidement des lignes de données spécifiques dans de grandes bases de données. Ils nous aident également à appliquer les contraintes, qui sont des règles indiquant à la base de données comment se comporter lorsque certaines conditions sont remplies.
Les index sont utilisés pour améliorer les performances des requêtes en accélérant la recherche de données dans les tables. Ils sont également utilisés pour améliorer la lisibilité des données dans les tables.
Les contraintes sont utilisées pour limiter le type de données pouvant être introduites dans une table. Elles garantissent l’exactitude et la fiabilité des données contenues dans la table. S’il y a une violation entre la contrainte et l’action sur les données, l’action est annulée.
Quelles sont les contraintes SQL couramment utilisées ?
Les contraintes SQL couramment utilisées sont les suivantes :
- CREATE INDEX : cette commande permet de créer des index pour les tables afin de simplifier la recherche de données.
- FOREIGN KEY : La clé étrangère d’une table doit relier des tables ayant des attributs similaires.
- DEFAULT : Si aucune valeur n’est fournie pour les champs d’une colonne, la commande fournit une valeur par défaut pour ces champs.
- UNIQUE : spécifie que chaque valeur d’une colonne doit être distincte.
- CLÉ PRIMAIRE : La clé primaire d’une table doit identifier chaque ligne.
- NOT NULL : Cette condition garantit que les valeurs NULL ne sont pas acceptées dans les colonnes.
- CHECK : cette condition permet de s’assurer que chaque champ d’une colonne est conforme à une exigence prédéterminée.
NULL est-il égal à 0 en SQL ?
Une valeur NULL en SQL indique une valeur qui n’est pas disponible ou assignée. Un espace (‘ ‘) ou un zéro (0) ne sont pas équivalents à la valeur NULL. Vous ne pouvez pas comparer la valeur NULL à une autre valeur en utilisant des opérateurs de comparaison tels que “=” ou “>”, car elle ne peut pas être égale ou inégale à une autre valeur.
Comment prévenir les attaques par injection SQL ?
Outre l’analyse constante et les tests de pénétration, les méthodes de sécurité telles que la validation des entrées, l’assainissement, les instructions préparées et les requêtes SQL paramétrées sont essentielles pour prévenir les attaques par injection de code SQL. En outre, des défenses rapides telles qu’un pare-feu contribueraient à protéger la base de données SQL.
Qu’est-ce que le SQL dynamique et quand pouvez-vous l’utiliser ?
Le SQL dynamique est une fonction que vous pouvez utiliser pour modifier vos requêtes au moment de l’exécution en fonction d’un ou de plusieurs critères, y compris la date actuelle, l’heure actuelle ou tout autre critère de votre choix.
Vous pouvez utiliser le SQL dynamique pour modifier vos requêtes de manière significative et vous aider à atteindre vos objectifs ou simplement à améliorer vos compétences en programmation. Que vous créiez une nouvelle application, que vous amélioriez une base de données ou que vous ajoutiez une fonctionnalité d’entrepôt de données à votre système de production, vous pouvez utiliser Dynamic SQL pour tout faire.
Quels sont les différents types de clés en SQL ?
Clé primaire : Chaque ligne ou enregistrement d’une table de base de données est identifié de manière unique par un champ appelé clé primaire. La valeur unique doit se trouver dans la clé primaire. Les champs de la clé primaire ne peuvent pas contenir de valeurs NULL. Il ne peut y avoir qu’une seule clé primaire par table, composée d’un ou plusieurs champs.
Clé étrangère : Le champ ou le groupe de champs d’une table qui se rapporte à la clé primaire d’une autre table est appelé clé étrangère. Les tables ayant des clés primaires sont appelées tables mères, tandis que les tables ayant des clés étrangères sont appelées tables enfants.
Super clé : Une super clé est une clé ou un ensemble de clés qui permettent d’identifier les entrées d’une table. Bien que tous les attributs ne soient pas nécessaires pour identifier un enregistrement, une super clé peut en avoir un ou plusieurs.
Clé candidate : Une clé candidate est un sous-ensemble de clés permettant d’identifier les entrées d’une table : Une clé candidate est un sous-ensemble de super clés qui peut être utilisé pour identifier des enregistrements dans une base de données sur la base d’un ou plusieurs attributs. Contrairement à la superclé, toutes les caractéristiques d’une clé candidate doivent être utiles à l’identification des enregistrements.
Clé composite : Une clé composite est une combinaison de deux colonnes ou plus dans une table qui est utilisée pour identifier les lignes d’une table. Une clé composite est une clé primaire associée à un autre attribut ou à une autre colonne.
Quels sont les types d’index en SQL ?
Les types d’index en SQL sont les suivants
- Index de hachage
- mémoire optimisée Non groupé
- Index en grappe
- Index non groupé
- Index unique
- Index Column Store
- Index avec colonnes incluses
- Index sur les colonnes calculées
- Index filtré
- Index spatial
- Index XML
- Index plein texte
Qu’entendez-vous par pool de mémoire tampon et quels en sont les avantages ?
En SQL, un pool de tampons est également appelé cache tampon. Un pool de tampons peut être utilisé par toutes les ressources pour stocker leurs pages de données en cache. Lors de la configuration d’une instance de SQL Server, la taille du pool de mémoire tampon peut être spécifiée. La taille d’un pool de mémoire tampon détermine le nombre de pages qu’il peut contenir.
Les avantages d’un pool de mémoire tampon sont les suivants :
- Amélioration des performances d’E/S
- Augmentation du débit des transactions
- Réduction de la latence des E/S
- Amélioration des performances de lecture
Qu’entendez-vous par dépendance et mentionnez les différentes dépendances ?
Lorsqu’un objet est référencé par son nom dans une instruction SQL conservée dans un autre objet, une dépendance est établie entre les deux objets. Le terme “entité référencée” fait référence à un objet qui apparaît dans une expression SQL, tandis que le terme “entité référençante” fait référence à un objet qui contient une expression SQL.
Voici les différents types de dépendances en SQL.
- Dépendance fonctionnelle
- Dépendance entièrement fonctionnelle
- Dépendance multivaluée
- Dépendance transitive
- Dépendance partielle
Que sont les jointures SQL et quelles sont les jointures SQL les plus populaires ?
Les jointures sont un élément fondamental de la gestion des données en SQL. Elles permettent de joindre deux tables ou plus pour créer une table unique qui peut être utilisée pour analyser les données. Elles permettent également de filtrer les résultats sur la base de critères dans une seule table, ce qui peut s’avérer utile lorsque vous essayez de trouver des lignes ou des colonnes spécifiques dans une grande table.
Il existe quatre types principaux de JOIN en SQL : INNER JOIN, OUTER JOIN, CROSS JOIN et SELF JOIN.
Quels sont les opérateurs d’ensemble en SQL ?
Les données d’une ou de plusieurs tables du même type peuvent être combinées à l’aide de l’opérateur set. Les opérateurs SQL set et SQL join sont similaires, mais il existe quelques différences essentielles. Les opérateurs d’ensemble SQL rassemblent des enregistrements provenant de différentes requêtes, tandis que les jointures SQL combinent des colonnes provenant de différentes tables. Les requêtes SQL composées sont celles qui incluent des opérations d’ensemble.
Qu’est-ce qu’un SGBD ?
En termes simples, un SGBD est un système logiciel qui facilite la communication entre les utilisateurs finaux et une base de données. Il permet ainsi de stocker, d’extraire, de définir et de gérer des données au sein d’une base de données.
Qu’est-ce qu’un SGBDR ?
Pour comprendre ce qu’est un SGBDR, vous devez d’abord saisir le concept de base de données relationnelle. Une base de données relationnelle est une méthode structurée de stockage et de gestion des données à l’aide de tableaux, où les données sont organisées en lignes et en colonnes pour faciliter la recherche et l’analyse.
Maintenant que la fonctionnalité est précisée, définissons les SGBDR. Un SGBDR est considéré comme un logiciel qui permet aux utilisateurs de gérer, de mettre à jour et de créer des bases de données relationnelles. Parmi les SGBDR les plus répandus sur le marché, citons MySQL, Microsoft SQL Server, Oracle Database, etc.
Qu’est-ce que PostgreSQL ?
PostgreSQL est un système de base de données robuste à code source ouvert qui améliore SQL avec des fonctionnalités avancées pour une gestion des données sécurisée et évolutive.
Discutez de la différence entre SQL et MySQL.
Contrairement à MySQL, PostgreSQL est une base de données relationnelle-objet qui prend en charge des types de données avancés tels que les objets, les tableaux et le XML. Elle est donc plus intuitive et plus polyvalente pour les développeurs. Pour plus de clarté, vous trouverez ci-dessous un tableau.
S.No | MySQL | PostgreSQL |
1 | Populaire | Avancé |
2 | Relationnel | Objet-Relationnel |
3 | Atelier MySQL | pgAdmin |
4 | Types d’index limités | Prise en charge de divers index |
5 | MVCC limité | Support complet du MVCC |
6 | Opérations simples | Opérations complexes |
7 | Fils du système d’exploitation | Processus du système d’exploitation |
8 | Fiable et rapide | Lent et complexe |
9 | Types de données de base | Types de données avancés |
Discutez de la différence entre NoSQL et SQL.
Il existe de nombreuses différences entre NoSQL et SQL en termes de type, de langage, de structure, de support, etc. Les cas d’utilisation diffèrent également : SQL est un bon choix lorsque vous devez travailler avec des données liées, tandis que NoSQL excelle lorsque vous traitez des ensembles de données volumineux ou changeants. Vous trouverez ci-dessous une représentation sous forme de tableau de leurs différences, qui pourrait vous aider à clarifier les notions de SQL et de NoSQL.
S. Non | SQL | NoSQL |
1 | Utilise les structures du langage SQL | Utilise un schéma dynamique pour les données non structurées |
2 | Respecte les propriétés ACID | Suit le théorème CAP |
3 | Extensible verticalement | Extensible horizontalement |
4 | Bon pour les données connexes, les requêtes structurées | Idéal pour les ensembles de données volumineux ou changeants, modèles de données flexibles |
5 | Bases de données relationnelles (SGBDR) | Bases de données non relationnelles/distribuées |
6 | Basées sur des tables | Diverses structures (p. ex. paires clé-valeur, documents, graphiques) |
7 | Soutien important de la part des fournisseurs et des consultants | Soutien limité des experts, souvent tributaire de la communauté |
Discutez de la différence entre SQL et PL/SQL.
SQL et PL/SQL se distinguent par leur approche de la manipulation des bases de données. SQL est un langage déclaratif pour les bases de données relationnelles, tandis que PL/SQL est un langage procédural qui utilise SQL pour les opérations sur les bases de données.
PL/SQL inclut des variables et des structures de contrôle et peut exécuter plusieurs opérations à la fois, réduisant ainsi le trafic sur le réseau. SQL est limité à des opérations uniques. PL/SQL offre un traitement des données à grande vitesse, ce qui n’est pas le cas de SQL.
Discutez des différences entre OLTP et OLAP.
OLAP est conçu pour les tâches analytiques, l’extraction de données historiques à partir de plusieurs bases de données et l’utilisation d’un entrepôt de données. Il est plus lent lorsque les volumes de données sont importants, mais ne nécessite pas de mises à jour fréquentes. En revanche, l’OLTP est destiné aux tâches quotidiennes de l’entreprise, à la gestion des données opérationnelles actuelles avec un SGBD standard. Il est plus rapide pour les opérations essentielles et les mises à jour rapides de données initiées par les utilisateurs.
L’OLAP est axé sur le sujet, tandis que l’OLTP est axé sur l’application. L’OLAP s’adresse aux cadres supérieurs, en mettant l’accent sur les clients, tandis que l’OLTP s’adresse aux employés de bureau, aux travailleurs à la chaîne et aux cadres, avec une approche centrée sur le marché.
Qu’est-ce que l’instruction select ?
L’instruction SQL SELECT extrait des données d’une base de données, ce qui permet de spécifier les colonnes à extraire et d’appliquer des critères de sélection des données. Le résultat est stocké dans un ensemble de résultats et nous pouvons définir des titres de colonnes pour plus de clarté. Cette déclaration est l’une des premières et dernières clauses évaluées par le serveur de base de données pour déterminer les colonnes potentielles de l’ensemble de résultats final.
Prenons l’exemple d’une table “Produits”. Si nous voulons récupérer les noms et les prix des produits dont le prix est supérieur à 50 $, nous pouvons utiliser la requête SQL suivante :
SELECT NomProduit, Prix
FROM Produits
WHERE Prix > 50 ;
Dans cet exemple, nous spécifions les colonnes “NomProduit” et “Prix” dans la clause SELECT. La clause WHERE définit les critères de sélection des enregistrements dont le prix est supérieur à 50 $. L’ensemble de résultats comprendra les noms et les prix des produits qui répondent à cette condition.
Comment utiliser une instruction DISTINCT ?
SQL DISTINCT est un outil puissant qui permet de supprimer les doublons dans les résultats d’une requête. Il est associé à SELECT pour extraire des valeurs uniques de colonnes ou de tables spécifiques. Les points clés sont les suivants :
- Elle élimine les doublons.
- Il peut fonctionner avec des fonctions d’agrégation.
- Elle opère sur une seule colonne.
- Syntaxe :
SELECT DISTINCT expressions FROM tables [WHERE conditions]
; - Les valeurs NULL sont considérées comme distinctes.
Qu’est-ce qu’une CLAUSE en SQL ?
En SQL, vous rencontrerez une série de clauses conçues pour traiter efficacement des volumes de données importants. Ces clauses agissent comme des fonctions intégrées, recevant des expressions conditionnelles impliquant des noms de colonnes ou des termes apparentés.
Ces expressions guident les clauses dans le calcul des résultats, ce qui vous permet de filtrer et d’analyser des données volumineuses stockées dans des bases de données. Ainsi, dans le domaine du langage SQL, ces clauses sont vos fidèles compagnons, vous aidant à passer au crible et à donner un sens à vos données sans effort.
Mentionnez quelques clauses utilisées avec select.
Vous trouverez ci-dessous quelques clauses courantes utilisées avec l’instruction SELECT en SQL :
- WHERE: Filtre les lignes en fonction d’un critère donné.
- ORDER BY: Trie l’ensemble des résultats.
- GROUP BY: Regroupe les lignes ayant des valeurs similaires.
- HAVING: filtre les lignes groupées.
- LIMIT (ou TOP) : Limite le nombre de lignes renvoyées.
- DISTINCT: récupère les valeurs uniques.
- JOIN: combine des lignes provenant de plusieurs tables.
- UNION (et UNION ALL) : Combine les résultats de plusieurs requêtes.
- CASE: permet d’appliquer une logique conditionnelle à une requête.
Quel est l’ordre par défaut des données dans la clause ORDER BY ?
L’ordre par défaut des données à l’aide de la clause ORDER BY revient à classer les choses par défaut de la plus petite à la plus grande. Imaginez que vous ayez une liste de nombres : 1, 4, 2, 7, 3. Si vous utilisez la clause ORDER BY sans spécifier de sens, ils seront classés comme suit :
1, 2, 3, 4, 7
Il va donc de la plus petite (1) à la plus grande (7) valeur. Si vous souhaitez inverser le processus et commencer par la plus grande valeur, vous pouvez utiliser le mot-clé DESC comme suit :
SELECT * FROM Table
ORDER BY ColumnName DESC ;
La liste serait donc la suivante :
7, 4, 3, 2, 1
La clause ORDER BY vous permet de contrôler la manière dont les données sont ordonnées, ce qui facilite le tri de vos données de différentes manières.
Mentionnez les différents types de relations en SQL
Imaginez que vous ayez un modèle de données avec des tables, et que ces tables soient connectées ou liées les unes aux autres. Vous verrez souvent des lignes les reliant. Ces lignes représentent les types de relations entre les tables.
Il existe trois principaux types de relations :
🔷 Une à plusieurs: C’est le type le plus courant. Imaginez que vous ayez une liste de clients et que chaque client soit associé à une ville. Une ville peut avoir de nombreux clients, mais chaque client n’appartient qu’à une seule ville.
🔷 Many-to-Many: Ce type est utilisé lorsque les deux tables peuvent avoir plusieurs entrées de part et d’autre. Par exemple, pensez à des employés qui appellent des clients. Un employé peut appeler de nombreux clients et un client peut recevoir des appels de plusieurs employés. Lorsque vous avez “plusieurs” des deux côtés, il s’agit d’une relation de plusieurs à plusieurs. Pour gérer cela, vous avez souvent besoin d’une nouvelle table entre les deux.
🔷 One-to-One: Cette relation est rarement utilisée, mais elle a sa place. Imaginez que vous souhaitiez stocker les données des employés et leurs cartes d’identité valides. Chaque employé ne possède qu’une seule carte d’identité valide, et chaque carte d’identité n’appartient qu’à un seul employé. Il s’agit d’une relation biunivoque. Vous pouvez stocker les détails de la carte d’identité dans une table distincte et les relier à l’aide d’une clé étrangère.
Ainsi, lorsque vous concevez une base de données, la compréhension de ces types de relations vous aide à décider comment structurer efficacement vos tables et leurs connexions. C’est comme si vous deviez déterminer comment les pièces d’un puzzle s’emboîtent pour représenter vos données réelles avec précision.
Qu’est-ce que l’union et l’intersection ?
UNION: L’UNION est un moyen d’empiler les résultats les uns sur les autres. Il combine les données de plusieurs requêtes en une seule liste. Si vous disposez de deux listes d’éléments et que vous souhaitez les rassembler tout en supprimant les doublons, vous pouvez utiliser la fonction UNION.
Exemple: Imaginez que vous ayez une liste des fruits préférés d’un ami et une autre liste d’un autre ami. UNION vous permet de créer une liste unique de fruits en combinant les deux listes
SELECT fruit FROM ami1_fruits
UNION
SELECT fruit FROM ami2_fruits ;
INTERSECT: INTERSECT est comme un outil de détective pour trouver des éléments communs. Il compare deux listes et ne vous montre que les éléments qui apparaissent dans les deux listes. Si vous disposez de deux ensembles de données et que vous souhaitez voir ce qu’ils ont en commun, vous pouvez utiliser INTERSECT.
Exemple: Imaginez que vous ayez une liste de livres lus par votre ami et une liste de livres que vous avez lus. INTERSECT vous aide à trouver les livres que vous avez tous les deux lus.
SELECT livre FROM vos_livres
INTERSECT
SELECT livre FROM livres_amis ;
Ces opérations sont comme des pièces de puzzle, qui vous aident à combiner ou à trouver des éléments communs dans vos données.
Discutez de la différence entre une jointure croisée et une jointure naturelle.
Une jointure naturelle consiste à combiner deux tables qui ont quelque chose en commun, comme les noms des élèves dans une liste de classe et leurs notes d’examen dans une autre table. Les deux tables doivent contenir le même type d’informations (comme des noms dans les deux tables) pour utiliser une jointure naturelle.
Supposons que vous disposiez de deux tables : “Students” et “TestScores”, et que vous souhaitiez effectuer une jointure naturelle basée sur l’attribut commun “student_id”
Table : Étudiants
Identifiant de l’étudiant | Nom de l’étudiant | Âge de l’étudiant |
1 | Alice | 18 |
2 | Bob | 19 |
3 | Charlie | 18 |
Tableau : Résultats des tests
ID de l’étudiant | Nom de l’élève | Score |
1 | Mathématiques | 95 |
2 | Sciences | 88 |
3 | Mathématiques | 91 |
Effectuons maintenant une jointure naturelle en SQL :
SELECT * FROM Étudiants
NATURAL JOIN TestScores ;
Résultat :
ID de l’étudiant | Nom | Âge | Sujet | Score |
1 | Alice | 18 | Mathématiques | 95 |
2 | Bob | 19 | Sciences | 88 |
3 | Charlie | 18 | Mathématiques | 91 |
Dans cet exemple, la jointure naturelle combine les tables “Students” et “TestScores” sur la base de l’attribut commun “student_id” La table résultante comprend tous les attributs des deux tables, mais une seule copie de la colonne “student_id”, puisqu’il s’agit de l’attribut commun.
Une jointure croisée, également appelée jointure cartésienne, revient à combiner chaque ligne d’une table avec chaque ligne d’une autre table. Elle ne repose sur aucune condition spécifique ou attribut commun ; elle associe simplement chaque ligne de la première table à chaque ligne de la deuxième table.
Tableau : Couleurs
Couleur |
Rouge |
Rouge |
Bleu |
Tableau : Tailles
Taille |
Petite |
Moyenne |
Grande |
Effectuons maintenant une jointure croisée en SQL :
SELECT * FROM Couleurs
CROSS JOIN Tailles ;
Résultat :
Couleur | Taille |
Rouge | Petit |
Rouge | Moyen |
Rouge | Grand |
Vert | Petit |
Vert | Vert moyen |
Vert | Grand |
Vert moyen | Petit |
Bleu | Bleu moyen |
Bleu | Grand bleu |
Dans cet exemple, la jointure croisée combine chaque couleur de la table “Couleurs” avec chaque taille de la table “Tailles”, ce qui permet d’obtenir toutes les combinaisons possibles de couleurs et de tailles. Elle ne tient compte d’aucune relation ou condition spécifique entre les deux tables, ce qui la différencie des autres types de jointures qui s’appuient sur des critères de correspondance.
Comment supprimer les lignes dupliquées en SQL ?
Lorsque vous travaillez avec des bases de données SQL, vous pouvez rencontrer des lignes en double dans vos tables. Cela peut se produire même si vous suivez les meilleures pratiques telles que l’utilisation de clés primaires et d’index. Cet article présente différentes méthodes pour supprimer les lignes dupliquées d’une table SQL.
- Utilisation des clauses GROUP BY et HAVING
- Identifiez les lignes en double à l’aide de la clause GROUP BY.
- Utilisez COUNT pour vérifier les occurrences de doublons.
- Supprimez les doublons en ne conservant qu’une seule instance de chaque ligne.
- Utilisation des expressions de table communes (CTE)
- Utilisez la fonction ROW_NUMBER() dans une CTE.
- Les données sont réparties en fonction de colonnes spécifiques.
- Supprimez les doublons lorsque le numéro de ligne est supérieur à 1.
- Utilisation de la fonction RANK
- Utilisez la fonction RANK() avec la clause PARTITION BY.
- Attribuez des identifiants uniques aux lignes, sans tenir compte des doublons.
- Supprimez les lignes dont le rang est supérieur à 1.
- Utilisation du package SSIS
- Les services d’intégration de SQL Server (SSIS) peuvent automatiser la suppression des doublons.
- Triez les données à l’aide d’un opérateur de tri dans SSIS.
- Activez l’option “Supprimer les lignes avec des valeurs de tri en double”.
- Stockez les données nettoyées dans une table de destination.
Il est important de faire preuve de prudence lorsque vous appliquez ces méthodes à des données de production. Testez-les toujours dans un environnement sûr avant de les utiliser sur des données réelles.
Quelles sont les fonctions SQL utilisées pour manipuler les majuscules et les minuscules ?
SQL fournit plusieurs fonctions qui vous permettent de manipuler les majuscules et les minuscules dans les chaînes de caractères. Voici quelques fonctions SQL courantes permettant de manipuler les majuscules et les minuscules :
UPPER() : Cette fonction convertit tous les caractères d’une chaîne en majuscules.
SELECT UPPER('Hello World') AS UppercaseResult ;
Résultat : "BONJOUR AU MONDE"
LOWER() : Cette fonction convertit tous les caractères d’une chaîne en minuscules.
SELECT LOWER('Hello World') AS LowercaseResult ;
Résultat : "hello world"
INITCAP() : Cette fonction met en majuscule la première lettre de chaque mot d’une chaîne.
SELECT INITCAP('hello world') AS InitCapResult ;
Résultat : "Hello World"
Ces fonctions sont utiles pour formater et présenter les données textuelles de manière cohérente et lisible dans les requêtes SQL et les rapports.
Qu’est-ce qu’une clé unique ?
La clé unique de SQL garantit que la colonne d’une table n’a que des valeurs différentes et aucune répétition. C’est un peu comme une clé primaire, mais elle autorise une valeur “vide” (comme un espace vide). Cela peut s’avérer pratique lorsque vous souhaitez que les données soient essentiellement uniques, mais pas de manière trop stricte. Vous pouvez également utiliser les clés uniques pour vous connecter à d’autres tables. Et devinez quoi ? Vous pouvez avoir plus d’une clé unique sur différentes colonnes d’une table en même temps.
Qu’est-ce qu’une clé étrangère ?
Une clé étrangère relie une table à une autre en faisant référence à la clé primaire de la seconde table. La première table est appelée la table enfant et la seconde la table parent. C’est comme si la table enfant empruntait des informations à la table parent.
Que sont les jetons ?
En SQL, les jetons sont les unités fondamentales qui composent les instructions SQL. Ils comprennent les mots-clés (par exemple, SELECT), les identificateurs (par exemple, les noms de tables), les littéraux (par exemple, les nombres), les opérateurs (par exemple, ), la ponctuation (par exemple, les virgules) et les commentaires. Les jetons sont utilisés pour structurer et définir les requêtes et les commandes SQL.
Qu’est-ce qu’un BLOB dans MySQL ?
Dans MySQL, un BLOB (Binary Large Object) est un type de données permettant de stocker des données binaires telles que des images ou des fichiers. Par exemple, vous pouvez créer une table pour stocker des images avec des colonnes pour les noms d’images et leurs données binaires. Cela vous permet d’insérer, d’extraire et de gérer des données binaires dans votre base de données.
Voici un exemple de code simplifié pour créer une table MySQL afin de stocker des images en utilisant le type de données BLOB et d’y insérer une image :
-- Créez une table pour stocker des images
CREATE TABLE Images (
image_id INT AUTO_INCREMENT PRIMARY KEY,
nom_image VARCHAR(255),
image_data BLOB
) ;
-- Insérez une image dans la table
INSERT INTO Images (image_name, image_data) VALUES ('example.jpg', 'binary_data_here') ;
Dans ce code :
- Nous créons une table nommée “Images” avec des colonnes pour l’identifiant unique de l’image (image_id), le nom de l’image (image_name) et les données binaires de l’image (image_data) stockées sous la forme d’un BLOB.
- Nous insérons une image nommée “exemple.jpg” dans la table “Images”. Toutefois, dans la pratique, vous remplacerez “binary_data_here” par les données binaires réelles de l’image, qui peuvent être chargées à partir d’un fichier à l’aide de la fonction LOAD_FILE() ou fournies par programme.
Ce code démontre la structure de base pour créer une colonne BLOB dans une table MySQL et y insérer une image.
Discutez de la différence entre CHAR et VARCHAR.
Char et Varchar sont des types de données SQL utilisés pour stocker des chaînes de caractères, mais ils présentent des caractéristiques distinctes :
Type de données Char(n) :
- Stocke des chaînes de caractères de longueur fixe.
- Requiert une longueur spécifiée (n) pour chaque valeur stockée.
- Utilise un emplacement de mémoire statique.
- Chaque caractère occupe 1 octet de stockage.
- Convient lorsque la longueur de la chaîne est connue et cohérente.
Type de données Varchar(n) :
- Stocke des chaînes de caractères de longueur variable.
- Permet de stocker différentes longueurs de chaîne jusqu’à une longueur maximale spécifiée (n).
- Utilise l’allocation dynamique de la mémoire.
- Nécessite des octets supplémentaires (généralement 2) pour stocker les informations relatives à la longueur.
- Convient lorsque la longueur des chaînes de caractères varie.
Différences :
- Char est destiné aux chaînes de longueur fixe, tandis que Varchar est destiné aux chaînes de longueur variable.
- Char utilise une mémoire statique, alors que Varchar utilise une mémoire dynamique.
- Char nécessite 1 octet par caractère, tandis que Varchar utilise 1 octet par caractère plus des octets supplémentaires pour la longueur.
- Char convient aux situations où la longueur des chaînes est constante, tandis que Varchar est flexible pour les longueurs variables.
En résumé, Char est comme une boîte rigide pour vos chaînes, toujours de la même taille, tandis que Varchar est comme un élastique, s’adaptant à différentes longueurs selon les besoins.
Discutez de la différence entre les opérateurs de condition “BETWEEN” et “IN”.
En SQL, nous disposons de deux opérateurs pratiques : BETWEEN et IN. Ils nous aident à comparer des valeurs de différentes manières. L’opérateur BETWEEN est très utile lorsque nous voulons vérifier si une valeur se situe dans une plage spécifique. Cela revient à dire : “Ce nombre est-il compris entre 5 et 10 ?”
D’autre part, l’opérateur IN est comme une liste de contrôle. Nous l’utilisons pour vérifier si une valeur figure sur notre liste de valeurs acceptées. Par exemple, nous pouvons demander : “Ce nom figure-t-il dans notre liste de noms approuvés ?” Ces opérateurs sont comme nos outils de sélection des données dans une base de données, garantissant que nous obtenons les bonnes informations qui se situent dans les plages que nous spécifions ou qui correspondent aux valeurs que nous avons répertoriées.
Discutez de la différence entre IN et EXISTS.
En SQL, l’opérateur IN compare une valeur à une liste ou à une sous-requête, généralement utilisée dans la clause WHERE pour des ensembles de valeurs connus. Par exemple, il permet de filtrer les produits par CategoryID dans une liste prédéfinie.
D’autre part, l’opérateur EXISTS vérifie l’existence de lignes renvoyées par une sous-requête. Il renvoie un résultat positif si la sous-requête produit des lignes, ce qui le rend utile pour vérifier des données spécifiques ou des relations entre tables dans des scénarios complexes, souvent avec des sous-requêtes corrélées.
En résumé, IN compare des valeurs à des ensembles fixes, tandis que EXISTS vérifie l’existence de lignes, en particulier dans les cas de sous-requêtes et de relations de table complexes.
Discutez de la différence entre les commandes DROP et TRUNCATE.
Ici, DROP élimine entièrement la table, tandis que TRUNCATE conserve la structure de la table mais supprime ses données. Voici une représentation sous forme de tableau des différences entre les commandes DROP et TRUNCATE en SQL :
Aspect | Commande DROP | Commande TRUNCATE |
Objectif | Supprime la table entière | Supprime toutes les données du tableau |
Impact sur la structure | Supprime à la fois les données et le schéma de la table | Conserve la structure de la table |
Retour en arrière | Ne peut pas être annulé | Il est possible de revenir en arrière au sein d’une transaction |
Vitesse | Plus lente en raison des opérations sur la structure des tables | Plus rapide car elle ne traite que des données |
Scénario d’utilisation | Lorsque vous souhaitez vous débarrasser complètement d’une table | Lorsque vous souhaitez supprimer des données mais conserver le tableau pour un usage ultérieur |
Exemple | DROP TABLE NomTable ; | TRUNCATE TABLE NomTable ; |
Discutez de la différence entre les instructions DELETE et TRUNCATE.
DELETE est utilisé pour supprimer sélectivement des lignes spécifiques tout en tenant compte des conditions, tandis que TRUNCATE supprime rapidement toutes les lignes tout en conservant la structure de la table. Les deux peuvent être annulées au cours d’une transaction, mais TRUNCATE réinitialise les colonnes d’identité, alors que DELETE ne les réinitialise pas par défaut. Vous trouverez ci-dessous une comparaison concise entre les instructions DELETE et TRUNCATE en SQL :
Aspect | Instruction DELETE | Instruction TRUNCATE |
Objectif | Supprime des lignes spécifiques d’une table en fonction d’une condition. | Elle peut être annulée au cours d’une transaction. |
Annulation | Elle peut être annulée au cours d’une transaction. | Supprime toutes les lignes d’une table mais conserve la structure de la table. |
Vitesse | Elle est plus lente, en particulier pour les grands ensembles de données, car elle enregistre les suppressions de lignes individuelles et les déclenchements associés. | Plus rapide, car il désaffecte les pages de données sans enregistrer chaque suppression de ligne. |
Réinitialisation de l’identité | Les colonnes d’identité (auto-incrément) ne sont pas réinitialisées par défaut ; vous devez les réinitialiser manuellement. | Réinitialise les colonnes d’identité (auto-incrément) à la valeur de départ. |
Conditions | Permet de spécifier des conditions pour supprimer des lignes de manière sélective. | Cette option n’autorise pas les conditions ; elle supprime toutes les lignes en une seule fois. |
Exemple | DELETE FROM NomTable WHERE Condition ; | TRUNCATE TABLE NomTable ; |
Discutez de la différence entre NOW() et CURRENT_DATE().
La fonction NOW() permet de récupérer la date et l’heure actuelles, en les présentant au format “YYYY-MM_DD HH:MM:SS”. En revanche, la fonction CURRENT_DATE() récupère spécifiquement la date du jour en cours, au format “YYYY-MM_DD”. Ces deux fonctions sont utilisées pour fournir des détails précis sur la date et l’heure actuelles, ce qui en fait des outils précieux pour les données temporelles en SQL.
Discutez de la différence entre les fonctions RANK() et DENSE_RANK().
En SQL, les fonctions RANK() et DENSE_RANK() sont utilisées pour classer les lignes dans les ensembles de résultats, mais elles diffèrent dans la manière dont elles traitent les valeurs identiques ou liées. La fonction RANK() attribue un rang unique à chaque ligne, mais lorsque plusieurs lignes ont les mêmes valeurs et partagent le même rang, elle laisse des vides dans les valeurs de rang.
Par exemple, si deux lignes ont un rang de 2, la ligne suivante se verra attribuer un rang de 4. D’autre part, la fonction DENSE_RANK() attribue également un rang unique à chaque ligne, mais il est important de noter que lorsque plusieurs lignes partagent les mêmes valeurs et le même rang, elle ne laisse pas de vide. Cela signifie que si deux lignes ont un rang de 2, la ligne suivante est consécutivement classée 3.
Ainsi, le choix entre RANK() et DENSE_RANK() dépend du fait que vous souhaitez ou non des écarts dans les valeurs de rang lorsque vous traitez des lignes liées dans vos ensembles de résultats SQL.
Discutez de la différence entre COALESCE() et ISNULL().
COALESCE() est une fonction plus polyvalente et largement supportée pour gérer les valeurs nulles en SQL, tandis que ISNULL() est spécifique à SQL Server et sert un objectif similaire mais avec une portabilité limitée.
Principales différences :
- COALESCE() est une fonction SQL ANSI standard et peut gérer plusieurs expressions, alors que ISNULL() est spécifique à SQL Server et ne fonctionne qu’avec deux arguments.
- COALESCE() renvoie la première valeur non nulle d’une liste d’expressions, tandis que ISNULL() remplace une valeur nulle par une valeur de remplacement spécifiée.
- COALESCE() est plus facilement transférable entre différents systèmes de base de données, tandis que ISNULL() est limité à SQL Server.
Discutez de la différence entre les fonctions NVL et NVL2.
En SQL, la fonction NVL() permet de convertir une valeur nulle en une valeur réelle. Cela peut être utile pour différents types de données comme les dates, les caractères et les nombres, mais il est essentiel que les types de données de expr1 et expr2 correspondent. La syntaxe est simple : NVL(expr1, expr2), où expr1 est la valeur source qui peut être nulle et expr2 est la valeur que nous voulons utiliser pour remplacer la valeur nulle.
Par exemple, dans une requête qui calcule les salaires annuels, nous pouvons utiliser NVL() pour traiter les pourcentages de commission. Si commission_pct est nul, nous le remplaçons par 0.
SELECT salaire, NVL(commission_pct, 0),
(salaire*12) (salaire*12*NVL(commission_pct, 0)) AS annual_salary FROM employees ;
Une autre fonction utile est NVL2(), qui évalue la première expression. Si elle n’est pas nulle, elle renvoie la deuxième expression ; sinon, elle renvoie la troisième expression. L’argument expr1 peut avoir n’importe quel type de données.
Par exemple, dans une requête qui calcule le revenu, nous pouvons utiliser NVL2() pour déterminer si la commission doit être incluse dans le calcul.
SELECT nom_famille, salaire, commission_pct,
NVL2(commission_pct, 'SAL COMM', 'SAL') AS income FROM employees ;
Ces fonctions sont pratiques pour traiter les valeurs nulles et personnaliser le traitement des données dans les requêtes SQL.
Discutez de la différence entre les clauses WHERE et HAVING.
WHERE filtre les lignes individuelles en fonction des valeurs des colonnes, tandis que HAVING filtre les résultats groupés en fonction des fonctions d’agrégation. Elles ont des objectifs différents dans les requêtes SQL, WHERE étant utilisé pour le filtrage au niveau de la ligne et HAVING pour le filtrage au niveau du groupe.
Principales différences :
- WHERE est utilisé pour filtrer des lignes individuelles avant le regroupement, tandis que HAVING est utilisé pour filtrer des groupes de lignes après le regroupement.
- WHERE est appliqué aux données sources, alors que HAVING est appliqué aux résultats des fonctions d’agrégation.
- WHERE est généralement utilisé avec les instructions SELECT, UPDATE et DELETE, tandis que HAVING est généralement utilisé avec les instructions SELECT impliquant GROUP BY.
- Les conditions WHERE sont basées sur les valeurs individuelles des colonnes, tandis que les conditions HAVING impliquent des fonctions d’agrégation.
Comment créer des tables vides ?
Pour créer une table vide en SQL, vous pouvez utiliser la commande “CREATE TABLE”. Vous indiquez le nom de la table et définissez ses colonnes ainsi que leurs types de données. Cependant, vous n’insérez aucune donnée réelle dans la table lors de sa création. C’est comme si vous mettiez en place une structure vide qui contiendra des données à l’avenir. De cette manière, vous disposez d’une table prête à l’emploi, mais elle ne contient aucune information au départ.
Pouvez-vous expliquer les étapes de la création d’une table temporaire ?
La création d’une table temporaire en SQL est assez simple :
- Étape 1 – Se connecter: Assurez-vous d’abord que vous êtes connecté à votre base de données.
- Étape 2 – Définir la structure: Utilisez la commande CREATE TABLE pour définir la structure de votre table temporaire. Spécifiez son nom, ses colonnes et ses types de données.
- Étape 3 – Données facultatives: Si nécessaire, insérez des données à l’aide de la commande INSERT INTO. Cette étape permet d’ajouter des informations spécifiques.
- Étape 4 – Utilisation de la table: Vous pouvez maintenant utiliser votre table temporaire dans des requêtes SQL au cours de votre session de base de données actuelle.
- Étape 5 – Nettoyage (facultatif) : Si vous le souhaitez, vous pouvez supprimer la table temporaire lorsque vous ne l’utilisez plus. Pour ce faire, utilisez DROP TEMPORARY TABLE.
Les tables temporaires sont pratiques pour conserver temporairement des données dans votre session de base de données.
Quels sont les types de tables couramment utilisés dans MySQL et quelles sont leurs différentes fonctions ?
Dans MySQL, il existe plusieurs types de tables couramment utilisées à des fins différentes :
- Tables InnoDB: Elles prennent en charge les transactions, les clés étrangères et le verrouillage au niveau des lignes. Elles conviennent donc aux applications exigeant l’intégrité des données, telles que les plateformes de commerce électronique et les systèmes de gestion de contenu.
- Tables MyISAM: MyISAM est un moteur de stockage plus ancien qui est encore utilisé dans certains scénarios. Il est connu pour sa simplicité et sa rapidité, ce qui le rend adapté aux applications nécessitant une lecture intensive, telles que les blogs ou les forums. Cependant, il ne prend pas en charge les transactions ni les clés étrangères.
- Tables MEMOIRE: Elles sont idéales pour la mise en cache ou pour conserver des données temporaires qui n’ont pas besoin d’être conservées. Cependant, les données sont perdues lorsque le serveur redémarre.
- Tables ARCHIVE : Les tables ARCHIVES sont utilisées pour stocker efficacement de grandes quantités de données. Elles conviennent bien aux applications qui nécessitent des données historiques ou archivées, car elles utilisent un minimum d’espace disque. Cependant, leurs fonctionnalités sont limitées par rapport à d’autres moteurs de stockage.
- Tables CSV: Elles sont utiles pour importer et exporter des données au format CSV et peuvent être utilisées pour l’échange de données entre MySQL et d’autres applications.
- Tables fédérées: Les tables fédérées vous permettent d’accéder aux données d’un serveur MySQL distant. Elles sont pratiques pour distribuer des scénarios de base de données ou lorsque vous devez combiner des données provenant de plusieurs sources en une seule requête.
Comment sélectionner des enregistrements uniques dans une table ?
Pour obtenir des enregistrements uniques à partir d’une table en SQL, vous pouvez utiliser le mot-clé DISTINCT avec une instruction SELECT. Ce mot-clé garantit que seules des valeurs différentes sont affichées pour les colonnes choisies. Par exemple, si vous souhaitez obtenir une liste de noms uniques à partir d’une table “Clients”, vous devez écrire :
SELECT DISTINCT Prénom, Nom
FROM Clients ;
Cette requête extrait les combinaisons distinctes de prénoms et de noms de la table “Clients”, à l’exclusion des doublons.
Qu’est-ce qu’une table partitionnée ?
Les tables partitionnées en SQL reviennent à diviser une grande table en plusieurs parties sur la base de valeurs spécifiques dans une colonne choisie, connue sous le nom de clé de partition. Cela permet de gérer de grands ensembles de données et d’accélérer les requêtes. Chaque morceau est appelé partition et fonctionne comme sa propre mini-table, ce qui facilite la manipulation et la recherche des données.
Cette méthode est souvent utilisée pour organiser les données en fonction de l’heure, du nombre ou de l’emplacement. Différentes bases de données prennent en charge le partitionnement, mais les détails peuvent varier. Par exemple, vous pouvez diviser une table “Ventes” par “Date de commande” en sections mensuelles, ce qui simplifie le traitement de nombreuses données relatives aux ventes.
Comment copier des tables en SQL ?
Pour dupliquer ou “cloner” le contenu d’une table en SQL, vous pouvez utiliser différentes méthodes :
- CREATE TABLE … AS SELECT :
Créez une nouvelle table et copiez les données d’une table existante :
CREATE TABLE new_table AS SELECT * FROM original_table ;
Soyez prudent avec les grandes tables ; cette méthode peut être lente et gourmande en ressources. La nouvelle table hérite de certains éléments de base, mais pas des index ni des paramètres d’incrémentation automatique.
- CRÉER UNE TABLE… LIKE :
Pour reproduire la structure d’une table existante, utilisez :
CREATE TABLE new_table LIKE original_table ;
Vous créez ainsi une nouvelle table avec la même structure, mais sans données.
- INSERT … SELECT :
Pour copier des données entre des tables, vous pouvez procéder comme suit :
INSERT INTO new_table SELECT * FROM original_table ;
Ces méthodes vous permettent de contrôler la duplication des tables en SQL, en vous laissant choisir ce qui doit être copié et comment.
Comment supprimer une table en SQL ?
Pour supprimer une table en SQL, vous pouvez utiliser l’instruction DROP TABLE suivie du nom de la table à supprimer. Voici la syntaxe de base :
DROP TABLE nom_table ;
Remplacez nom_table par le nom de la table que vous souhaitez supprimer.
Voici un exemple :
DROP TABLE Clients ;
Dans cet exemple, la table “Clients” sera supprimée et toutes les données qu’elle contient seront perdues.
Comment supprimer une base de données dans PostgreSQL ?
Pour supprimer une base de données dans PostgreSQL, vous pouvez utiliser la commande DROP DATABASE. Cependant, vous devez être prudent lors de l’exécution de cette commande car elle supprime définitivement la base de données entière et tous ses objets associés, y compris les tables, les vues, les fonctions et les données.
Comment puis-je modifier le type de données d’une colonne existante en SQL et quelles sont les étapes à suivre ?
Pour modifier le type de données d’une colonne existante dans SQL, vous pouvez suivre une série d’étapes. Tout d’abord, connectez-vous à votre base de données à l’aide de l’outil de gestion de base de données de votre choix. Une fois connecté, examinez le type de données actuel de la colonne cible à l’aide de commandes telles que DESCRIBE ou SHOW COLUMNS.
Ensuite, utilisez l’instruction ALTER TABLE, en spécifiant le nom de la table, le nom de la colonne et le nouveau type de données souhaité. Après avoir effectué la modification, reconfirmez le succès du changement en vérifiant une nouvelle fois le type de données de la colonne. En fonction du nouveau type de données, vous devrez peut-être mettre à jour les données de la colonne pour qu’elles correspondent au nouveau type.
Enfin, il est essentiel de tester minutieusement toutes les requêtes ou applications qui utilisent cette colonne modifiée afin de s’assurer qu’elles fonctionnent correctement avec le type de données ajusté. Ce processus doit être abordé avec précaution et des tests approfondis afin d’éviter toute perte de données ou tout problème imprévu, en particulier dans les environnements de production.
Que sont les commentaires SQL ?
Les commentaires SQL sont comme des notes que vous pouvez ajouter dans votre code SQL pour expliquer des choses ou fournir des informations. Ces commentaires ne sont pas exécutés lorsque vous exécutez vos requêtes SQL ; ils sont là pour vous aider, vous et les autres, à mieux comprendre le code.
Il en existe deux types : les commentaires sur une seule ligne, qui commencent par deux traits d’union (–), et les commentaires sur plusieurs lignes, entre /* et */. Les commentaires sur une seule ligne sont parfaits pour de courtes explications, tandis que les commentaires sur plusieurs lignes vous permettent d’écrire des notes plus longues.
Les commentaires SQL sont pratiques pour documenter le code, clarifier les requêtes complexes et rendre votre code plus compréhensible pour vous-même et vos collègues développeurs, en particulier dans les grands projets.
Que sont les déclencheurs imbriqués ?
Les déclencheurs imbriqués dans les bases de données SQL sont comme des déclencheurs dans des déclencheurs. Lorsqu’un déclencheur est activé par une action et que ce déclencheur entraîne à son tour l’activation d’un autre déclencheur, on parle de déclencheur imbriqué.
Par exemple, le déclencheur A peut être déclenché par une action, et si cette action déclenche le déclencheur B, vous êtes en présence d’un déclencheur imbriqué. Ces déclencheurs imbriqués peuvent rendre les actions de votre base de données complexes et plus difficiles à gérer. Il est essentiel d’être prudent lorsque vous les utilisez et de comprendre comment ils interagissent, car ils peuvent conduire à des résultats inattendus ou à des problèmes de performance s’ils ne sont pas traités avec soin.
Qu’est-ce que la dénormalisation ?
La dénormalisation en SQL simplifie les tables de la base de données en introduisant des redondances. Contrairement à la normalisation, qui minimise la duplication, la dénormalisation ajoute intentionnellement de la redondance. Elle a pour but d’accélérer la recherche de données en réduisant la nécessité d’effectuer des jointures complexes. Bien qu’elle puisse améliorer les performances des requêtes, la dénormalisation peut entraîner des incohérences dans les données et augmenter les besoins de stockage. Il convient donc d’utiliser la dénormalisation de manière judicieuse afin de trouver un équilibre entre les performances et l’intégrité des données.
Qu’est-ce qu’une vue ?
En SQL, une vue est comme une table virtuelle créée par une requête. Il ne s’agit pas d’une véritable table contenant des données, mais elle agit comme telle lorsque vous interrogez la base de données. Les vues ont plus d’un tour dans leur sac :
- Requêtes simplifiées: Vous pouvez utiliser les vues pour faciliter la lecture et l’utilisation de requêtes complexes.
- Sécurité des données: Elles contribuent à la sécurité de vos données en vous permettant de contrôler qui voit quoi. Vous pouvez limiter les colonnes et les lignes visibles par différents utilisateurs.
- Flexibilité des données: Même si vous modifiez les tables, les vues restent inchangées tant que vous conservez les mêmes noms de colonnes.
- Amélioration des performances: dans certains cas, les vues peuvent accélérer l’exécution de vos requêtes en effectuant certains calculs à l’avance.
En résumé, les vues sont en quelque sorte la façon dont SQL vous facilite la vie lorsque vous traitez avec des bases de données.
Qu’est-ce qu’une procédure stockée ?
Une procédure stockée est un ensemble de commandes SQL préenregistrées que vous pouvez réutiliser à l’infini. Au lieu de réécrire le même code SQL, vous l’enregistrez en tant que procédure stockée et l’exécutez chaque fois que vous en avez besoin.
Ce qui est génial, c’est que vous pouvez lui donner des valeurs (paramètres), et la procédure stockée peut faire différentes choses en fonction de ces valeurs. C’est comme si vous disposiez d’une boîte à outils SQL très pratique !
Qu’est-ce qu’un curseur ?
En SQL, un curseur est comme une main virtuelle qui manipule les données ligne par ligne. Il vous aide à parcourir une liste de données, en effectuant des actions sur chaque élément individuellement. Les curseurs sont utiles lorsque vous avez besoin d’un contrôle précis sur les opérations de données.
Il en existe deux types : les curseurs implicites, créés automatiquement, et les curseurs explicites, que vous gérez vous-même pour les tâches plus complexes. Les curseurs permettent une manipulation fine des données.
Qu’est-ce qu’une fonction définie par l’utilisateur ?
En SQL, une fonction définie par l’utilisateur (UDF) est un outil personnalisé que vous créez pour des tâches spécifiques. C’est en quelque sorte votre propre mini-programme en SQL. Les UDF prennent des données en entrée, en font quelque chose et vous donnent des résultats. Il en existe deux types : Les fonctions scalaires (pour les résultats uniques) et les fonctions de tableau (pour les tableaux de données). Les UDF permettent à votre code SQL d’être ordonné et réutilisable.
Que sont les fonctions de groupe ?
En SQL, les fonctions de groupe (également connues sous le nom de fonctions agrégées) sont des fonctions spéciales utilisées pour effectuer des opérations sur des groupes de lignes et renvoyer un résultat unique pour chaque groupe. Au lieu de travailler sur des lignes individuelles, ces fonctions opèrent sur des ensembles de lignes et fournissent un résumé ou une agrégation des données au sein de chaque groupe.
Qu’est-ce qu’une fonction scalaire ?
Les fonctions scalaires en SQL sont comme des mini-programmes qui travaillent sur des données individuelles. Elles prennent une valeur, font quelque chose avec elle et vous donnent un résultat. Par exemple, elles peuvent mettre un texte en majuscules, trouver la longueur d’un mot ou arrondir un nombre. Ces fonctions sont pratiques pour des tâches telles que le nettoyage de données, lorsque vous devez modifier des données sur une seule ligne d’un tableau.
Que sont les fonctions de manipulation de caractères ?
Les fonctions de manipulation de caractères dans SQL sont un groupe de fonctions utilisées pour effectuer diverses opérations sur des données de type caractère ou texte. Ces fonctions vous permettent de manipuler et de transformer des valeurs de texte dans vos requêtes SQL.
Combien de fonctions agrégées sont disponibles en SQL ?
Les fonctions agrégées de SQL permettent de mieux comprendre les données d’une base de données. Par exemple, AVG calcule la valeur moyenne d’une colonne dans une base de données. Il existe cinq fonctions agrégées principales : MIN (recherche le minimum), MAX (recherche le maximum), COUNT (compte le nombre de lignes), SUM (additionne les valeurs) et AVG (calcule la moyenne). Ces fonctions permettent d’obtenir des résumés de données et des informations précieuses lors de l’interrogation des bases de données.
Qu’est-ce qu’une contrainte unique ?
Une contrainte unique en SQL garantit qu’une colonne ou un groupe de colonnes spécifique n’a pas de valeurs dupliquées. C’est comme une règle qui dit : “Chaque valeur doit être unique” Cette contrainte est couramment utilisée pour des éléments tels que les identifiants d’employés ou les adresses électroniques afin d’éviter les doublons et de maintenir l’intégrité des données.
Qu’est-ce qu’une sous-requête ?
Une sous-requête en SQL est comme une requête dans une requête. Elle vous permet de poser des questions spécifiques à l’intérieur d’une question plus large. Cette requête imbriquée est utilisée pour filtrer ou calculer des données de manière structurée.
Qu’est-ce qu’un serveur SQL ?
Un serveur SQL est une application logicielle qui gère et stocke des bases de données. Il s’agit en quelque sorte d’une puissante bibliothèque de données. Les serveurs SQL sont conçus pour gérer efficacement des tâches telles que le stockage, la récupération et l’organisation des informations.
Ils utilisent le langage SQL pour communiquer avec les bases de données, ce qui permet aux utilisateurs et aux applications d’interagir facilement avec les données stockées. Les serveurs SQL sont largement utilisés dans divers secteurs pour gérer et sécuriser des informations précieuses.
Comment démarrer un serveur SQL ?
Le démarrage d’un serveur SQL dépend de votre système d’exploitation et de vos préférences. Sous Windows, vous pouvez simplement cliquer sur le bouton Démarrer, rechercher “SQL Server” et l’ouvrir. Vous pouvez également appuyer sur “Windows R”, taper “services.msc”, localiser SQL Server dans la liste, cliquer dessus avec le bouton droit de la souris et sélectionner “Démarrer”
Si vous préférez une approche plus organisée, vous pouvez utiliser SQL Server Configuration Manager pour gérer et démarrer les instances de SQL Server. Pour SQL Server Express, une version légère, vous pouvez ouvrir l’Invite de commande, naviguer jusqu’à son dossier d’installation et exécuter “sqlservr.exe” pour le lancer.
Comment restaurer la base de données dans SQL Server ?
La restauration d’une base de données consiste à prendre les données d’une sauvegarde et à y appliquer les transactions enregistrées. Il s’agit essentiellement de transformer un fichier de sauvegarde en une base de données utilisable.
Vous pouvez effectuer la restauration d’une base de données en utilisant deux méthodes :
Méthode 1 – T-SQL: Cette méthode consiste à utiliser des commandes SQL pour restaurer une base de données. Voici un exemple :
Restauration de la base de données TestDB à partir du disque = 'D:\TestDB_Full.bak' avec replace
Dans cette commande, “TestDB” est le nom de la base de données que vous souhaitez restaurer et “D:\TestDB_Full.bak” est l’emplacement du fichier de sauvegarde. Si vous créez une nouvelle base de données ou si vous devez spécifier de nouveaux chemins d’accès aux fichiers de données et aux fichiers journaux, vous pouvez utiliser l’option “MOVE” comme suit :
RESTORE DATABASE TestDB FROM DISK = 'D:\NTestDB_Full.bak' (Restaurer la base de données TestDB à partir du disque = 'D:\NTestDB_Full.bak')
WITH MOVE 'TestDB' TO 'D:\Data\TestDB.mdf',
Déplacez 'TestDB_Log' vers 'D:\Data\TestDB_Log.ldf'
Méthode 2 – SSMS (SQL Server Management Studio) : Dans cette méthode, vous utilisez SQL Server Management Studio (SSMS) pour le processus de restauration :
- Connectez-vous à votre instance de base de données dans SSMS.
- Cliquez avec le bouton droit de la souris sur le dossier “Databases”.
- Sélectionnez “Restaurer la base de données”
- Choisissez le fichier de sauvegarde et configurez les options.
- Cliquez sur “OK” pour lancer le processus de restauration.
Ces méthodes vous permettent de récupérer efficacement une base de données à partir d’une sauvegarde.
Qu’est-ce qu’un schéma dans SQL Server ?
Dans SQL Server, un schéma est comme un dossier virtuel qui contient différents types d’informations, telles que des tables et des fonctions. Il permet d’organiser les choses, de gérer qui peut accéder à quoi et d’éviter les conflits de noms. Par exemple, vous pouvez avoir un dossier “Sales” pour toutes les informations relatives aux ventes et un dossier “HR” pour les informations relatives aux ressources humaines. C’est un moyen de mettre de l’ordre et de contrôler l’univers de votre base de données.
Qu’est-ce que le test de la boîte noire de la base de données ?
Tester la boîte noire d’une base de données, c’est comme tester un distributeur automatique sans savoir comment il est construit à l’intérieur. Les testeurs interagissent avec la base de données sans jeter un coup d’œil à son fonctionnement interne. Ils s’attachent à vérifier que la base de données fait ce qu’elle est censée faire, par exemple fournir les bonnes réponses aux questions qui lui sont posées.
Les testeurs n’ont pas besoin de savoir comment la base de données est conçue ; ils s’assurent simplement qu’elle fonctionne correctement, qu’elle conserve les données en sécurité et qu’elle gère différentes situations, comme les erreurs ou les contrôles de sécurité. C’est une façon de s’assurer que la base de données fonctionne bien de l’extérieur, comme l’utilisateur s’y attendrait.
Qu’est-ce que l’intégrité des données ?
L’intégrité des données dans les bases de données consiste à conserver des données exactes, complètes et sûres. Elle garantit que les informations sont correctes, qu’elles ne manquent pas et qu’elles sont cohérentes dans l’ensemble de la base de données. Les données fiables sont exemptes d’erreurs et à l’abri des modifications non autorisées. Elles respectent les règles et restent protégées. Il est également important de maintenir les relations entre les données.
Le suivi des modifications des données fait partie de l’intégrité des données. C’est essentiel pour prendre de bonnes décisions et instaurer la confiance. Les problèmes d’intégrité des données peuvent entraîner des erreurs et des problèmes de sécurité pour les organisations.
Qu’est-ce qu’une commande GRANT ?
En SQL, la commande GRANT est utilisée pour accorder des privilèges ou des autorisations spécifiques à des utilisateurs ou à des rôles de la base de données. Ces privilèges peuvent inclure la possibilité d’effectuer diverses actions sur des objets de base de données tels que des tables, des vues ou des procédures. La commande GRANT permet aux administrateurs de contrôler qui peut accéder, modifier ou gérer des parties spécifiques d’une base de données.
Par exemple, vous pouvez utiliser la commande GRANT pour autoriser un utilisateur à sélectionner des données dans une table, à mettre à jour des enregistrements ou même à créer de nouvelles tables. C’est un moyen de définir le niveau d’accès et de contrôle dont disposent différents utilisateurs ou rôles au sein d’un système de base de données.
Par essence, la commande GRANT permet de s’assurer que les utilisateurs ne peuvent effectuer que les actions auxquelles ils sont autorisés, ce qui constitue un aspect fondamental de la sécurité des bases de données et du contrôle d’accès.
Qu’est-ce que le COMMIT ?
En SQL, COMMIT revient à enregistrer les modifications apportées à une base de données. Il les rend permanentes, contrairement à ROLLBACK, qui annule les modifications.
Discutez des différences entre le commit et le checkpoint.
Un COMMIT finalise la transaction en cours dans la session actuelle, en garantissant la cohérence des données modifiées au cours de cette transaction. Parallèlement, un point de contrôle écrit sur le disque toutes les modifications validées jusqu’à un SCN (System Change Number) spécifique stocké dans le fichier de contrôle et les en-têtes des fichiers de données, ce qui garantit la cohérence globale de la base de données.
Conclusion
J’espère que ces questions d’entretien SQL vous donnent une bonne idée de ce à quoi vous pouvez vous attendre lors d’un entretien. Une plus grande exposition à l’environnement SQL est nécessaire pour réussir l’entretien SQL ; vous pouvez y parvenir en étudiant SQL en profondeur. Afin d’évaluer les principes clés du langage SQL, vous devez également vous entraîner aux questions d’entretien portant sur les requêtes SQL et continuer à lire.
Si vous souhaitez obtenir des précisions sur les requêtes SQL, consultez l’antisèche SQL pour en savoir plus sur les instructions SQL.
Pour acquérir une expérience pratique en exécutant des requêtes SQL, consultez ces plateformes de pratique SQL.