Oracle数据库-----------------------运算符

关于Oracle数据库的学习记录:

六、
在很多时候并不需要查询所有数据航内容,此时就可以通过WHERE子句来针对与要显示的数据行来进行筛选时可以使用的SQL语法结构变为如下形式:
SELECT [DISTINCT] * | 列名称 [别名],列名称 [别名]
,...FROM 表名称 [别名] [WHERE 过滤条件]
先FROM,再WHERE,再SELECT
如果要想实现限定查询,那么需要掌握一系列的限定查询的符号,有如下几种:
**关系运算符:>、<、>=、<=、<>、(!=);
**逻辑运算符:AND、OR、NOT;
**范围运算符:BETWEEN、AND;
**谓词范围:IN、NOTIN
**空判断:IS NULL、IS NOT NULL;
**模糊查询:LIKE

1. 关系运算符主要是进行大小关系比较操作使用的
范例:要求查询出所有基本工资高于1500的雇员信息
SELECT * FROM emp WHERE sal>1500;
范例:查询SMITH的完整信息
SELECT * FROM emp WHERE ename='SMITH';
在Oracle数据库之中,所有的数据是需要区分大小写关系的
范例:查询工资是5000的雇员信息
SELECT * FROM emp WHERE sal=5000;
发现"="可以在数字上使用,也可以在字符串上使用,在Oracle之中为了方便开发,所有运算符都可以不区分数据类型,而直接使用
范例:查询职位不是销售人员的雇员编号、姓名、职位
*查询职位不是销售人员,指的是针对数据行过滤
*雇员编号、姓名、职位指的是针对数据列的控制
SELECT empno,ename,job FROM emp WHERE job!='SALESMAN';
SELECT empno,ename,job FROM emp WHERE job<>'SALESMAN';
所有的过滤都采用条件的形式进行过滤

2. 如果说现在有多个条件要进行连接,那么就需要根据要求选择是与连接还是或连接
**与连接:所有的判断条件都要满足
**或连接:若干条件有一个满足即可
范例:查询出工资范围在1500~3000之间的雇员信息
*sal>=1500
*sal<=3000
*关系:两个条件必须同时满足才能显示内容
SELECT * FROM emp WHERE sal>=1500 AND sal<=3000;
范例:查询工资大于2000或者职位是办事人员的所有雇员信息
*sal>2000
*job='CLERK'
*关系:两个条件只要满足一个即可
SELECT * FROM emp WHERE sal>2000 OR job='CLERK';
在逻辑运算之中除了与和或之外还存在一个非的逻辑,非的逻辑是:如果条件结果为真,那么非之后的结果就是假
范例:查询所有工资小于2000的雇员信息
SELECT * FROM emp WHERE sal<2000
SELECT * FROM emp WHERE NOT sal>=2000
对于逻辑操作,有一点说明,不要写过于复杂的逻辑操作

3. 范围查询
在进行查询条件过滤的时候可以针对于某一个范围的数据进行过滤,使用BETWEEN和AND
BETWEEN 最小值(数字,日期)  AND 最大值
在此最小值(包含最小值)与最大值(包含最大值)之间的内容都满足条件
范例:查询工资在1500和2000之间的雇员(包含1500和2000)
SELECT * FROM emp WHERE sal>=1500 AND sal<=2000;
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 2000;
第一个查询需要匹配两个条件,而第一个查询只需要匹配一个条件
范例:查询所有在1981年雇佣的雇员
*1981-01-01和1981-12-31 '01-1月 -1981' '31-12月 -1981'
SELECT * FROM emp WHERE hiredate BETWEEN '01-1月 -1981' AND '31-12月 -1981';

4. 空判断
空在数据库上解释为不确定内容,但是需要注意的是,如果在数字列上使用null那么绝对不表示0,对于null的判断不能够使用关系运算符完成,空的操作只能够使用IS NULL和IS NOT NULL
范例:查询所有领取佣金的雇员信息(佣金存在,不为空)
SELECT * FROM emp WHERE comm IS NOT NULL;
SELECT * FROM emp WHERE NOT comm IS NULL;
任何的数据库,空的操作只能够使用以上两个标记来判断

5. IN操作符
IN操作符类似于BETWEEN...AND,但是BETWEEN...AND是给出了一个大的范围,而IN给出的是一个指定的可选范围
范例:要求查询出雇员编号是7369/7566/7788/9999的雇员信息
SELECT * FROM emp WHERE empno=7369 || empno=7566 || empno=7788 || empno=9999;
SELECT * FROM emp WHERE empno IN (7369,756,7788,9999);
在指定值查询的过程之中,IN的操作是最简短的
如果不在指定的范围之中可以使用NOT IN
SELECT * FROM emp WHERE empno NOT IN (7369,756,7788,9999);
SELECT * FROM emp WHERE NOT empno IN (7369,756,7788,9999);
注意:关于NOT IN与NULL的问题
**在使用NOT IN进行范围判断的时候,如果范围里面包含有NULL,那么不会有任何的结果返回
范例:使用IN操作中包含有NULL
SELECT * FROM emp WHERE empno IN (7369,756,7788,null);
范例:使用NOT IN操作中包含有NULL
SELECT * FROM emp WHERE empno NOT IN (7369,756,7788,null);
实际上使用WHERE最大的用处在于控制显示的数据行,再简单一点:别显示所有数据行,使用NOT IN的目的是为了查询部分数据行,但是如果有了null(某些数据永远不可能为空)就变成了查询全部了

6. 模糊查询:LIKE
可以在数据库之中执行数据的模糊查询,在使用LIKE的时候可以使用两个通配符
** "_"匹配任意的一位字符;
** "%"匹配任意的零位、一位或多位字符;
范例:查询姓名是以字母A开头的雇员信息
SELECT * FROM emp WHERE ename LIKE 'A%';
范例:查询姓名的第二个字母是以A开头的雇员信息
SELECT * FROM emp WHERE ename LIKE '_A%';
范例:查询姓名中任意位置包含A的雇员信息
SELECT * FROM emp WHERE ename LIKE '%A%';
注意:关于LIKE的两点说明
**LIKE可以应用在各种数据类型上,不一定非要是字符串
SELECT * FROM emp WHERE sal LIKE '%9%';
**在使用LIKE模糊查询的时候,如果不设置查询关键字,那么表示查询全部
SELECT * FROM emp WHERE ename LIKE '%%';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值