Maison >base de données >tutoriel mysql >Comment créer et interroger des clés étrangères dans MySQL
1. Qu'est-ce qu'une clé étrangère ?
Une clé étrangère est une ou plusieurs colonnes dans une table. Elle est utilisée pour spécifier que la valeur de cette ou ces colonnes doit être cohérente avec les données d'une autre table ou. dans une autre table. La clé primaire correspond. Cette table correspondante est appelée table référencée. Une clé étrangère est un mécanisme dans une base de données relationnelle utilisé pour joindre deux ou plusieurs tables.
Le but des clés étrangères est d'assurer l'intégrité et la cohérence des données. Lorsque nous ajoutons une ligne de données à une table, si les données doivent correspondre à certaines données d'une autre table et si la relation de correspondance est établie via une clé étrangère, MySQL vérifiera la clé étrangère dans les données nouvellement ajoutées. voir si les données existent dans la table référencée. Si elles n'existent pas, il refusera d'insérer les données dans la table.
2. Comment créer des clés étrangères
Il existe de nombreuses façons de créer des clés étrangères dans MySQL. Voici deux manières courantes.
1. Utilisez l'instruction ALTER TABLE
Le format de syntaxe pour ajouter des clés étrangères via l'instruction ALTER TABLE est le suivant :
Nom de la table ALTER TABLE ADD CONSTRAINT nom de la clé étrangère FOREIGN KEY (nom de la colonne) REFERENCES nom de la table (nom de la colonne ) d'une autre table ;
Parmi eux, le nom de la clé étrangère est un nom donné à la clé étrangère. Ce nom doit être unique. Le nom de la colonne fait référence au nom de la colonne de la table actuelle. table sont respectivement le nom et le nom de la colonne de la table référencée.
Par exemple, nous avons une table d'employés (employés) et une table de département (départements). Elles sont liées via une clé étrangère. Nous pouvons utiliser l'instruction SQL suivante pour créer cette clé étrangère.
ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);
Cette instruction signifie ajouter une clé étrangère nommée dept_fk à la table des employés (dept_fk pointe vers la colonne dept_id de la table des employés, qui fait référence à la colonne dept_id de la table des services).
2. Définir des clés étrangères lors de la création d'une table
Définir des clés étrangères lors de la création d'une table est également une méthode courante. Le format de syntaxe est le suivant :
CREATE TABLE 表名 ( 列名 数据类型, 外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名) );
Par exemple, pour créer une table employe (employés) et une table département (départements), et utiliser la colonne dept_id comme clé étrangère de la table employés pour lier la colonne dept_id des départements table, vous pouvez utiliser l'instruction SQL suivante.
CREATE TABLE employees ( id INT NOT NULL, name VARCHAR(50) NOT NULL, dept_id INT, PRIMARY KEY (id), FOREIGN KEY (dept_id) REFERENCES departments (dept_id) )
3. Comment interroger les clés étrangères
Une fois les clés étrangères établies dans MySQL, vous pouvez utiliser les instructions de requête MySQL pour les interroger. Le format syntaxique de l'interrogation des clés étrangères est le suivant :
SELECT * FROM 表名 WHERE 列名 IS NULL;
Cette instruction renvoie des données avec des noms de colonnes vides dans la table. Si cette colonne est définie comme une clé étrangère, alors le résultat de la requête est qu'il n'y a aucune ligne dans la table. correspondre aux données de la clé étrangère. Les résultats de cette requête sont très utiles pour nous aider à déterminer quels enregistrements n'ont pas été correctement mis en correspondance et doivent être résolus manuellement.
Par exemple, nous avons une table départements, et sa colonne dept_id est définie comme une clé étrangère. Si nous voulons interroger des enregistrements qui ne correspondent pas à la table départements, nous pouvons utiliser l'instruction SQL suivante :
SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);
La signification. de cette instruction Oui, interrogez les données dept_id dans la table départements qui ne sont pas incluses dans la table employés.
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!