sql中内连接与外连接的区别
2015-07-08 09:48
281 查看
你是要弄清楚区别在什么地方还是单纯想要文字说明
文字说明的楼上说了一大堆了,不说了。
弄个例题,直观一点。两个表:
--表stu
id name
1, Jack
2, Tom
3, Kity
4, nono
--表exam
id grade
1, 56
2, 76
11, 89
内连接 (显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id exam.id name grade
--------------------------------
1 1 Jack 56
2 2 Tom 76
左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL
右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89
所以,具体使用什么连接,还是要看自己是什么样的需求,比如,在一张表中插入一条新的记录的
时候,插入之前要对表中关键字段进行判断,有的时候,会涉及到两张表中某字段的存在性进行验证
当涉及到的两张表的关系是且的关系的时候,就需要使用内连接;当两个字段存在性是或的关系,并且以
第一张表的字段为主的时候,就需要使用左连接;同样的情况,以第二个表中字段为主进行验证的情况就
需要使用右连接。综上所述,对于存在性的检验,还是内连接比较常见。
文字说明的楼上说了一大堆了,不说了。
弄个例题,直观一点。两个表:
--表stu
id name
1, Jack
2, Tom
3, Kity
4, nono
--表exam
id grade
1, 56
2, 76
11, 89
内连接 (显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id exam.id name grade
--------------------------------
1 1 Jack 56
2 2 Tom 76
左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL
右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89
所以,具体使用什么连接,还是要看自己是什么样的需求,比如,在一张表中插入一条新的记录的
时候,插入之前要对表中关键字段进行判断,有的时候,会涉及到两张表中某字段的存在性进行验证
当涉及到的两张表的关系是且的关系的时候,就需要使用内连接;当两个字段存在性是或的关系,并且以
第一张表的字段为主的时候,就需要使用左连接;同样的情况,以第二个表中字段为主进行验证的情况就
需要使用右连接。综上所述,对于存在性的检验,还是内连接比较常见。
相关文章推荐
- bak文件如何还原数据库文件
- Redis高可用安装笔记
- Oracle ERP 主要模组
- MySQL开发规范
- Standard Attachments in Oracle Form 标准附件
- oracle临时表
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- Mybaties批量修改每一条不同数据
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
- MYSQL实时触发SQL SERVER 实例
- SQL Server查询数据库中表使用空间信息实现脚本
- SQL Server中使用Trigger监控存储过程更改脚本实例
- yum安装mongodb
- SQL Server中通配符的使用示例
- 只要关系配置正确,一条sql就可以解决循环中查询数据库的问题
- MySQL 高可用架构在业务层面的分析研究
- PL/SQL Developer的调试存储过程
- 从偶然的机会发现一个mysql特性到wooyun waf绕过题
- PL/SQL编码规范
- Sql按照字段分组,选取其他字段最值所在的行记录