SQL Server内连接和外连接的区别

SQL Server内连接和外连接的区别在哪里呢?这是很多人都提到过的问题,下面就为您分析SQL Server内连接和外连接的具体区别,供您参考。

成都创新互联主要从事成都网站建设、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务金湾,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联。

如果用SQL Server内连接,正常的写法是这样的:

Select StudentInfo.*,ClassInfo.* from StudentInfo join ClassInfo on StudentInfo.ClassId=ClassInfo.ClassId

用这种写法不会出现笛卡尔积,但是内连接是允许省略连接条件的,也就是可以省略掉on后面的内容,所以如果写成这样:

Select StudentInfo.*,ClassInfo.* from StudentInfo,ClassInfo

也是可以通过编译的,但是这样一来就产生了一个笛卡尔积(关于笛卡尔积的内容见文章最后注解)。

但是因为怕产生笛卡尔积而拒绝使用内链接是不正确的,只要不省略掉连接条件,是不会产生笛卡尔积的。

具体采用内连接还是外连接要看具体问题的需要。内连接的特性是只显示符合连接条件的记录,以刚才的语句为例,查询结果只显示学生表和班级表中ClassId相等的记录。举例来说,如果有条学生记录的ClassId字段为空,那么用内链接将不会显示这条学生记录,因为在班级表里面是找不到对应的ClassId的。

而外连接就不一样,以左外连接为例(右外连接类似),它除了显示符合连接条件的记录以外,还会显示所有左表中的记录(右外连接就是所有右表中的记录)。还是以刚才的例子说明,如果学生表中有条学生记录的ClassId字段为空,用学生表左外连接班级表,那么是会显示这条学生记录的。

所以如果要求只显示已有分班的学生记录,那么就应该用内连接查询;如果要求查询所有学生记录,那么就应该采用外连接查询。

笛卡尔积:
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

【编辑推荐】

SQL Server添加列及删除列

SQL Server存储过程的单步调试

sql server系统表说明

SQL Server系统表的应用

Sql Server全文索引的迁移

本文名称:SQL Server内连接和外连接的区别
URL分享:http://www.shufengxianlan.com/qtweb/news29/276829.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联