Oracle数据库-行查询

过滤条件有:

  • 比较:=、>、<、>=、<=、!=、<>、between and
  • 逻辑:and、or、not、union、union all、intersect、minus
  • null:is null、is not null、not is null
  • 模糊查询:like:% _
  • in、exists
  • 子查询

语句:

where 条件

执行流程:

from→where→select

一、比较条件

1、=

-- 查询部门编号为30的员工
select * from emp where deptno = 30
运行结果

2、>

-- 查询工资大于1500的员工
select * from emp where sal > 1500
运行结果
在这里插入图片描述

3、<

-- 查询工资小于1500的员工
select * from emp where sal < 1500
运行结果
在这里插入图片描述

4、>=

-- 查询工资大于等于1600的员工
select * from emp where sal >= 1600
运行结果
在这里插入图片描述

5、<=

-- 查询工资小于等于1600的员工
select * from emp where sal <= 1600
运行结果
在这里插入图片描述

6、!=|<>

!=<>的效果是一样的

-- 查询不是30部门的员工 !=
select * from emp where deptno != 30
-- 查询不是30部门的员工 <>
select * from emp where deptno <> 30
运行结果
在这里插入图片描述

7、between and

between and就是大于等于某个值,并且小于等于某个值

-- 大于等于并且小于等于
select * from emp where sal between 1250 and 1500
运行结果
在这里插入图片描述

二、逻辑运算

1、and

并且,满足左边并且满足右边

-- and
select * from emp where sal >= 1250 and sal<=1500
运行结果

2、or

或,满足左边或者右边

-- or
select * from emp where deptno = 20 or deptno = 30
运行结果

3、not

取反

-- 不在部门30的员工
select * from emp where not deptno = 30
运行结果
在这里插入图片描述

4、union

并集,去除重复,两个结果集的并集,默认规则排序

select * from emp where deptno = 30
union
select * from emp where deptno = 20
运行结果
在这里插入图片描述

5、union all

和上面一样,不过不会去除重复的记录值,不进行排序

select * from emp where mgr = 7839
union all
select * from emp where deptno = 20
运行结果
在这里插入图片描述

6、intersect

交集,找出重复的记录,两个结果集的交集,默认排序

select * from emp where mgr = 7839
intersect
select * from emp where deptno = 20
运行结果
在这里插入图片描述

7、minus

差集,去掉重复记录,两个结果集的差集,默认排序

select * from emp where sal >=1500
minus
select * from emp where sal <=3000
运行结果
在这里插入图片描述

三、null

1、is null

是否为null

-- 没有奖金的员工
select * from emp where comm is null
运行结果
在这里插入图片描述

2、is not null|not is null

不为null,is not nullnot is null一致

-- 有奖金的员工
select * from emp where not comm is null
select * from emp where comm is not null
运行结果
在这里插入图片描述

四、模糊查询

Tips:模糊查询效率低

语法:like 通配符

1、%

%:任意个符号,零至任意个符号

-- 名字中带N的员工
select * from emp where ename like '%N%'
运行结果
在这里插入图片描述

2、_

_:一个字符

-- 名字的第一个字母是A的员工
select * from emp where ename like '_A%'
运行结果
在这里插入图片描述

五、in和exists

1、in

相当于多个or

-- 20部门和30部门的员工
select * from emp where deptno in (20,30)
运行结果
在这里插入图片描述

2、exists

如果exists有结果,则外层保留数据,内查询借助外部数据

select * from emp e1 where exists(select * from emp e2 where e1.deptno = e2.deptno)
运行结果
在这里插入图片描述

六、子查询

-- 有员工的部门的部门名称
select dname from dept where deptno in (select distinct deptno from emp)
运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Asdzxc968/article/details/104799357