oracle if查询,Oracle条件查询

Oracle条件查询

条件查询需要用到where语句,where必须放到from语句表的后面。

支持如下运算符

运算法

说明

=

等于

<>或!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

between … and ….

两个值之间

is null

为null

等号操作符

● 查询薪水为5000的员工

select empno, ename, sal from emp where sal=5000;

351e468e0dc2e0eec016d04728ff39e2.png

<>操作符

● 查询薪水不等于5000的员工

select empno, ename, sal from emp where sal <> 5000;

ea6ed5c002d5722ab010a3692952b822.png

● 查询工作岗位不等于MANAGER的员工

select empno, ename, sal from emp where job <> 'MANAGER';

1a59f5e07881a8ab8f7ef53fb381fb7d.png

在sql语句中如果是字符串采用单引号引起来,不同于java中采用双引号,如果是数值型可以用单引号引起来,但是一定要保证字符串的内容可以转换为数字。

between … and …操作符

● 查询薪水为1600到3000的员工(第一种方式,采用>=和<=)

select empno, ename, sal from emp where sal >=1600 and sal <=3000;

ae5dc83c7376b72b13b577b3dc62e064.png

● 查询薪水为1600到3000的员工(第二种方式,采用between … and …)

select empno, ename, sal from emp where sal between 1600 and 3000;

dbdfa5c6a64f7df7309785f418dcb05a.png

between ….and …,包含最大值和最小值。

between ….and …不仅仅可以应用到数值类型的数据上,还可以使用在字符类型的数据上。

between ….and …对于两个参数的设定一定是小的数在前,大的数在后。

is null

Null为空,但不是空串,为null可以设置这个字段不同填值,如果查询为null的字段,采用is null。

● 查询津贴为空的员工

select * from emp where comm is null;

41d60e0b718019826c12551ec61d3042.png

● 查询津贴不为空的员工

select * from emp where comm is not null;

a4e280e8c657f3efbe4360a9e4a00830.png

and

and表示并且的含义,表示所有的条件必须满足。

● 工作岗位为MANAGER,薪水大于2500的员工

select empno, ename, sal from emp where job='MANAGER' and sal>2500;

314ad1eb01e83bd0cb9b58e49b0c6a63.png

or

or,只要满足条件即可,相当于包含。

● 查询出job为manager和job为salesman的员工

select * from emp where job='MANAGER' or job='SALESMAN';

7b7c775e5b510f4717328d96c01231b9.png

表达式的优先级

● 查询薪水大于1800,并且部门代码为20或30的(错误的写法)

select * from emp where sal>1800 and deptno=20 or deptno=30;

fea7afae190c8332b5865dddb4194722.png

以上输出是错误的,由于表达式优先级导致的,首先查询出sal>1800 and deptno=20的员工,在和并上deptno=30的员工。

● 查询薪水大于1800,并且部门代码为20或30的(正确的写法)

select * from emp where sal>1800 and (deptno=20 or deptno=30);

efcc662a21e27336ddec8f59ea4ebb28.png

关于运算符的问题:不用记,没有把握尽量采用括号。

in

in表示包含的意思,完全可以采用or来表示,采用in会更简洁一些。

● 查询出job为manager和job为salesman的员工

select * from emp where job in('MANAGER','SALESMAN');

d2f5ce50f8cdb23d616cd259b3d299e1.png

not

● 查询job不等于MANAGER并且不能与SALESMAN的员工(第一种写法)

select * from emp where job <> 'MANAGER' and job <> 'SALESMAN';

9c09e3a6c96d3100b6e91c1695eb4a1c.png

● 查询job不等于MANAGER并且不能与SALESMAN的员工(第二种写法)

select * from emp where job not in('MANAGER','SALESMAN');

a9dd77adef41674dfe86897d837f957b.png

like

Like可以实现模糊查询,like支持%和下划线匹配。

● 查询姓名以M开头所有的员工

select * from emp where ename like ' M %';

430cef000913360f1585f9746584a2f1.png

● 查询姓名以T结尾的所有的员工

select * from emp where ename like '%T';

cab480a5456f457730ab86c4bcd33c5e.png

● 查询姓名中包含O的所有的员工

select * from emp where ename like '%O%';

2d5e037124e4b7c62cb4e03d12003310.png

● 查询姓名中第二个字符为A的所有员工

select * from emp where ename like '_A%';

533ea4b1632f5d765ea4d44ac1f75f82.png

Like中%和下划线的差别?

%匹配任意字符出现任意次数

下划线只匹配任意字符出现一次

Like语句可以应用到数值类型的数据上,但是如果不用‘’括起来的话,那么不可以使用%和下划线,类似于等号(=),如果使用‘’括起来的话,那么可以使用%和下划线,用法和字符类型的一样。因为SQL在处理时,首先将数字转换成字符串然后进行处理。

0c0f0677ac64453c287c7828175f8405.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值