您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

oracle连接查询

2025/6/24 7:21:16发布18次查看
一直以来都被什么内连接、左连接、左外连接、右连接、右外连接、全连接什么的搞的糊里糊涂的,自己动手建两张表,写个sql语句查查,发现其实左连接和左外连接是一回事,右连接和右外连接也是一回事。曾经有个家伙在我面前卖弄什么左连接是这样的,左外连接又
      一直以来都被什么内连接、左连接、左外连接、右连接、右外连接、全连接什么的搞的糊里糊涂的,自己动手建两张表,写个sql语句查查,发现其实左连接和左外连接是一回事,右连接和右外连接也是一回事。曾经有个家伙在我面前卖弄什么左连接是这样的,左外连接又是那样的,说的神神秘秘的,听的我糊里糊涂的。自己动手测一下,发现也就那样,用结果说明,更有说服力。
  注:没有左内连接、右内连接(测试了下,报错,说明不存在这些)
创建一张student表
create table student( id number(5), name varchar2(20), clazzid number(5))
插入一些记录
创建一张clazz表
create table clazz( id number(5), name varchar2(50))
插入一些记录
要求查询学生姓名和班级名称
--常用方式,不指明连接方式,默认内连接select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student s,clazz c where s.clazzid=c.id ;--等价select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student s inner join clazz c on s.clazzid=c.id ;
--左(外)连接,以左表为基表,结果集记录数等于或大于基表记录数select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student sleft outer join clazz c on s.clazzid=c.id;--或者用left outer join,结果都一样--oracle中可用+select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student s,clazz c where s.clazzid=c.id(+);--+号位于clazz,说明以student为基表
--右(外)连接,以右表为基表,结果集记录数等于或大于基表记录数select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student sright join clazz c on s.clazzid=c.id;----或者用right outer join,结果都一样--oracle中可用+select s.id sid,s.name 姓名,c.id cid,c.name 班名 from student s,clazz c where s.clazzid(+)=c.id;--+号位于student,说明以clazz为基表
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product