【Oracle】模糊查询与高级连接查询

区间和范围查询

  • Between … and 的用法
 //查询薪水在2000-3000之间的员工信息
 select * from emp where sal>=2000 and sal<=3000l
 or
 select * from emp where sal 2000 and 3000;
  • is null(空字符串)
//查询没有上级的员工信息
select * from emp where mgr is null;
  • 模糊查询 (like ‘%关键字%’)
 //查询薪水高于2000或者岗位为CLERK的员工信息,同时还要满足其姓名首字母为'J'的信息
 select * from emp where (sal>2000 or job='CLERK') and ename like'J%';

高级连接查询

  • 内连接查询
 //内连接查询(返回两张表共同的数据)
 select * from1 inner join2 on1.公共列 = 表2.公共列;
  • 左外连接查询
 select * from1 left join2 on1.公共列 = 表2.公共列;
  • 右外连接查询
 select * from1 right join2 on1.公共列 = 表2.公共列;
  • 完全连接查询
 select * from1 full join2 on1.公共列 = 表2.公共列;
  • 交叉连接(笛卡尔积)
select * from1,表2 where1.公共列 = 表2.公共列;
  • 自连接查询(自己查询自己)
//查询员工‘SMITH’的上级领导姓名

//方式一 子查询
 select * from emp where empno = (select mgr from emp where ename='SMITH');

//方式二 一个查询结果作为一个新表
select * from (select mgr from emp where ename='SMITH') 上级表 inner join emp on 上级表.mgr = emp.empno;

//方式三
select * from emp,(select mgr from emp where ename='SMITH') 上级表 where emp.empno = 上级表.mgr;

子查询(在SQL语句中嵌套的查询)

  • 单行子查询
 //单行子查询:返回一个值的子查询 = > < >= <=

 //查询与‘SMITH’同部门的员工
 select * from emp where deptno = (select deptno from emp      where emp.ename='SMITH');
  • 多行子查询 (in / not in)
//查询与部门10号员工同岗位的员工
select * from emp where job in (select job from emp where deptno=10)
  • 多列子查询
 //查询与'SMITH'同部门岗位的员工
 select * from emp where (deptno.job) = (select deptno,job from emp where ename='SMITH');
  • 内联视图子查询
 //内联视图子查询:将子查询的结果作为另一个查询的数据源
 //查询薪水最低的5个员工的信息
 //注:因为rownum是先序列再排序,不能直接select * from 表名 order   //bywhere rownum<5,所以先把排序的结果集在rownum序列一次

select  rownum,t1.* from (select emp.* from emp order by sal asc) t1 where rownum<=5; 

//查询员工信息表1-5行的数据
select t1.* from (select rownum r,emp.* from emp where rownum <=10) t1 where r>5 and r<=10;
  • 分页查询
//每页有多少行(PageCount),当前第几页(Page)
select t1.* from (select rownum r,emp.* from where rownum<=pagecount*page) t1 where r>pagecount*(page-1) and r<=pagecount*page;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值