Maison  >  Article  >  base de données  >  Opération multi-table de base de données MySQL

Opération multi-table de base de données MySQL

jacklove
jackloveoriginal
2018-06-11 23:15:243216parcourir

1. Clé étrangère

1. Qu'est-ce qu'une clé étrangère : Une clé étrangère fait référence au référencement d'une ou plusieurs colonnes dans une autre table. La colonne référencée doit avoir une contrainte de clé primaire. ou Contraintes d'unicité. Les clés étrangères sont utilisées pour établir et renforcer la connexion entre les données de deux tables.


Le gid dans la table Student est l'identifiant de classe de l'élève, qui est l'identifiant de clé primaire dans la note. tableau. Ensuite, gid peut être utilisé comme clé étrangère pour la table student. La table référencée, c'est-à-dire la table grade, est la table maître ; la table qui fait référence à la clé étrangère, c'est-à-dire la table étudiant, est la table esclave, et les deux tables sont dans une relation maître-esclave. La table des étudiants peut utiliser gid pour relier les informations du tableau des notes, établissant ainsi une connexion entre les données des deux tableaux.

Après avoir introduit la clé étrangère, la colonne de clé étrangère ne peut insérer que la valeur qui existe dans la colonne de référence, et la valeur référencée de la colonne de référence ne peut pas être supprimée, ce qui garantit l'intégrité référentielle des données.

2. Ajouter des contraintes de clé étrangère à la table

Si vous souhaitez véritablement connecter les données de deux tables, vous devez ajouter des contraintes de clé étrangère à la table. Le format de syntaxe pour ajouter des contraintes de clé étrangère à une table est le suivant : modifier le nom de la table ajouter une contrainte FK_ID La clé étrangère (nom du champ de clé étrangère) fait référence au nom de la table de clé étrangère (nom du champ de clé primaire)

Lors de l'ajout de contraintes de clé étrangère à une table, certaines choses doivent être notées, comme suit :

(1) La table à établir une clé étrangère doit être de type InnoDB, pas de table temporaire. Parce que seules les tables de type InnoDB dans MySQL prennent en charge les clés étrangères ;

(2) Lors de la définition des noms de clés étrangères, les guillemets ne peuvent pas être ajoutés, comme la contrainte « FK_ID » ou la contrainte « FK_ID », qui sont toutes deux fausses.

Lorsque les données de la table principale sont supprimées, les données de la table esclave doivent également être supprimées, sinon il y aura beaucoup de données inutiles sans signification. Mysql peut ajouter des clauses delete ou on update lors de la création de clés étrangères pour indiquer à la base de données comment éviter la génération de données inutiles. Le format de syntaxe spécifique est le suivant :

Modifier le nom de la table addconstraint La clé étrangère FK_ID (nom du champ de clé étrangère) fait référence au nom de la table externe (nom du champ de clé primaire

[on delete{cascade) ; | set null | no action | restrict}]

[on update{cascade | set null | no action restrict}]

La description spécifique de chaque paramètre dans l'instruction est celle indiquée dans le tableau suivant :

参数名称

功能描述

Cascade

删除包含与已删除键值有参照关系的所有记录

Set null

修改包含与已删除键值有参照关系的所有记录,使用null值替换(不能用于已标记为not null的字段)

No action

不进行任何操作

Restrict

拒绝主表删除或修改外键关联列。(在不定义on delete和on update子句时,这是默认设置,也是最安全的设置)

