多语言展示
当前在线:1699今日阅读:166今日分享:27

数据库join的用途和用法(一)

在数据库中,我们经常使用到join的方法,很多前辈的反馈也给我们感觉join这玩意真的很有用之类的,但是首先,我们要明白一点,join的用途是什么,不明白join的用途,即使学会了,学通了,也很难说自己学懂了,下面就让我来大致讲一下我在学习数据库join的过程中学到的内容吧。
工具/原料
1

数据库的学习基础

2

一个可以使用的数据库

方法/步骤
1

首先join基本是满足类似于以下需求的:1. 所有的员工都有员工信息表,但是只有部分员工有标识,比如高级开发工程师之类的,这个标识存在另外一个表中,且表中是没有任何关于无标识员工的信息的,我现在需要连表查询,需求是显示所有员工信息,并且有标识的员工会多一条标识属性,无标识的员工这一条就是空,那么我们应该如何查询?很显然直接使用下图的数据库语句是无法查询出结果的:

2

很显然会出现的一个问题就是,只能查找出在EMPLOYEE_INFO以及EMPLOYEE_FLAG中同时存在数据的员工,根本没有办法达到我们之前所说的要求。也就是说能查找出来的都是在EMPLOYEE_FLAG中存在数据的员工,就是有标识的,但是我们的需求则是首先,无论这个员工id在或者不在EMPLOYEE_FLAG中出现,这位员工的基本数据都应当给我正确的显示出来。也就是如下图逻辑关系所示:

3

而不是我们通过where 和 = 的方案,获取到的部分,也就是两个圆的相交部分,如下图所示:

4

1. 第二个情况就是等于我们要查询的范围为多个表的全部的部分,还是举个例子吧,高中文理分科以后,文科班学语文、数学、外语、历史、政治,所有文科班的学生成绩表按照学号为主码放在这个表中。但是理科班学的是语文、数学、外语、物理、化学,也同样按照学号主码制表。然后现在我们有了一个需求,要求将所有学生的成绩显示在一起,只是文科生的物理化学显示为空,理科生也同理,这么显示出来,那么和上面的例子一样,很多初学者都会一下子想到下图的这个语句:

5

这个方法说真的,结果会令你大失所望,它不仅无法区分两个表中数据的联系,而且会胡乱的显示这两张表的笛卡儿积,也就是如果Liberal_Arts表中有10条数据,science表中也有10条数据,那么这个查询显示的结果就是10*10=100条数据,全部都是杂乱无章的排列组合。每一行,前半部分是Liberal_Arts,后半部分是science,根本不是我们想要的,而我们想要的,其实是类似于下图的结果:

6

也就是“我全都要”的效果,而且是能保证两个的相同属性列是可以重叠的。两个表相同的列是可以被识别为同一种类型的数据,而不是分开。

注意事项
1

数据库基础务必打扎实

2

join部分了解用途比了解用法更重要

推荐信息