Plonge dans le monde de SQL FOREIGN KEY et améliore ta compréhension de cet élément crucial de la gestion des bases de données. Ce guide complet te fera découvrir les différents aspects des concepts SQL FOREIGN KEY et leur mise en œuvre dans les bases de données, ainsi que des exemples concrets et les meilleures pratiques pour les utiliser dans tes requêtes. Commence par apprendre les bases, comme la différenciation entre clé primaire et SQL FOREIGN KEY, puis passe à la maîtrise de l'art d'implémenter les contraintes FOREIGN KEY dans les tables de ta base de données. Enfin, tu exploreras comment utiliser efficacement SQL FOREIGN KEY dans tes requêtes pour optimiser la récupération des données et maximiser la productivité. Profite de la puissance de SQL FOREIGN KEY et améliore tes compétences en matière de gestion de bases de données.
SQL est l'abréviation de Structured Query Language, un langage normalisé utilisé pour gérer les systèmes de bases de données relationnelles. Une partie essentielle de la conception et de la construction d'une base de données relationnelle consiste à spécifier des contraintes pour assurer l'intégrité des données. L'une de ces contraintes est la clé étrangère.
Une CLÉ DE FORCE est une colonne (ou un ensemble de colonnes) dans une table qui est utilisée pour établir un lien entre deux tables ou plus dans une base de données relationnelle. Ces clés aident à maintenir la cohérence et l'intégrité des données en appliquant l'intégrité référentielle entre les tables.
Lorsqu'une contrainte de clé étrangère est créée, elle garantit que les valeurs saisies dans la table de référence doivent exister dans la table référencée. En termes plus simples, elle empêche l'insertion de données non valides dans la (les) colonne(s) FOREIGN KEY d'une table qui n'a pas de valeur correspondante dans la colonne de clé primaire de la table référencée.
L'intégrité référentielle est un concept selon lequel les relations entre les tables d'une base de données doivent toujours rester cohérentes. En d'autres termes, lors de l'utilisation de clés étrangères, toute modification des données dans les tables ne doit pas entraîner d'inexactitudes ou d'incohérences dans les données.
Il existe quatre types d'actions qui peuvent être spécifiées avec les contraintes de CLÉS FOREIGNES lorsque les données sont modifiées :
PAS D'ACTION : Il s'agit de l'action par défaut. Elle empêche la modification si elle risque de violer l'intégrité référentielle.
CASCADE : Si la référence de la clé primaire est supprimée ou mise à jour, CASCADE supprimera ou mettra à jour automatiquement les lignes de la table de référence.
SET NULL : Si la clé primaire de référence est supprimée ou mise à jour, SET NULL définit la valeur de la clé étrangère à NULL dans la table de référence.
SET DEFAULT : Si la référence de la clé primaire est supprimée ou mise à jour, SET DEFAULT définira la valeur de la clé étrangère à sa valeur par défaut dans la table de référence.
Clé primaire et clé étrangère SQL
Dans les bases de données relationnelles, les concepts de clé primaire et de clé étrangère jouent un rôle crucial dans la définition de la structure et des relations entre les tables. Comprendre la différence entre les deux te permettra de concevoir et de gérer efficacement ta base de données.
Clé primaire
CLÉ ÉTRANGÈRE
Identifiant unique pour chaque ligne d'une table.
Colonne(s) d'un tableau utilisée(s) pour établir un lien entre deux ou plusieurs tableaux.
Chaque table ne peut avoir qu'une seule clé primaire.
Une table peut avoir plusieurs clés étrangères, chacune faisant référence à une table différente.
Garantit l'intégrité des données au sein d'une seule table.
Garantit l'intégrité référentielle entre les tables apparentées.
Ne peut pas contenir de valeurs NULL.
Peut contenir des valeurs NULL à moins que des contraintes supplémentaires ne soient spécifiées.
En résumé, une clé primaire est un identifiant unique pour les lignes d'une table, tandis qu'une clé étrangère est utilisée pour référencer des valeurs dans une autre table, en maintenant la cohérence et l'intégrité des données entre des tables liées. Les contraintes de clé primaire et de clé étrangère sont des outils essentiels pour assurer l'organisation cohérente de ta base de données lorsque tu effectues des opérations de requête, des mises à jour et des modifications.
Implémentation de SQL FOREIGN KEY dans les bases de données et les tables
L'ajout d'une FOREIGN KEY aux tables d'une base de données est une étape essentielle lors de la création et de la maintenance d'une base de données relationnelle. L'établissement de ces relations entre les tables garantit l'intégrité référentielle et empêche la saisie de données non valides dans ta base de données. Il existe deux méthodes principales pour ajouter une FOREIGN KEY à tes tables : pendant la création de la table ou après la création de la table.
Ajout d'une clé étrangère lors de la création d'une table :
Si tu crées une nouvelle table et que tu souhaites ajouter immédiatement une clé étrangère, tu peux utiliser l'instruction CREATE TABLE et spécifier la contrainte de clé étrangère ainsi que toutes les autres colonnes nécessaires. Voici un exemple :
Dans l'exemple ci-dessus, la colonne 'customer_id' de la table 'orders' fait référence à la colonne 'customer_id' de la table 'customers', renforçant ainsi l'intégrité référentielle. Cela signifie que toute valeur 'customer_id' saisie dans la table 'orders' doit exister dans la table 'customers'.
Ajout d'une clé étrangère après la création d'une table :
Si tu as une table existante et que tu veux ajouter une clé étrangère, tu peux utiliser l'instruction ALTER TABLE combinée à la clause ADD CONSTRAINT. Voici un exemple :
Dans cet exemple, la contrainte FOREIGN KEY nommée 'fk_customer_id' est ajoutée à la table 'orders'. La colonne 'customer_id' de la table 'orders' fait référence à la colonne 'customer_id' de la table 'customers', assurant ainsi l'intégrité référentielle entre les tables.
Clé étrangère SQL facultative
Lors de la création de contraintes FOREIGN KEY, tu as la possibilité de spécifier des actions supplémentaires à effectuer lorsque des données sont modifiées dans les tables référencées. Ces actions facultatives sont parfois nécessaires, en fonction de la conception et des besoins de ta base de données. Dans cette section, nous aborderons les actions optionnelles de la clé étrangère suivantes :
SUR SUPPRESSION
SUR MISE À JOUR
Hybride ON DELETE et ON UPDATE
Rappelle-toi les quatre types d'actions que tu peux spécifier lors de la création de contraintes FOREIGN KEY à partir des actions référentielles dont nous avons parlé précédemment : NO ACTION, CASCADE, SET NULL et SET DEFAULT.
Utilisation de ON DELETE :
Cela te permet de définir l'action référentielle qui se produira lorsqu'une opération DELETE est effectuée sur les lignes de la table référencée. Voici un exemple :
L'exemple montre l'utilisation de l'action ON DELETE CASCADE. Cela signifie que si une ligne du tableau 'customers' est supprimée, toutes les lignes correspondantes du tableau 'orders' avec les valeurs 'customer_id' affectées seront automatiquement supprimées pour maintenir l'intégrité référentielle.
Utilisation de ON UPDATE :
Cela te permet de définir l'action référentielle qui se produira lorsqu'une opération UPDATE est effectuée sur les lignes de la table référencée. Voici un exemple :
L'exemple montre l'utilisation de l'action ON UPDATE CASCADE. Si la valeur de la colonne 'customer_id' d'une ligne du tableau 'customers' est modifiée, toutes les lignes correspondantes du tableau 'orders' seront mises à jour avec la nouvelle valeur afin de préserver l'intégrité référentielle.
Hybride ON DELETE et ON UPDATE :
Tu peux combiner les actions ON DELETE et ON UPDATE pour gérer les deux situations simultanément. Voici un exemple :
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE SET NULL ON UPDATE CASCADE ) ;
Dans cet exemple, si une ligne de la table "clients" est supprimée, les lignes correspondantes de la table "commandes" verront leur "customer_id" défini à NULL. Parallèlement, si une valeur 'customer_id' est mise à jour dans la table 'customers', les lignes correspondantes de la table 'orders' seront mises à jour avec la nouvelle valeur, ce qui permet de préserver l'intégrité référentielle.
SQL ajoute plusieurs clés étrangères de manière efficace
Lors de la création de tables avec plusieurs clés étrangères, il est essentiel de définir efficacement les contraintes pour éviter les complications et réduire la charge de travail lors des mises à jour ou des modifications ultérieures. Il existe deux façons principales d'ajouter des contraintes de clés étrangères multiples à ta table :
Ajout de plusieurs CLÉS FOREIGNES lors de la création de la table :
Tu peux définir plusieurs contraintes FOREIGN KEY lors de la création d'une table en incluant les contraintes dans l'instruction CREATE TABLE. Voici un exemple :
Dans l'exemple ci-dessus, nous avons ajouté deux contraintes FOREIGN KEY à la table 'orders' : 'customer_id' fait référence à la colonne 'customer_id' de la table 'customers', et 'product_id' fait référence à la colonne 'product_id' de la table 'products'.
Ajout de plusieurs clés étrangères après la création d'une table :
Si tu as une table existante et que tu veux ajouter plusieurs contraintes FOREIGN KEY, tu peux utiliser l'instruction ALTER TABLE en combinaison avec plusieurs clauses ADD CONSTRAINT. Voici un exemple :
Comme le montre l'exemple, nous avons ajouté deux contraintes FOREIGN KEY à la table "orders" à l'aide de l'instruction ALTER TABLE. Les contraintes nommées 'fk_customer_id' et 'fk_product_id' font respectivement référence à la colonne 'customer_id' de la table 'customers' et à la colonne 'product_id' de la table 'products'.
L'ajout efficace de plusieurs contraintes FOREIGN KEY permet de maintenir l'intégrité référentielle et d'optimiser les opérations de la base de données pour de meilleures performances. En suivant les principes exposés dans cette section, tu peux créer des bases de données relationnelles robustes et évolutives pour répondre à tes besoins en matière de gestion des données.
Utilisation de SQL FOREIGN KEY dans les requêtes
Les clés étrangères SQL jouent un rôle crucial dans les opérations de requête, car elles permettent d'établir des relations entre les tables et d'extraire des données de manière efficace. Dans cette section, nous allons explorer les différentes façons dont les clés étrangères peuvent être utilisées dans les requêtes SQL, y compris la récupération de données et la combinaison avec d'autres commandes SQL.
Requête SQL utilisant une clé étrangère pour récupérer des données
Lorsque tu as besoin d'extraire des données de plusieurs tables liées, les clés étrangères te permettent d'effectuer des opérations JOIN pour combiner les résultats en un seul ensemble de résultats de manière transparente. Le type d'opération JOIN le plus courant est INNER JOIN, mais il en existe d'autres, comme LEFT JOIN, RIGHT JOIN et FULL OUTER JOIN.
JOIN INNER :
INNER JOIN renvoie des lignes des deux tables lorsqu'il y a une correspondance entre les valeurs de la ou des colonnes FOREIGN KEY d'une table et la clé primaire ou la ou les colonnes uniques d'une autre table. Illustrons ceci par un exemple :
SELECT customers.customer_name, orders.order_date FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id ;
Dans l'exemple ci-dessus, nous récupérons 'customer_name' dans la table 'customers' et 'order_date' dans la table 'orders'. La jonction interne est effectuée à l'aide de la clé FOREIGN KEY "customer_id" de la table "orders" qui fait référence à la clé primaire "customer_id" de la table "customers". Seules les lignes dont les valeurs 'customer_id' correspondent dans les deux tables sont renvoyées dans le jeu de résultats.
JOINTE DE GAUCHE :
LEFT JOIN (ou LEFT OUTER JOIN) renvoie toutes les lignes de la table de gauche (la table qui apparaît en premier dans la requête) et les lignes correspondantes de la table de droite (la table qui apparaît plus tard dans la requête). Si aucune correspondance n'est trouvée, des valeurs NULL sont renvoyées pour les colonnes de la table de droite. Voici un exemple :
SELECT customers.customer_name, orders.order_date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id ;
Dans ce cas, toutes les lignes du tableau "clients" sont affichées, et chaque fois qu'une correspondance est trouvée dans le tableau "commandes" sur la base du "customer_id", la colonne "order_date" est également affichée. S'il n'y a pas de valeur 'order_date' correspondante, NULL est affiché pour cette ligne.
RIGHT JOIN et FULL OUTER JOIN :
Alors que le RIGHT JOIN (ou RIGHT OUTER JOIN) renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche, le FULL OUTER JOIN renvoie toutes les lignes lorsqu'il y a une correspondance dans la table de gauche ou de droite. Dans les deux cas, des valeurs NULL sont affichées pour les colonnes des lignes non appariées.
Toutefois, il convient de noter que certaines bases de données relationnelles, telles que MySQL, ne prennent pas en charge RIGHT JOIN et FULL OUTER JOIN. Dans ce cas, tu peux utiliser LEFT JOIN et d'autres commandes SQL pour obtenir des résultats similaires.
Combinaison de SQL FOREIGN KEY avec d'autres commandes SQL
Les clés étrangères peuvent être utilisées en combinaison avec d'autres commandes SQL pour effectuer efficacement diverses opérations sur ta base de données. Ci-dessous, nous allons explorer quelques commandes SQL clés qui peuvent être utilisées en conjonction avec les clés étrangères :
Clause WHERE :
Tu peux utiliser la clause WHERE avec les CLÉS FOREIGN pour filtrer les résultats en fonction de conditions spécifiques. Voici un exemple :
SELECT customers.customer_name, orders.order_date FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id WHERE orders.order_date > '2021-01-01' ;
Dans cet exemple, nous appliquons la clause WHERE pour filtrer les résultats afin d'afficher uniquement les commandes passées après '2021-01-01'.
Clause GROUP BY :
La clause GROUP BY peut être utilisée avec les CLÉS FOREIGN pour créer des résultats agrégés et les regrouper sur la base d'attributs partagés entre les tables. Par exemple :
SELECT customers.customer_name, COUNT(orders.order_id) AS total_orders FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id GROUP BY customers.customer_id ;
Cette requête permet d'obtenir le nombre total de commandes pour chaque client en regroupant l'ensemble des résultats en fonction de l'attribut 'customer_id'.
Clause ORDER BY :
Tu peux utiliser la clause ORDER BY avec des CLÉS FOREIGNES pour trier les résultats de la requête en fonction de colonnes spécifiques provenant de tables apparentées. Voyons un exemple :
SELECT customers.customer_name, orders.order_date FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id ORDER BY orders.order_date DESC ;
Dans cet exemple, les résultats de la requête sont triés par ordre décroissant en fonction de la colonne 'order_date' du tableau 'orders'.
Lorsque tu travailles avec des requêtes complexes et plusieurs tables liées, la combinaison des clés étrangères SQL avec diverses commandes SQL te permet d'optimiser la récupération et la manipulation des données tout en maintenant l'intégrité et la cohérence des données au sein de ta base de données relationnelle.
CLÉ ÉTRANGÈRE SQL - Principaux points à retenir
CLÉ ÉTRANGÈRESQL: Une colonne ou un ensemble de colonnes dans une table utilisée pour établir un lien entre deux ou plusieurs tables dans une base de données relationnelle afin d'appliquer l'intégrité référentielle.
Clé primaire et clé étrangère SQL : Les clés primaires identifient de façon unique les lignes d'une seule table, tandis que les clés étrangères font référence à des valeurs dans d'autres tables, ce qui permet de maintenir la cohérence et l'intégrité des données entre les tables liées.
SQL Add Foreign Key (Ajouter une clé étrangère) : Les contraintes FOREIGN KEY peuvent être ajoutées lors de la création d'une table à l'aide des instructions CREATE TABLE ou après la création de la table à l'aide des instructions ALTER TABLE avec les clauses ADD CONSTRAINT.
SQL declé étrangère optionnelle: Les actions ON DELETE et ON UPDATE peuvent être spécifiées lors de la création de clés étrangères, ce qui permet d'effectuer des actions supplémentaires telles que CASCADE, SET NULL ou SET DEFAULT lors de la modification des données.
Requête SQL utilisant une clé étrangère: Les clés étrangères peuvent être utilisées dans les requêtes SQL pour effectuer des opérations de jointure, récupérer des données de manière efficace et combiner les résultats de plusieurs tables liées.
Apprends plus vite avec les 15 fiches sur Clé étrangère SQL
Inscris-toi gratuitement pour accéder à toutes nos fiches.
Questions fréquemment posées en Clé étrangère SQL
Qu'est-ce qu'une clé étrangère en SQL?
Une clé étrangère en SQL est un champ ou un ensemble de champs dans une table qui établit un lien entre les données de deux tables, assurant ainsi l'intégrité référentielle.
Pourquoi utilise-t-on des clés étrangères?
Les clés étrangères sont utilisées pour maintenir l'intégrité référentielle en garantissant que les relations entre les tables restent cohérentes et correctes.
Comment définir une clé étrangère en SQL?
Définir une clé étrangère en SQL implique d'utiliser la commande FOREIGN KEY lors de la création ou de la modification d'une table pour établir une relation entre des colonnes.
Quelle est la différence entre une clé primaire et une clé étrangère?
Une clé primaire identifie de manière unique chaque enregistrement dans une table, tandis qu'une clé étrangère est utilisée pour lier deux tables ensemble.
How we ensure our content is accurate and trustworthy?
At StudySmarter, we have created a learning platform that serves millions of students. Meet
the people who work hard to deliver fact based content as well as making sure it is verified.
Content Creation Process:
Lily Hulatt
Digital Content Specialist
Lily Hulatt is a Digital Content Specialist with over three years of experience in content strategy and curriculum design. She gained her PhD in English Literature from Durham University in 2022, taught in Durham University’s English Studies Department, and has contributed to a number of publications. Lily specialises in English Literature, English Language, History, and Philosophy.
Gabriel Freitas is an AI Engineer with a solid experience in software development, machine learning algorithms, and generative AI, including large language models’ (LLMs) applications. Graduated in Electrical Engineering at the University of São Paulo, he is currently pursuing an MSc in Computer Engineering at the University of Campinas, specializing in machine learning topics. Gabriel has a strong background in software engineering and has worked on projects involving computer vision, embedded AI, and LLM applications.