≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL Server SQL语句不同连接JOIN及join的简单示例

人气:372 时间:2020-06-07

这篇文章主要为大家详细介绍了SQL Server SQL语句不同连接JOIN及join的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

为了从两个表中获取数据,我们有时会用JOIN将两个表连接起来。通常有以下几种连接方式:

JOIN  or  INNER JOIN(内连接) : 这两个是相同的,要求两边表同时有对应的数据,返回行,任何一边缺失数据就不显示。

LEFT JOIN(左外连接):即使右边的表中没有匹配,也从左表返回所有的行。

RIGHT JOIN(右外连接):即使左边的表中没有匹配,也从右表返回所有的行。

FULL JOIN(全外连接):只要其中一个表中存在匹配就返回行。

如例,有grade表(课程号sn,分数scroe,学号id),student表(学号id,学生姓名name),要查询学生的姓名和成绩

【图片暂缺】 【图片暂缺】

当JOIN或是INNER JOIN时,

代码如下:


SELECT s.name,g.sn,g.score from student as s join grade as g on s.id = g.id
 

或者

代码如下:


SELECT s.name,g.sn,g.score from student as s inner join grade as g on s.id = g.id

结果集如下

【图片暂缺】

当LEFT JOIN时,

代码如下:


SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id

结果集如下

【图片暂缺】

当RIGHT JOIN时,

代码如下:


SELECT s.name,g.sn,g.score from student as s right join grade as g on s.id = g.id

结果集如下

【图片暂缺】

当FULL JOIN时,

代码如下:


SELECT s.name,g.sn,g.score from student as s full join grade as g on s.id = g.id

结果集如下

【图片暂缺】

注意,两个表连接时用on,在使用left join(right join或full join)时,on与where的区别是:

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录

where条件是在临时表生成好后再对临时表进行过滤的条件,这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。如下图,

on条件为黄色部分

代码如下:


SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id and score =90

【图片暂缺】

代码如下:


SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id where score =90
 

【图片暂缺】

 

下面看下SQL中join的各种用法

 

 

 

1.自然连接(natural join)

 

 

自然连接将表中具有相同名称的列自动进行匹配,自然连接不必指定任何同等连接条件也不能认为指定哪些列需要被匹配,自然连接得到的结果表中,两表中名称相同的列只出现一次。

代码如下:


select * from employee natural join department;
 

2.内连接(inner join):产生的结果是A和B的交集(相同列里面的相同值)

内连接查询能将左表和右表中能关联起来的数据连接后返回,返回的结果就是两个表中所有相匹配的数据。

代码如下:


select * from TableA as A inner join TableB B on A.PK = B.PK;
select * from TableA as A inner join TableB B on A.PK > B.PK;


【图片暂缺】

 

3.外连接(outer join)

 

 

内连接是要显示两张表的内存,而外连接不要求如此,外连接可以依据连接表保留左表,右表或全部表的行为而分为左外连接右外连接和全连接。

代码如下:


select * from TableA as A left(right/full) join TableB as B on A.PA = B.PK;

Full Join:产生的结果是A和B的并集(如果没有相同的值会用null作为值)

【图片暂缺】

Left Join:产生表A的完全集,而B表中匹配的则有值(没有匹配的则以null值取代)


【图片暂缺】

Right Join:产生表B的完全集,而A表中匹配的则有值(没有匹配的则以null值取代)

【图片暂缺】

4.交叉连接(cross join)

又称笛卡尔连接,交叉连接返回两个集合的笛卡尔积。

代码如下:


select * from TableA cross join TableB;
 

参考链接:http://mazhuang.org/2017/09/11/joins-in-sql/

 

总结

 

以上所述是小编给大家介绍的SQL语句中不同的连接join及join的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对四海网网站的支持!

本文来自:http://www.q1010.com/179/9044-0.html

注:关于SQL Server SQL语句不同连接JOIN及join的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • 解决SqlServer 各版本 sa帐户不能登录问题
  • Windows使用性能监视器监控SqlServer的常见指标示例
  • 调整SQLServer2000运行数据库结构的简单示例
  • 解决SQLServer远程连接失败的问题
  • 数据库触发器DB2和SqlServer区别解析
  • 解决在Azure上部署Sqlserver网络访问不了示例
  • 在sqlserver中如何使用CTE解决复杂查询问题
  • SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)
  • SqlServer如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息
  • SQLServer中merge函数用法分析
上一篇:SQL Server通用数据库角色权限功能实例
下一篇:SQL Server数据库设置自动备份策略解析
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。