ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【sql】内连接与外连接

2019-07-14 19:43:46  阅读:148  来源: 互联网

标签:join tsid t2 t1 sql 查询 连接


查询数据时,当需要将多个表的列共同显示到一个结果集中的时候,可以使用连接查询

select * from PhoneNum inner join PhoneType on PhoneNum.PTypeId=PhoneType.ptid

select * from PhoneNum inner join PhoneType on PhoneNum.PTypeId=PhoneType.ptid

delete from student where sId in (select sId from student where sName='刘备' or sName='张飞')


连接查询(jion)    
交叉连接(cross join)
内连接 inner join 多次表内连接
  无论几张表连接 每次执行的都是两张表进行连接
外连接
  左外联(left outer join )
  右外联(right outer join)
  
 连接查询的基本执行步骤
  1.笛卡儿积
  2.应用on筛选器
  3.添加外部行,到此from执行完毕
  
  左外联
  会将所有左表中的数据全部显示 同时对于左表中数据 在右表中能找到匹配的数据 那么则显示对应右表中的数据 如果在右表中找不到对应的匹配 则显示null
  左表:left join 左边的表
  右表:left join 右边的表
  from TblStudent as t1 left join TblScore as t2 on t1.tsid=t2.tsid
  
  请查询出为参加考试的同学的tsid 姓名年龄
 子查询:select *from TblStudent where tsid not in (select from TblScore)
 通过左外联接查询:
 select
    t1.*,
    t2.*
from TblStudent as t1
left join TblScore as t2 on t1.tsid=t2.tsid
where t2.tscoreId id null    

右外联
 select
    t1.*,
    t2.*
 TblScore as t2
right join from TblStudent as t1 on t1.tsid=t2.tsid
where t2.tscoreId id null

注意:当使用连接查询的时候 如果同时要指定查询的条件 那么一定要用where语句 不要在on条件后面跟and来编写其他查询条件

第一步 构建笛卡尔积
第二步 根据left join on 条件从中进行数据筛选
第三步 因为是外连接 所以要显示左表中的所有记录 所以接下来就要进行“添加外部行”(把TblStudent表中的没有筛选出来的数据添加到当前的查询结果集中)

   

标签:join,tsid,t2,t1,sql,查询,连接
来源: https://blog.csdn.net/qq_43571448/article/details/95913402

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有