乐趣区

关于mysql:MySQL中的join查询

前言

Mysql 的 join 是什么,join 这个单词的意思是退出、加入、连贯,而在数据库中,也是连贯的意思,将两个表连接起来查问出咱们想要的数据。在数据库中,join 的用法次要分成三种,别离是左连贯、右连贯和内连贯,然而理论使用中,两个表之间的操作,是一共有七种,那咱们明天就开始认识一下这七种用法吧

上面所有的椭圆都代表两个不同的表,假设右边为 test1 表,左边的为 test2 表,上面是两个表的状况

test1 表有 uid、名字和地区三个字段

test2 表有 uid、姓名、性别和年龄四个字段

1. 全连贯

如图,将这两张表全连贯查问,假如 A 表有 M 条记录,B 表有 N 条记录,全连贯的时候就是用笛卡尔积来计算的,所以查问进去的是是 M×N 条记录

而 test1 和 test2 两张表全连贯的 sql 语句和查问的后果如下

SELECT * FROM test1 LEFT JOIN test2 ON test1.uid = test2.uid UNION SELECT * FROM test1 RIGHT JOIN test2 ON test1.uid = test2.uid;

查问到两个表所有的数据,如果没有数据就为空

总结:查问到的内容是两个表的所有内容

2. 去交加

如图,将这两张表去交加连贯查问,两个表的全连贯去掉两头的交加的局部就是去交加

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

 SELECT * FROM test1 LEFT JOIN test2 ON test1.uid = test2.uid WHERE test2.uid IS NULL 
 UNION SELECT * FROM test1 RIGHT JOIN test2 ON test1.uid = test2.uid WHERE test1.uid IS NULL


查问进去的信息,去掉了 101~107 的公共局部,查问进去两个表独有的局部——test1 的 108、109,test2 的 100

总结:查问到的内容是两个表的没有公共局部的内容

3. 左连贯

如图,将这两张表进行左连贯查问,依据雷同的局部去加上左表剩下的内容

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

SELECT * FROM test1 LEFT JOIN test2 ON test1.uid = test2.uid;

光看图如同跟只查问左表没什么区别,实际上两个表的公共局部都是一起查问了,右表的数据如果有就查出来,没有就为空。

次要看以哪个表为主,这里为左连贯就以左表为主,左表的数据都查问进去,右表有数据则显示,没有则为空

总结:查问的是两表独特的局部加上左表剩下的局部

4. 右连贯

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

SELECT * FROM test1 RIGHT JOIN test2 ON test1.uid =test2.uid;


跟左连贯相似,光看图如同跟只查问右表没什么区别,实际上两个表的公共局部也是一起查问了,左表的数据如果有就查出来,没有就为空

次要看以哪个表为主,这里为左连贯就以左表为主,左表的数据都查问进去,右表有数据则显示,没有则为空

总结:查问的是两表独特局部加上右表剩下的局部

5. 内连贯

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

SELECT * FROM test1 INNER JOIN test2 ON test1.`uid` = test2.`uid`;


在表中,test1 中的 109 和 108,test2 的 100 没有被查问进去

总结:查问到的内容是两个表共有的局部

6. 左独有

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

SELECT * FROM test1 LEFT JOIN test2 ON test1.uid = test2.uid WHERE test2.uid IS NULL;


这里查问出了 test1 表中独有 108、109 的数据

总结:查问的是左表中右表没有的内容

7. 右独有

而 test1 和 test2 两张表去交加连贯的 sql 语句和后果如下

SELECT * FROM test1 RIGHT JOIN test2 ON test1.uid = test2.uid WHERE test1.uid IS  NULL;


这里查问出了 test2 表中独有 100 的数据

总结:查问的是右表中左表没有的内容

退出移动版