川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

Oracle 数据库高级查询语句方法

作者:川石信息 日期:2022-09-16 10:36:56 点击数:

  一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“Oracle 数据库高级查询语句方法”。

Tomcat日志乱码了怎么处理?(图1)

  等值连接

  SQL> ---查询出员工和员工的部门的名称是什么(涉及两个表emp,dept的联合查询,找等值条件 emp.deptno = dept.deptno)

  SQL> ---1.等值查询

  SQL> select e.*,d.dname from emp e,dept d where e.deptno = d.deptno;

  笛卡尔积,笛卡尔积(没有等值条件) emp 14条 dept 4条 结果 14*4 = 56条记录

  SQL> select e.empno,e.ename,d.dname from emp e,dept d;

  内连接(和等值查询的结果一样) inner join

  SQL> select e.empno,e.ename,d.dname from emp e inner join dept d on e.deptno = d.deptno;

  外连接 left [outer] join 左外联,right [outer] join 右外联,full join完全连接

  left [outer] join 左外联:

  rows selected

  SQL> ----3.left [outer] join 左外联,以左表为准 emp e left join dept d,left join左边的emp为左表,left join右边 dept为右表

  SQL> 左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示(注意:查询结果合理,实战中推荐使用左外联)

  左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示

  SQL> select e.empno,e.ename,d.dname from emp e left join dept d on e.deptno = d.deptno;

  right [outer] join 右外联,右外联,以右表dept为准,不管关联的字段deptno是否在左表emp中是否有对应的数据,右表dept的数据全部要显示,坐标emp中关联的deptno为null的记录不显示

  full [outer] join 完全连接 都要显示左表和右表的数据,不管左表emp的关联字段deptno为null,还是右表dept的数据deptno=40被左表emp引用(注意:mysql不支持)

  联合查询中的三表联合查询

  SQL> select e.empno,e.ename,e.job,e.sal,d.dname,g.grade

  2 from emp e

  3 left join dept d on e.deptno = d.deptno

  4 left join salgrade g on e.sal between g.losal and g.hisal

  5 order by e.empno

  6 ;

  如何使用(+)进行多表查询(注意:该语法在别的数据库不支持,所以不通用,不推荐使用)

  SQL> select e.empno, e.ename, d.deptno, d.dname

  2 from emp e, dept d

  3 where e.deptno(+) = d.deptno;

  EMPNO ENAME DEPTNO DNAME

  ----- ---------- ------ --------------

  7499 ALLEN 30 SALES

  7521 WARD 30 SALES

  7566 JONES 20 RESEARCH

  7654 MARTIN 30 SALES

  7698 BLAKE 30 SALES

  7782 CLARK 10 ACCOUNTING

  7788 SCOTT 20 RESEARCH

  7844 TURNER 30 SALES

  7876 ADAMS 20 RESEARCH

  7900 JAMES 30 SALES

  7902 FORD 20 RESEARCH

  7934 MILLER 10 ACCOUNTING

  7839 KING 10 ACCOUNTING

  40 OPERATIONS

  14 rows selected

  使用using来实现联合查询

  SQL> select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d using(deptno);

  select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d using(deptno)

  ORA-25154: USING 子句的列部分不能有限定词

  SQL> select e.empno,e.ename,deptno,d.dname from emp e inner join dept d using(deptno);

  EMPNO ENAME DEPTNO DNAME

  ----- ---------- ------ --------------

  7499 ALLEN 30 SALES

  7521 WARD 30 SALES

  7566 JONES 20 RESEARCH

  7654 MARTIN 30 SALES

  7698 BLAKE 30 SALES

  7782 CLARK 10 ACCOUNTING

  7788 SCOTT 20 RESEARCH

  7844 TURNER 30 SALES

  7876 ADAMS 20 RESEARCH

  7900 JAMES 30 SALES

  7902 FORD 20 RESEARCH

  7934 MILLER 10 ACCOUNTING

  7839 KING 10 ACCOUNTING

  13 rows selected

  SQL>


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-09-16 10:36:56
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-09-16 10:36:56
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-09-16 10:36:56
  • 建筑工程专业朱同学成功转行为软件测试人!2022-09-16 10:36:56
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-09-16 10:36:56
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-09-16 10:36:56
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-09-16 10:36:56
  • 文科生转行软件测试照样拿下高薪15K!2022-09-16 10:36:56
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-09-16 10:36:56
  • 毕业1年,迷茫的他最终选择转行软件测试2022-09-16 10:36:56