Cet article vous guidera à travers les opérations de requête de jointure et de définition dans MySQL. J'espère qu'il vous sera utile ! Requête de jointure La requête de jointure fait référence à une requête de correspondance entre deux ou plusieurs tables. On l'appelle généralement une opération horizontale, c'est-à-dire que le résultat final contiendra toutes les colonnes de ces tables. Il existe trois types d'opérations de jointure : jointure croisée, jointure interne et jointure externe. [Recommandations associées : Tutoriel vidéo mysql] La jointure croisée s'appelle CROSS JOIN Elle effectue un produit cartésien sur deux tables et renvoie la composition de toutes les colonnes des deux tables, telles que. gauche Il y a n éléments de données dans le tableau, et il y a m éléments de données dans le tableau de droite, alors le résultat final est n*m, mais vous pouvez également le connecter à vous-même, puis le le résultat final est n*n, comme l'instruction suivante. CROSS JOIN,他对两个表执行笛卡儿积,他将返回两个表中所有列的组成,比如左表中有n条数据,右表中有m条数据,那么最终结果就是n*m条,但是也可以自己与自己联结,那么最终结果就是n*n条,比如下面语句。select * from orders as a cross join orders as b; +---------+--------+---------+--------+ | orderId | userId | orderId | userId | +---------+--------+---------+--------+ | 10007 | 2 | 10001 | 1 | | 10006 | 4 | 10001 | 1 | ..... | 10002 | 1 | 10007 | 2 | | 10001 | 1 | 10007 | 2 | +---------+--------+---------+--------+ 49 rows in set (0.01 sec)由于orders表中有7条数据,那么最后将生成49条数据,还有一种写法是下面这样的。mysql> select * from orders as a ,orders as b;他们的结果都相同,只是写法不同,上面的写法是在1989年,美国国家标准学会对SQL进行的规范,称之为ANSI SQL 89标准,而第一种写法是92年规定的。 交叉联结有个用处就是快速生成重复数据,比如下面语句。insert orders select a.orderId,a.userId from orders as a ,orders as b limit 10;下面就是内联结,分为两部,首先产生笛卡儿积,然后在根据后面ON的过滤条件来过滤,他产生两个表中具有相同记录的值。 在ON后面除了等于运算符 (=) 之外,还可以使用其他运算符,例如大于 ( >)、小于 ( ) 和不等于 ( ) 运算符来构成连接条件。 最后一个是OUTER JOIN,可以按照一些过滤条件来匹配表之间的数据,与INNER JOIN不同的是,在通过OUTER JOIN添加的保留表中存在未找到的匹配数据,MySQL支持LEFT OUTER JOIN、RIGHT OUTER JOIN,写的时候可以省略OUTER 。 下面是LEFT JOIN所示图,LEFT JOIN返回左表 (table1) 中的所有记录,以及右表 (table2) 中的匹配记录。 下面是RIGHT JOIN所示图,RIGHT JOIN返回右表 (table2) 中的所有记录,以及左表 (table1) 中的匹配记录。 集合操作 MySQL中有个UNION运算符,用于组合2个或多个SELECT结果集,并删除SELECT语句之间的重复行,使用他时候要遵循以下基本规则: 所有SELECTCREATE TABLE t1 ( id INT PRIMARY KEY ); CREATE TABLE t2 ( id INT PRIMARY KEY ); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (2),(3),(4);Comme il y a 7 éléments de données dans le tableau des commandes, 49 éléments de données seront générés à la fin. Une autre façon de l'écrire est la suivante. SELECT id FROM t1 UNION SELECT id FROM t2;Leurs résultats sont les mêmes, mais la méthode d'écriture est différente. La méthode d'écriture ci-dessus a été normalisée pour SQL par l'American National Standards Institute en 1989, appelée norme ANSI SQL 89, et la première méthode d'écriture a été stipulée en 1992. La jointure croisée est utile pour générer rapidement des données répétées, telles que l'instruction suivante. +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)Ce qui suit est une jointure interne, qui est divisée en deux parties. Tout d'abord, un produit cartésien est généré, puis il est filtré en fonction des conditions de filtrage ON suivantes. Il génère des valeurs avec les mêmes enregistrements dans les deux. tableaux. En plus de l'opérateur égal (=), vous pouvez également utiliser d'autres opérateurs après ON, tels que supérieur à (>), inférieur à () et non Equals ( ) pour former la condition de jointure. Le dernier est OUTER JOIN, qui peut faire correspondre les données entre les tables selon certaines conditions de filtrage. Différent de INNER JOIN, il y a des données correspondantes introuvables dans la table réservée ajoutées via OUTER JOIN. MySQL prend en charge LEFT OUTER JOIN, RIGHT OUTER JOIN, vous pouvez omettre OUTER lors de l'écriture. Ce qui suit est un diagramme de LEFT JOIN. LEFT JOIN renvoie tous les enregistrements de la table de gauche (table1) et les enregistrements correspondants dans la table de droite (table2). Ci-dessous Voici l'image affichée dans RIGHT JOIN. RIGHT JOIN renvoie tous les enregistrements de la table de droite (table2) et les enregistrements correspondants dans la table de gauche (table1). Opération d'ensemble Il existe un opérateur UNION dans MySQL, qui est utilisé pour combiner 2 jeux de résultats SELECT ou plus et supprimer les lignes en double entre les instructions SELECT. Lorsque vous l'utilisez, suivez les règles de base suivantes : Tous Le nombre. et l'ordre des colonnes apparaissant dans l'instruction SELECT doit être le même. 🎜🎜Les colonnes doivent également être du même type de données. 🎜🎜🎜Si vous avez le tableau suivant maintenant🎜SELECT id FROM t1 UNION ALL SELECT id FROM t2;🎜Exécutez le SQL suivant🎜+----+ | id | +----+ | 1 | | 2 | | 3 | | 2 | | 3 | | 4 | +----+ 6 rows in set (0.00 sec)🎜Le résultat final est comme ceci. 🎜rrreee🎜L'instruction UNION supprimera les données en double de la ligne de résultat définie par défaut, cependant, vous pouvez utiliser UNION ALL pour obtenir des enregistrements en double. 🎜rrreee🎜Le résultat est le suivant🎜rrreee🎜La différence fondamentale entre UNION et JOIN est que UNION combine l'ensemble de résultats horizontalement, tandis que l'instruction JOIN combine l'ensemble de résultats verticalement. 🎜🎜🎜🎜🎜🎜Adresse originale : https://juejin.cn/post/7001772087534682143🎜🎜Auteur : i Listen to the Wind Passing Night🎜🎜🎜Pour plus de connaissances liées à la programmation, veuillez visiter : 🎜Vidéo de programmation🎜 ! ! 🎜