SQL SERVER实现连接与合并查询
程序员文章站
2024-03-27 09:39:34
创建测试表mystudentinfo联合插入多条数据创建测试表gradeinfo联合插入多条数据内链接内链接是从结果表中删除其他被链接表中没有匹配的所有行,所以我们说内链接可能丢失数据外部链接左外联接...
创建测试表mystudentinfo
联合插入多条数据
创建测试表gradeinfo
联合插入多条数据
内链接
内链接是从结果表中删除其他被链接表中没有匹配的所有行,所以我们说内链接可能丢失数据
外部链接
左外联接,关键字left join
左外联接,结果集中包括左表中的所有行,如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,
来自右表的所有选择列表均为null
右外联接
gight join进行联接
是左外联接的反向联接,将返回右表的所有行,如果右表的某一行在左表中没有匹配行,则将为左表返回null
完整外联接
关键字是full join
完整外联接使用了full join进行联接,当某一行在另一表中没有匹配行,另一表的选择列表将返回null
交叉联接(笛卡尔积)
corss join 没有where 也没有on,返回行数是两表行数的乘积
union:union操作符用于合并两个或多个 select 语句的结果集
union必须遵循
- 1.两个select语句选择列表中的列数目必须一样,而且对应位置上的列的数据类型必须相同或者兼容,每条 select 语句中的列的顺序必须相同
- 2.union 结果集中的列名总是等于 union 中第一个 select 语句中的列名
- 3.union默认自动去除重复行
- 4.如果需要手动排序,order by语句必须加在最后一个select语句之后,但是他所使用的排序列名必须是第一个select选择列表中的列名
union all
- 1.加上all关键字之后,功能就是不删除重复行,也不对行进行自动排序
- 2.如果希望把不同数据类型的字段合并查询,必须进行类型转换使其相对应的数据类型相同或者兼容
- 3.当合并两个表,列数不同时.只要向其中一个表源中添加列,就可以使其两个表的列数相同
union和联接查询有什么区别
- 1.在合并中,两个表的数量和数据类型必须相同 ; 在联接中,一个表的行可能与另一个表的行有很大的区别
- 2.在合并中,行的数量是两个表行的"和" ; 在联接中,行的最大数目是他们的"乘积"
到此这篇关于sql server实现连接与合并查询的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。