Maison  >  Article  >  base de données  >  Explication détaillée de la requête d'union MySQL (la différence entre IN et EXISTS)

Explication détaillée de la requête d'union MySQL (la différence entre IN et EXISTS)

coldplay.xixi
coldplay.xixiavant
2021-04-19 10:29:532056parcourir

Explication détaillée de la requête d'union MySQL (la différence entre IN et EXISTS)

Produit cartésien

Le produit cartésien fait référence au produit cartésien de deux ensembles X et Y en mathématiques Produit cartésien , également connu sous le nom de produit direct, est exprimé par X × Y. Le premier objet est un membre de X et le deuxième objet est un membre de toutes les paires ordonnées possibles de Y [3].
Supposons que l'ensemble A={a, b} et l'ensemble B={0, 1, 2}, alors le produit cartésien des deux ensembles est {(a, 0), (a, 1), (a, 2 ), (b, 0), (b, 1), (b, 2)}.

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo MySQL

Connexion interne

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

Explication détaillée de la requête dunion MySQL (la différence entre IN et EXISTS)

Jointure externe

La jointure externe est divisée en jointure externe gauche et jointure externe droite. Si une requête conjointe est effectuée, si la table de gauche est entièrement affichée, on dit qu'il s'agit d'une jointure externe gauche ; si la table de droite est entièrement affichée, on dit qu'il s'agit d'une jointure externe droite ;

--左外连接,表1完全显示select 字段名 from 表名1 left join 表名2 on 连接条件;-- 右外连接,表2完全显示select 字段 from 表名1 right join 表名2 on 连接条件;

Explication détaillée de la requête dunion MySQL (la différence entre IN et EXISTS)
Explication détaillée de la requête dunion MySQL (la différence entre IN et EXISTS)

Auto-connexion

Quand il s'agit de comparaisons entre les lignes, vous devez Connecté
Exemple : Afficher toutes les informations de note pour « Computer Principes » avec des notes supérieures à « Java »

-- 先查询“计算机原理”和“Java”课程的idselect id,name from course where name='Java' or name='计算机原理';-- 再查询成绩表中,“计算机原理”成绩比“Java”成绩 好的信息SELECTs1.*FROMscore s1,score s2WHEREs1.student_id = s2.student_idAND s1.score rrree<p><strong>Sous-requête</strong></p><p>La sous-requête fait référence à la sous-requête intégrée dans les instructions Select dans d'autres instructions SQL, elles sont également appelées requêtes imbriquées. <br> Sous-requête à une seule ligne : une sous-requête qui renvoie une ligne d'enregistrements<br> Cas : requête et camarades de classe de "Xiaobai" : </p><pre class="brush:php;toolbar:false">-- 也可以使用join on 语句来进行自连接查询SELECTs1.*FROMscore s1JOIN score s2 ON s1.student_id = s2.student_idAND s1.score <p>Sous-requête à plusieurs lignes : une sous-requête qui renvoie plusieurs lignes d'enregistrements </p><ol>
<li>[NOT] IN mot clé : <br> Exécutez d'abord le SQL de la sous-requête, <strong> mettez le résultat obtenu en mémoire </strong>, puis effectuez la requête externe, et mettez directement le donné Comparez simplement les conditions de restriction avec les résultats de la sous-requête et filtrez-les. (Dépend de la mémoire, adapté aux situations où l'ensemble de résultats d'une sous-requête est relativement petit) </li>
<li>[NOT] EXISTS mot-clé : <br> Exécutez d'abord la requête externe, prenez les enregistrements de chaque requête externe tour à tour, et introduisez-les dans la requête interne <br> Si le jeu de résultats de la requête interne n'est pas vide, conservez les résultats de la requête externe <br> Si le jeu de résultats de la requête interne est vide, supprimez les résultats de la requête externe requête <br><strong>Ne repose pas sur la mémoire</strong>, adaptée aux situations où l'ensemble de résultats de la requête externe est petit et l'ensemble de résultats de la sous-requête est relativement grand</li>
</ol><p><strong>Requête de fusion</strong></p><p>Pour fusionner les résultats d'exécution de plusieurs sélections, vous pouvez utiliser les opérateurs d'ensemble union et union all. Lors de l'utilisation de UNION<br> et UNION ALL, les champs des ensembles de résultats des requêtes précédentes et suivantes doivent être cohérents. <br><strong>union</strong><br> Cet opérateur est utilisé pour obtenir l'union de deux ensembles de résultats. Lorsque cet opérateur est utilisé, les lignes en double dans le jeu de résultats sont automatiquement supprimées. <br> Cas : Interroger les cours avec un ID inférieur à 3, ou le nom est "English" : </p><pre class="brush:php;toolbar:false">select * from student where classes_id=(select classes_id from student wherename='小白');

union all
Cet opérateur permet d'obtenir l'union de deux ensembles de résultats. Lorsque cet opérateur est utilisé, les lignes en double dans le jeu de résultats ne sont pas supprimées.
Cas : Requête de cours avec un ID inférieur à 3 ou avec le nom "Java" :

select * from course where id<blockquote><p><strong>Recommandations d'apprentissage gratuites associées : </strong><a href="https://www.php.cn/course/list/51.html" target="_blank"><strong>base de données mysql </strong></a><strong>(Vidéo)</strong></p></blockquote>

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Comment installer mysql8.0Article suivant:Comment installer mysql8.0