Maison > Article > base de données > Comment utiliser des clés étrangères dans MySQL pour maintenir l’intégrité des données ?
Comment utiliser des clés étrangères dans MySQL pour maintenir l'intégrité des données ?
Citation :
Dans une base de données, l'intégrité des données est très importante. En utilisant des clés étrangères, nous garantissons que la cohérence et l'intégrité des données sont maintenues entre les tables associées de la base de données. Cet article vous expliquera comment utiliser des clés étrangères pour maintenir l'intégrité des données dans MySQL.
Tout d'abord, nous devons créer deux tables et les associer. Supposons que nous ayons deux tables, l’une est la table « commandes » et l’autre est la table « clients ». Chaque commande doit être associée à un client, et nous utiliserons des clés étrangères pour maintenir cette association.
L'instruction SQL pour créer la table "clients" est la suivante :
CREATE TABLE customers ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(100) );
L'instruction SQL pour créer la table "commandes" est la suivante :
CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, order_date DATE, amount DECIMAL(10,2), customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id) );
Dans la table "commandes" ci-dessus, nous avons ajouté un fichier nommé " customer_id", et utilisé la colonne "id" de la table "customers" dans la contrainte de clé étrangère.
Ensuite, nous insérons quelques données dans le tableau "clients" et le tableau "commandes". Voici l'instruction SQL pour quelques exemples de données :
-- 插入customers表格的数据 -- INSERT INTO customers (name, email) VALUES ('张三', 'zhangsan@example.com'); INSERT INTO customers (name, email) VALUES ('李四', 'lisi@example.com'); INSERT INTO customers (name, email) VALUES ('王五', 'wangwu@example.com'); -- 插入orders表格的数据 -- INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-01', 100.00, 1); INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-02', 200.00, 2); INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-03', 300.00, 3);
Dans l'instruction SQL ci-dessus, nous insérons les données de commande en utilisant la valeur "id" de la table "clients" associée à la clé étrangère.
Maintenant, testons les contraintes et la maintenance des clés étrangères. Nous essayons d'exécuter l'instruction suivante :
-- 尝试在orders表格中插入无效的customer_id值 -- INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-04', 400.00, 4);
En raison de la présence de contraintes de clé étrangère, cette opération d'insertion échouera avec un message d'erreur.
Dans MySQL, les clés étrangères peuvent également être définies avec les options "ON DELETE" et "ON UPDATE" pour spécifier l'action à entreprendre lorsqu'une ligne de la table associée est supprimée ou mise à jour. Voici un exemple :
-- 创建orders表格时定义外键的ON DELETE和ON UPDATE选项 -- CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, order_date DATE, amount DECIMAL(10,2), customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE );
Dans l'exemple ci-dessus, nous définissons les options "ON DELETE CASCADE" et "ON UPDATE CASCADE" de la clé étrangère, ce qui signifie que si une ligne de la table "clients" est supprimée ou mise à jour, toutes les lignes du tableau "commandes" associé seront également supprimées ou mises à jour en conséquence.
Résumé :
En utilisant des clés étrangères, nous pouvons garantir la cohérence et l'intégrité des données entre les tables liées dans la base de données. Dans MySQL, nous pouvons utiliser le mot-clé "FOREIGN KEY" pour créer des clés étrangères et être contraint lors de l'insertion ou de la mise à jour de données. De plus, nous pouvons utiliser les options "ON DELETE" et "ON UPDATE" pour définir l'action à entreprendre lorsque les lignes liées par la clé étrangère sont supprimées ou mises à jour dans la table associée.
Ce qui précède est une introduction sur la façon d'utiliser les clés étrangères dans MySQL pour maintenir l'intégrité des données. J'espère que cela vous sera utile. Merci d'avoir lu!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!