Sauter à un chapitre clé
Explication de SQL FOREIGN KEY
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 :
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ) ;
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 :
ALTER TABLE orders ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ;
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 :
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE ) ;
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 :
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON UPDATE CASCADE ) ;
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 :
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, product_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id), FOREIGN KEY (product_id) REFERENCES products(product_id) ) ;
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 :
ALTER TABLE orders ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(customer_id), ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(product_id) ;
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 avec 15 fiches de Clé étrangère SQL dans l'application gratuite StudySmarter
Tu as déjà un compte ? Connecte-toi
Questions fréquemment posées en Clé étrangère SQL
À propos de StudySmarter
StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.
En savoir plus