SQL 连接(内连接,外连接)

简介: 现在有两张表,学生表student1,成绩表SC1,两张表的数据如下

内连接


现在有两张表,学生表student1,成绩表SC1,两张表的数据如下

20201117145445709.png

现在要对两张表做连接查询,连接一般需要写条件,where 或者 on 后面 ,


select * from student,SC where student.sid=SC.sid from 后面直接写两个表名,这样写等价于内连接 如果不写 where 条件,相当于笛卡尔积

20201117145459115.png

带有 where 条件 相当于内连接

2020111714550898.png

A(inner,left,right) join B on A.1=B.1 on 不写会报错

select * from student inner join SC on student.sid=SC.sid


外连接(左外连接,右外链接)


左联接,是包括 A,B 表的交集 和 A 表的数据 (A eft join B on A.1=B.1),如果 A 表中有的数据 B 表没有找到相等的,会显示A表的数据,B表中的部分会为 null ,下面的结果就是成绩表中没有赵六和田七的数据的结果

20201117145517896.png

如果 and 写在 on 后面,表示的是在做关联时不关联被过滤掉的数据,比如上面的数据,写 and sc.score>60 条件之后,会过滤掉成绩<=60的数据,而张三丰每一门课的成绩都小于60,但是会有张三丰的数据,只是后面的为null,如下:

20201117145524855.png

上面的数据是过滤掉成绩小于60的数据之后,张三丰的成绩都小于60,并不是没有张三丰这个数据了,而是他后面的为null,可以这样理解,on 后面的 and 条件是代表关联与否,不满足就不关联,但A表的数据还是要全部都有的。


如果成绩>60是写在where 里的,where 是对结果进行过滤的,所以会把上面的结果不满足成绩>60的数据过滤掉,即:

20201117145559491.png

相关文章
|
4月前
|
SQL 数据库
SQL Server 连接查询和子查询
SQL Server 连接查询和子查询
91 0
|
5月前
|
SQL Oracle 关系型数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
142 0
|
6月前
|
SQL 数据库
04SQL - SQL连接 left join
04SQL - SQL连接 left join
26 0
|
12天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
27 0
|
1月前
|
SQL
SQL多表查询的几种连接方式
SQL多表查询时,主要使用以下几种连接方式
|
2月前
|
SQL 消息中间件 分布式数据库
flink sql问题之连接HBase报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
187 0
|
2月前
|
SQL 网络协议 Java
【Java+SQL Server】前后端连接小白教程
【Java+SQL Server】前后端连接小白教程
24 0
|
3月前
|
SQL
在SQL中连接和复杂操作
在SQL中连接和复杂操作
22 0
|
3月前
|
SQL 数据库
面试题:Sql中的连接
面试题:Sql中的连接
28 5
|
3月前
|
SQL 关系型数据库 数据库连接
Python 连接 SQL 数据库 -pyodbc
以下是如何在 Python 中使用 pyodbc 连接到 SQL 数据库的基本步骤和详解
52 0