Maison > base de données > tutoriel mysql > Compréhension approfondie de la dérive avancée MySQL (4)

Compréhension approfondie de la dérive avancée MySQL (4)

黄舟
Libérer: 2017-03-08 13:55:52
original
1153 Les gens l'ont consulté

Rejoindre

Jointure croisée

Le type de jointure le plus simple est une jointure croisée, qui consiste à multiplier des tables pour créer un produit Tous les contenus .
Exemple :
sélectionnez * parmi étudiant,personne ;//Le résultat est une combinaison des deux tableaux
Toutes les colonnes des deux tableaux sont combinées pour produire un ensemble de résultats contenant toutes les combinaisons possibles. Ce type est appelé jointure croisée et le nombre de lignes dans la table résultante après la jointure est le même multiplié par le nombre de lignes dans chaque table utilisée pour la jointure.
La connexion croisée ci-dessus aura un grand impact sur les performances du serveur de base de données, c'est donc un bon choix d'utiliser la clause Where dans la connexion pour filtrer certains enregistrements.

Jointure interne/jointure externe

La jointure interne est le type de jointure le plus courant et le plus uniforme, car elle nécessite une correspondance de chaque table qui constitue chaque partie de la jointure, des lignes sans correspondance sera exclu du jeu de résultats final
L'exemple le plus courant de jointure interne est une jointure d'égalité, c'est-à-dire qu'un champ de la table jointe est le même que celui de chaque table. Dans ce cas, le jeu de résultats final contient uniquement les lignes des tables jointes qui correspondent aux champs spécifiés.

Les jointures externes sont asymétriques, toutes les lignes d'un côté de la jointure sont incluses dans l'enregistrement final, qu'elles correspondent ou non aux lignes de l'autre côté de la jointure
Selon le côté de la jointure conservé, sql Définit la jointure externe gauche et la jointure externe droite. Dans une jointure externe gauche, tous les enregistrements de la table située à gauche de la jointure qui correspondent à la clause Where apparaîtront dans le jeu de résultats final. Dans une jointure externe droite, tous les enregistrements de la table située à droite de la jointure qui correspondent à la clause Where apparaîtront dans le jeu de résultats final.

Jointure externe gauche : expliquée comme "sélectionnez toutes les lignes de la partie gauche de la connexion, et pour chaque ligne sélectionnée, soit une valeur correspondante est affichée dans la partie droite, soit une ligne nulle est affichée." Ce type de jointure est appelé jointure gauche ou jointure externe gauche. La jointure droite ou la jointure externe droite est tout le contraire.

Auto-jointure

Ce type de jointure connecte une table à elle-même. Il est généralement utilisé pour supprimer les enregistrements de la table qui contiennent des jointures internes.

En plus des connexions, MySQL 4.0 et versions ultérieures prennent également en charge l'opérateur union, qui est utilisé pour joindre la sortie de plusieurs requêtes de sélection en un seul jeu de résultats. Dans la plupart des cas, cet opérateur est utilisé pour ajouter le jeu de résultats produit par une requête à une table différente, créant ainsi une table unique contenant tous les résultats.

Utilisez l'opérateur union pour combiner autant de requêtes de sélection que possible, mais deux conditions de base doivent être remplies :
Premièrement, le nombre de champs renvoyés par chaque requête de sélection doit être le même.
Deuxièmement, les types de données des champs de chaque requête de sélection doivent correspondre.

L'opérateur union éliminera automatiquement les lignes en double de l'ensemble de résultats combiné !

Sous-requête

requête Where/Having

MySQL peut contenir des sous-requêtes dans la clause Where ou la clause Have. Les sous-requêtes entre parenthèses ont une priorité plus élevée que les opérateurs de comparaison et logiques, l'opérateur in ou l'opérateur exist.
Vous pouvez également utiliser une sous-requête avant un opérateur de comparaison dans une clause have pour filtrer les groupes créés par la requête parent.

requête in/exists/from

Les opérateurs de comparaison ne s'appliquent que si la colonne de résultat renvoyée par la sous-requête contient une valeur. Si le jeu de résultats renvoyé par une sous-requête est une liste de valeurs, l'opérateur de comparaison doit être remplacé par l'opérateur in. L'opérateur

in peut détecter si une valeur spécifique existe dans l'ensemble de résultats. Si la détection réussit, la requête externe sera exécutée.
L'opérateur exist peut être utilisé pour demander si une sous-requête a produit des résultats, ce qui permet à la requête externe d'être exécutée uniquement lorsque le test exist renvoie vrai.
Vous pouvez également placer la sous-requête dans la clause from d'une sélection. déclaration. Les résultats sont produits sous forme de tableau.

Ainsi, la table de résultats générée par la requête interne est utilisée dans la clause from de la requête externe. Une telle table devient une table d'exportation en SQL.

Il est à noter que lors de l'utilisation des résultats d'une sous-requête de cette manière, la table de résultats générée par la requête interne doit d'abord prendre un autre nom de table, sinon MySQL ne sait pas comment faire référence aux colonnes qu'elle contient .


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal