按部就班学Oracle之限定查询

在以前的简单查询之中,是将全部记录进行显示,可是如今能够对显示的记录进行过滤的操做,而这就属于查询的工做了,限定查询就是在以前语法的基础上增长了一个WHERE子句,用于指定限定条件 ,此时语法以下:数据库

SELECT [DISTINCT] *|字段 [别名] [字段] [别名]
FROM 表名称 [别名]
[WHERE 条件]

在WHERE子句以后能够增长多个条件,最多见的条件就是基本的关系运算:>、>=、<、<=、!=、BETWEEN……AND、LIKE、IN、IS NULL、AND、OR、NOT;ide

1、关系运算搜索引擎

SELECT * FROM emp having sal >1500 ;

范例1:要求查询出基本工资高于1500的全部雇员信息
spa

clip_p_w_picpath002

附:如何缩小列距?col 字段名 format a103d

范例2:查询出全部职位是办事员的雇员信息orm

SELECT * FROM emp WHERE job='CLERK' ; //clerk必须大写!

clip_p_w_picpath004

多个条件,而多条件之间可使用AND或OR进行链接操做。blog

范例3:查询工资在1500-3000之间的所有雇员信息。索引

SELECT * FROM emp WHERE sal>=1500 AND sal<=3000 ;

clip_p_w_picpath006

方法2:利用BETWEEN …AND…语句查询工资在1500-3000之间的所有雇员信息。ip

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;

clip_p_w_picpath008

范例4:查询出职位是办事员,或者是销售人中的所有信息。开发

SELECT * FROM emp WHERE job='CLERK' OR job='SALESMAN' ;

clip_p_w_picpath010

范例5:查询出职位是办事员,或者是销售人中的所有信息,而且要求这些雇员的工资大于1200

SELECT * FROM emp WHERE (job='CLERK' OR job='SALESMAN') AND sal>1200 ;

clip_p_w_picpath012

范例6: 查询不是办事员的雇员信息。

SELECT * FROM emp WHERE job!='CLERK'; //方法1
SELECT * FROM emp WHERE job<>'CLERK'; //方法2
SELECT * FROM emp WHERE Not job='CLERK'; //方法3

clip_p_w_picpath014

2、范围判断:BETWEEN …AND…

“BETWEEN 最小值AND 最大值”,表示的是一个范围间的判断过程。

范例7:要求查询出基本工资在1500-3000之间的雇员信息。

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000 ;

clip_p_w_picpath016

clip_p_w_picpath018

范例8如今对BETWEEN…AND…操做求反

SELECT * FROM emp WHERE NOT sal BETWEEN 1500 AND 3000 ;
SELECT * FROM emp WHERE NOT (sal BETWEEN 1500 AND 3000) ;

clip_p_w_picpath020

“BETWEE…AND…”操做符不光针对数字有用,对日期也一样有用。

示例9:要求查询出在1981年雇佣的所有信息

* 时间范围:1981-01-01 – 1981-12-31,使用hiredate字段表示雇佣日期;

* hiredate字段上的内容可使用字符串表示:’01-1月-1981’ ~ ’31-12月-81’

SELECT * FROM emp WHERE hiredate BETWEEN '1-1月-1981' AND '31-12月-81'; //注意:查询日期表示法!

clip_p_w_picpath022

3、判断是否为空:is(NOT)NULL

使用此语法能够判断某一个字段上的内容是否为“null”,可是null和数字0以及空字符串是2个概念。

范例10: 查询出全部领取奖金的雇员信息。

SELECT * FROM emp WHERE comm IS NOT NULL ; //方法1
SELECT * FROM emp WHERE NOT comm IS NULL ; //方法2

clip_p_w_picpath024

clip_p_w_picpath026

范例11:查询出全部不领取奖金的雇员

SELECT * FROM emp WHERE comm IS NULL ;

clip_p_w_picpath028

4、指定范围的判断:IN操做符 (重要!)

IN操做符表示的是指定一个查询的范围,以下所示查询要求:

范例12:查询出雇员编号是736九、756六、7799的雇员信息

* 若是按照最先的作法,使用OR操做完成;

* 若是如今使用了新的操做符IN的话,则代码简单了:

SELECT * FROM emp WHERE empno=7369 OR empno=7566 OR empno=7799 ; //方法1
SELECT * FROM emp WHERE empno IN(7369,7566,7799); //方法2

clip_p_w_picpath030

而若是如今使用的是NOT IN呢?则表示不在指定的范围之中。

SELECT * FROM emp WHERE empno NOT IN(7369,7566,7799) ;

clip_p_w_picpath032

注意:关于NOT NULL的问题!

* 若是如今使用了IN操做符,查询的范围之中存在了null,不影响查询;

SELECT * FROM emp WHERE empno IN(7369,7566,null) ;

clip_p_w_picpath034

* 若是如今使用了NOT IN操做符,查询的范围之中存在了null,则不会有任何的查询结果返回;

SELECT * FROM emp WHERE empno NOT IN(7369,7566,null) ;

clip_p_w_picpath036

重点:对于这个限制如今先做为特色记住,之后会讲解为何NOT IN之中不能出现null,并且记住了

若是NOT IN中出现了null,则表示的就是查询所有数据。

5、模糊查询: LIKE子句

LIKE子句的功能是提供了模糊查找的操做,例如:某些程序上出现的搜索操做,都属于LIKE子句的实现,可是必须提醒的,搜索引擎上的查询可不是LIKE。

可是要想使用LIKE子句则必须认识两个匹配符号:

* 匹配单个字符:_ ; -> 1 个

* 匹配任意多个字符:% ; -> 0个,1个,多个

范例13:要求查询雇员姓名中以字母A开头的所有雇员信息。

SELECT * FROM emp WHERE ename LIKE 'A%' ;

clip_p_w_picpath038

范例14:要求查询出雇员姓名中第二个字母是A的所有信息。

SELECT * FROM emp WHERE ename LIKE '_A%' ;

clip_p_w_picpath040

范例15:要求查询出雇员姓名中带有字母A的雇员信息。

SELECT * FROM emp WHERE ename LIKE '%A%' ;

clip_p_w_picpath042

如今使用NOT操做,对操做进行求反的功能:

SELECT * FROM emp WHERE ename NOT LIKE '%A%' ;

clip_p_w_picpath044

可是对于LIKE子句,不必定只能在字符串数据上表示,能够在任意的数据上表示:

SELECT * FROM emp WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%1$';

clip_p_w_picpath046

说明:关于LIKE子句的使用

在开发之中,数据库的模糊查询确定使用LIKE子句,可是在使用LIKE子句的时候有一个最大的注意点:若是在模糊查询上不设置任意的查询关键字的话(如:%%),则表示查询所有记录:

SELECT * FROM emp WHERE ename LIKE '%%' OR hiredate LIKE '%%' OR sal LIKE '%%' ;

clip_p_w_picpath048

   这一个特色能够帮助用户节约不少代码,因此必定要记住!

相关文章
相关标签/搜索