MySQL数据库——多表数据记录查询
  TEZNKK3IfmPf 2023年11月14日 14 0


数据库的多表记录查询,在执行过程中出现的问题。。。

首先创建的两张数据表 tb_worker和tb_department。

MySQL数据库——多表数据记录查询

 

普通内连接查询

根据两张表中的相同字段id来连接两张表:

​ select name,sex,hobby,score,d_name,manager,work_num from tb_worker inner join tb_department on tb_worker.id=tb_department.id;​

MySQL数据库——多表数据记录查询

在操作时容易出现的情况:

1:查询字段中出现了两张表中相同的字段:

​ select id,name,sex,hobby,score,d_name,manager,work_num from tb_worker inner join tb_department on tb_worker.id=tb_department.id;​

MySQL数据库——多表数据记录查询

  比如,两张表中都有id字段,查询时如果要查询这个id字段的话,数据库就不知道应该返回哪一张数据表中的id 字段,就会返回错误。

2:可以根据需要返回怎样的数据来输入指定的字段:

​ select hobby,score,d_name,manager,work_num from tb_worker inner join tb_department on tb_worker.id=tb_department.id;​

MySQL数据库——多表数据记录查询

 

 我们和第二张图片对比可以发现,如果我们不想返回name、sex这两个字段的内容,就可以不输入这两个字段。

3:假如我们的字段和后面输入的表名称时不对应的,会有怎样的结果:

​ select hobby,score,d_name,manager,work_num from tb_department inner join tb_worker on tb_worker.id=tb_department.id;​

MySQL数据库——多表数据记录查询

 

这里我们可以看到,如果不对应也是可以返回相同的值的,一般情况下我们都是相对应着写。

自连接查询

自连接查询其实就是把同一张表的数据当成两张不同的表中的数据,然后分别给这两张新的表起个别名,作为新表的名称。

​select t1.id,t1.name,t1.sex,t2.score from tb_worker as t1 inner join tb_worker as t2 on t1.id=t2.id and t2.score>9.1;​

MySQL数据库——多表数据记录查询

 

外连接查询 ——左连接查询

1:我们让tb_worker 作为左表,然后进行查询:

​select tb_worker.id,tb_worker.name,tb_worker.sex,tb_department.d_name,tb_department.manager from tb_worker left join tb_department on tb_worker.id=tb_department.id; ​

MySQL数据库——多表数据记录查询

   我们以tb_worker为左表,那么左表就是查询过程中的基表,左表需要查询的字段会保留 另一张表中的数据如果不符合连接条件的话就会返回空值NULL。

2:如果我们把左表改成tb_department ,就会出现这样的结果,不会返回空值。

MySQL数据库——多表数据记录查询

 

右连接查询

右连接查询将右表作为基表,这里我们将tb_worker 作为右表进行查询:

​select tb_worker.id,tb_worker.name,tb_worker.sex,tb_worker.hobby,tb_department.d_name, tb_department.manager,tb_department.work_num from tb_department right join tb_worker on tb_department.id=tb_worker.id;​

MySQL数据库——多表数据记录查询

   同样,我们让tb_department 作为右表,来看一下结果:

MySQL数据库——多表数据记录查询

 

MySQL数据库——多表数据记录查询

 

 

MySQL数据库——多表数据记录查询

 

 由此可见,假如让这两张表中id字段少的作为基表,那么返回值就不会有空值。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月12日   18   0   0 数据库mysql
TEZNKK3IfmPf