您的位置:首页 > 科技 > 能源 > 网站建设的书_十堰秦楚网主页_搜狗网页版入口_近三天的国内新闻

网站建设的书_十堰秦楚网主页_搜狗网页版入口_近三天的国内新闻

2025/3/28 16:59:28 来源:https://blog.csdn.net/2301_80303982/article/details/146484495  浏览:    关键词:网站建设的书_十堰秦楚网主页_搜狗网页版入口_近三天的国内新闻
网站建设的书_十堰秦楚网主页_搜狗网页版入口_近三天的国内新闻

一.内连接查询

概念:内连接是最普遍的连接类型,要求构成连接每一部分的每个表都匹配,不匹配的行将被排除

分类:内连接包括相等连接和自然连接,相等连接最为常见,就是使用等号运算符根据每个表共有列的值匹配两个表中的行,这种情况最后的结果集只包含参加连接的表中与指定字段相符的行,自然连接会消除相等连接结果中的重复属性列而且自然连接根据相同的列名自动连接不是必须要显式指定连接条件(如A=B),而相等连接需要指定条件,也就是说自然连接是去掉重复列的特殊的等值连接,等值连接中不要求属性值完全相同,而自然连接要求必须是相同的属性组(属性名可以不同)即值域必须相同。
下面我们来看一个例子:
在这里插入图片描述

如图所示我们先建立一个图书信息表,内容包含图书id(int类型),图书名(可变字符串类型),作者(可变字符串类型),价格(可变浮点数类型),总页数(int类型),然后我们查看一下表结构如上图所示
在这里插入图片描述
然后我们再建立一个图书借阅表,包含图书id(int型),借出时间(数据库日期类型)归还时间(数据库日期类型),是否归还(布尔型),建立的表结构如上图所示,下面就是开始往表中插入值

在这里插入图片描述
先是给图书借阅表插入值,这里有两个误区警示

误区1:我们在插入多组值时中间要用逗号分隔,否则会报错

误区2:我们注意ERROR行提示的Duplicate entry for primary,key意思是主键的值重复,这是重点,我们给图书的id设置了主键属性,那么图书的id值就不能重复,因为主键有唯一表示性,所以我们如果手滑一不小心把id的值设为相同的,插入操作就会失败,这也是小编实践过程中的教训

然后是插入图书信息表的内容**(注意windows系统不区分大小写,linux系统区分大小写)**
在这里插入图片描述
表的内容有了,下面就开始我们的内连接操作:
在这里插入图片描述
我们进行一次等值查询,以两个表中的图书id为等值条件,我们不难发现我们往图书信息表中插入了四条数据,但是有一本书的数据在图书借阅表中没有,因此连接的时候id不对等所以只返回了三本书的信息

深度思考:上例的等值连接是不是自然连接?
显然不是,因为两个表中的id属性列的值域不同,借阅表的值域是7,8,9而信息表的值域是7,8,9,10所以不是自然连接,下图是一个自然连接的实例:
在这里插入图片描述
在这里插入图片描述
由于SNO属性列的值域相同所以是自然连接并且不会删除重复的列

二.外连接查询

概念:外连接是指使用outer join关键字(outer可省略)将两个表连接起来,外连接生成的结果集不仅包含符合连接条件的行数据,而且包括左表(左外连接时的表),右表(右外连接时的表)或两边连接表(全外连接时的表)中所有的数据行

左外连接(left join):将左表中的所有数据分别与右表中的每条数据进行连接组合,返回的结果除了内连接的数据还包括左表中不符合条件的数据,并在右表的相应列中添加NULL值

右外连接(right join):将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除了内连接的数据还包括右表中不符合条件的数据,并在左表的相应列中添加NULL值

基本语法格式:

SELECT 字段名称 FROM 表名1 LEFT/RIGHT JOIN 表名2 ON 表名1.字段名1=表名2.属性名2

我们还是以上面内连接建立的图书表分析:
<1>左外连接
在这里插入图片描述
这里要注意先选择数据库再查询否则会报错,我这里的数据库是libarary

<2>右外连接
在这里插入图片描述
<3>全外连接(MYSOL暂时不支持,这种外查询意义也不大)

我们对比左外连接和右外连接的查询结果可以发现内连接的查询结果和左外连接的查询结果一致,这是由于图书借阅表(左表)在图书信息表(右表)中一定有与之对应的数据,反过来图书信息表在图书借阅表中有一条id为10的书的信息没有,所以右连接的查询结果会出现最后一行为空(NULL)

**总结:

左连接,左对右,左没右,右加NULL;
右连接,右对左,右没左,左加NULL;

简单点说就是左连接能列出左边关系所有的元组,右连接能列出右边关系所有的元组,我们的例子中左连接列出了借阅表(左表)的所有元组,而外连接列出了信息表(右表)的所有元组(我们要查询的列)**

三.复合条件连接查询(AND)

我们在内连接查询的基础上再加上判断归还字段是否等于0的条件
在这里插入图片描述
如果在右外连接上加入ifback等于0的条件,那么借阅表中的ifback等于1的地方(bookid,ifback)也会变为NULL因为不符合条件,这是外连接和内连接的不同地方,读者注意体会**
在这里插入图片描述

如图所示,我们筛选出了ifback=0的所有元组,查询更为精准

下期预告:SOL子查询的讲解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com