Oracle数据框连接查询和集合查询

连接查询

使用连接谓词指定的连接

连接谓词=连接条件,在WHERE子句中给出

格式:[<表名1>]<列名1><比较运算符>

           [<表名2>]<列名2>

1、等值连接

表之间通过比较运算符=连接起来

SELECT student.*,score.*
   FROM student,score
   WHERE student.sno=score.sno;

2、自然连接

一种特殊的等值连接,在目标列中去除相同的字段名称为自然连接

多表连你姐,并采用别名缩写表名

SELECT a.sno,a.sname,b.cname
   FROM student a,course b
   WHERE a.sname=b.cname;

3、自连接

将同一个表进行连接称为自连接

例:查询选修1201课程的成绩高于学号为181002的成绩的学生

SELECT a.sno,a.cno,a.grade
   FROM score a,score b
   WHERE a.sno='1201' AND a.grade>b.grade AND b.sno='181002' AND b.cno='1201';

使用JOIN关键字指定的连接

格式:<表名><连接类型><表名> ON <条件表达式>

           | <表名>CROSS JOIN<表名>

           | <连接表>

连接类型有:[INNER|{LEFT|RIGHT|FULL}OUTER|CROSS] JOIN

说明:

  1. 在FROM子句中庸JOIN指定连接的多个表的表名,用ON子句指定连接条件
  2. 在连接类型中,INNER表示内连接,OUTER表示外连接,CORSS表示交叉连接

1、内连接 INNER JOIN

内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。内连接是系统默认的,克省略INNER

例:查询学生的情况和选修课程的情况

SELECT *
   FROM student INNER JOIN score ON student.sno=score.sno;

例:查询数学课程且分数在84分以上的学生信息(省略了INNER关键字)

SELECT a.sno,a.sname,b.grade,c.cname
   FROM student a JOIN score b ON a.sno=b.sno JOIN course c ON b.cno=c.cno
   WHERE c.cname='数学' AND b.grade >= 84;

2、外连接 OUTER JOIN

外连接的结果表不但包含满足连接条件的行,还包含相应表中的所有行

  1. 左外连接 LEFT OUTER JOIN 
  2. 右外连接 RIGHT OUTER JOIN
  3. 完全外连接 FULL OUTER JOIN

注意:外连接智能对两个表进行

3、交叉连接 CROSS JOIN 

例:查询员工和部门所有可能组合

SELECT EmplName,DeptName
   FROM Employoe CROSS JOIN Department

集合查询

将两个或多个SQL语句的查询结果集合并起来,利用集合进行查询处理

集合操作符功能:

  1. UNION 并运算,返回所有和那个,不包括重复行
  2. UNION ALL 并运算,包括重复行
  3. INTERSECT 交运算
  4. MINUS 差运算 返回第一个表有但是第二个表每月的数据

格式:<SELECT查询语句>

           {UNION|UNION ALL|INTERSECT|……}

           <SELECT查询语句>

说明:不允许在复合查询包含的任何单独查询中使用ORDER BY子句

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值