Nom du paramètre
Description de la fonction
Cascade Supprimer les clés contenant et supprimées Tous les enregistrements avec des relations de référence
Définir null Modifiez tous les enregistrements contenant des références aux valeurs clés supprimées et remplacez-les par des valeurs nulles (ne peut pas être utilisé pour les champs marqués comme non nuls)
Aucune action Aucune action
Restreindre Rejeter la table principale pour supprimer ou modifier la colonne associée à la clé étrangère. (Il s'agit du paramètre par défaut et du paramètre le plus sûr lorsque les clauses on delete et on update ne sont pas définies)

3. Supprimer les contraintes de clé étrangère : modifier le nom de la table, supprimer la clé étrangère nom de la clé étrangère ;


2. Fonctionnement de la table d'association

1. Relation d'association

(1) Plusieurs-à-un : Dans le

plusieurs-à- une relation de table, les clés étrangères doivent être construites du côté avec plus de et de , sinon cela entraînera une redondance des données.

(2) Plusieurs-à-plusieurs : comme l'horaire des étudiants et l'horaire des cours. Habituellement, afin de réaliser cette relation, une table intermédiaire (appelée table de jointure) doit être définie. Cette table aura deux clés étrangères, référençant respectivement le planning des cours et la table des étudiants. Dans une relation plusieurs-à-plusieurs, il faut noter que les deux clés étrangères reliant la table sont répétables, mais la relation entre les deux clés étrangères ne peut pas être répétée, donc les deux clés étrangères sont les mêmes que celles de la table. Clé primaire syndicale.

(3) Un-à-un : Tout d'abord, il faut distinguer la relation maître-esclave. La table esclave nécessite l'existence de la table maître pour avoir du sens. table, la carte d'identité est la table esclave et la clé étrangère est établie dans la table esclave. Il convient de noter que cette relation n'est pas courante dans les bases de données, car les informations ainsi stockées sont généralement placées dans un tableau. Dans le développement réel, la relation d'association un-à-un peut être appliquée dans les aspects suivants.

Ø Diviser un tableau avec plusieurs colonnes;

Ø Isoler une partie d'un tableau pour des raisons de sécurité

Ø Enregistrer les données temporaires et peut être supprimé sans effort Ce tableau supprime le données.

2. Ajout de données

Une fois l'instruction ci-dessus exécutée avec succès, les données entre les deux tables seront liés au sexe. Si vous souhaitez interroger les étudiants de la classe de logiciels 1, vous devez d'abord interroger l'ID de la classe de logiciels 1, puis interroger les étudiants de la table des étudiants en fonction de cet ID.


3. Suppression de données : En raison de la relation entre le tableau des notes et le tableau des étudiants, la valeur référencée de la colonne de référence ne peut pas être supprimée. Par conséquent, lorsque vous supprimez une classe de logiciels, veillez d'abord à supprimer tous les étudiants de la classe, puis à supprimer la classe.

(1) Supprimez tous les élèves de la classe de logiciels 1

(2) Dans le tableau des notes, supprimez la classe de logiciels 1

Si vous supprimez directement le logiciel Classe 2, une erreur se produira :

Il est à noter que dans des situations réelles, vous souhaitez supprimer ' Logiciel Classe 1' Il n'est pas nécessaire de supprimer 'Étudiants de Logiciel Classe 1'. Vous pouvez remplacer gid=1 dans la table étudiant par gid=null Tant que la colonne de la table principale n'est pas référencée par la table esclave. il peut être supprimé. Cependant, lors de la création de la table, le champ gid a une contrainte non nulle, donc dans cet exemple seuls les étudiants peuvent être supprimés.

3. Requête de connexion : lorsqu'il existe des champs ayant la même signification dans deux tables ou plus, vous pouvez utiliser ces champs pour effectuer des requêtes de connexion sur différentes tables.

1. Connexion croisée : le résultat renvoyé est le produit cartésien de toutes les lignes de données des deux tables connectées, c'est-à-dire que le nombre de lignes de données de la première table qui remplissent les conditions de requête est renvoyé multiplié par le second Le nombre de lignes de données dans la table qui répondent aux conditions de requête. Le format de syntaxe est le suivant :

Sélectionnez * dans le tableau 1, jointure croisée du tableau 2






De ci-dessus, vous pouvez voir que le résultat de la connexion croisée est la combinaison de toutes les données des deux tableaux. Il convient de noter que dans la recherche et le développement réels, cette exigence est rare et n'est généralement pas utilisée. des conditions spécifiques sont utilisées pour effectuer une enquête ciblée sur les données.

2. Connexion interne : également appelée connexion simple ou connexion naturelle. Utilisez des opérateurs de comparaison pour comparer les données des deux tables, répertoriez les lignes de données qui correspondent aux conditions de jointure et combinez-les dans de nouveaux enregistrements. Le format de syntaxe est le suivant :

Sélectionnez le champ de requête de la table 1 [interne] rejoignez la table 2 sur la table 1. champ de relation = table 2. champ de relation

peut également être implémenté en utilisant les instructions conditionnelles Where Même fonctionnalité.

Bien que les résultats de requête de ces deux méthodes soient les mêmes, la jointure interne est une instruction de jointure interne, et où est une instruction de jugement conditionnel Vous pouvez ajouter d'autres conditions directement après. où. L'instruction de jointure interne ne peut pas.

#Si dans une requête de jointure, les deux tables impliquées sont la même table, ce type de requête est appelé requête d'auto-jointure. L'auto-jointure est un type particulier de jointure. Cela signifie que les tables connectées les unes aux autres sont physiquement la même table, mais logiquement divisée en deux tables. Par exemple, si vous souhaitez demander quels employés font partie du département de Wang Hong, vous pouvez le faire. utilisez la requête d'auto-jointure.

3. Jointure externe : Le tableau à gauche du mot-clé est appelé les coordonnées, et le mot à droite est appelé le tableau de droite

Sélectionnez le champ à interroger dans le tableau 1 gauche|droite [externe] jointure Tableau 2

Sur le tableau 1. Champ relationnel = Tableau 2. Champ relationnel où condition

(1) jointure gauche ( jointure gauche) : renvoie la table de gauche Tous les enregistrements et les enregistrements de la table de droite qui remplissent les conditions de jointure.

Si un enregistrement dans le tableau de gauche n'existe pas dans le tableau de droite, il sera affiché comme vide dans le tableau de droite.

(2) Jointure à droite : renvoie tous les enregistrements de la table de droite et les enregistrements de la table de gauche qui remplissent les conditions de jointure.

4. Requête de jointure conditionnelle composée

4. Sous-requête : fait référence à une instruction de requête imbriquée dans une autre requête A. dans une instruction de requête. Il peut être imbriqué dans une instruction select, select...into, insert...into et d'autres instructions. Lors de l'exécution d'une instruction de requête, les instructions de la sous-requête seront d'abord exécutées, puis les résultats renvoyés seront utilisés comme conditions de filtre pour la requête externe. Dans la sous-requête, vous pouvez généralement utiliser les opérateurs in, exist, any et all.

( 1) Sous-requête avec le mot-clé in : l'instruction de requête interne ne renvoie qu'une seule colonne de données et la valeur de cette colonne de données sera utilisée pour l'opération de comparaison par l'instruction de requête externe.

Par exemple : Interrogez le service où existent des employés âgés de 20 ans.

(2) Sous-requête avec le mot-clé exist : Le paramètre après le mot-clé exist peut être n'importe quelle sous-requête. La fonction de cette sous-requête est équivalente à un test. sera généré et seul True ou False sera renvoyé Lorsque la valeur de retour est True, la requête externe sera exécutée.

Dans l'exemple suivant, le résultat renvoyé par la sous-requête est True, donc l'instruction de requête externe sera exécutée, c'est-à-dire que toutes les informations du service sont interrogées. Il convient de noter que le mot-clé exist est plus efficace que le mot-clé in, donc dans le développement réel, en particulier lorsque la quantité de données est importante, il est recommandé d'utiliser le mot-clé exist.

(3) Sous-requête avec n'importe quel mot-clé : any signifie que l'une des conditions est remplie, ce qui permet la création d'une expression pour comparer la liste de valeurs de retour de la sous-requête , Tant qu'une condition de comparaison dans la sous-requête interne est remplie, un résultat est renvoyé comme condition de requête externe.

(4) Sous-requête avec all mot-clé : elle est similaire à n'importe quelle autre, sauf que les résultats renvoyés par la sous-requête avec all mot-clé doivent satisfaire toutes les requêtes internes en même temps. .

(5) Sous-requête avec opérateur de comparaison

Cet article explique le fonctionnement multi-table de la base de données MySQL, et plus Pour plus de contenu connexe, veuillez prêter attention au site Web chinois php.

Recommandations associées :

Sélecteur $ - comment encapsuler le DOM dans des objets jquery

Componentisation js native Développer un graphique carrousel simple exemple de code

barre de navigation animée CSS3 3D

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn