Maison > Article > base de données > Opération multi-table de base de données MySQL
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 :
|
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 leplusieurs-à- 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.
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!