Oracle数据库之限定查询和排序显示详解(3)

那么面对这样的操作,如果此时不使用IN判断符就可以利用多个条件并且使用OR 进行连接。

SELECT * FORM emp WHERE empno = 7369 OR empno = 7788 OR empno = 7566;

下面使用优秀代码 IN 实现

SELECT * FORM emp WHERE empno IN (7369,7788,7566);

范例:现在查询除了7369,7788,7566之外的雇员信息

SELECT * FORM emp WHERE empno NOT IN (7369,7788,7566);

但是在使用NOT IN 操作的时候有一点需要注意,关于NULL的问题:

如果使用的是IN 操作符判断的范围数据之中包含了NULL,那么不会影响最终的查询结果。

SELECT * FORM emp WHERE empno IN (7369,7788,null);

但是如果使用的是NOT IN,里面有NULL,直接的后果就是没有任何数据显示。

SELECT * FORM emp WHERE empno NOT IN (7369,7788,null);

使用NOT IN 或 IN 其目的只是显示部分内容,如果说现在有一列数据不可能为NULL,并且 NOT IN 里面判断 null 的条件满足了,那么就表示的是查询全部数据。这样就有可能导致取得的数据量过多导致程序死机。

所以,NOT IN 中强加了一个限制,不能有 null,有 null 就没有数据,这是一个死限制。

5.1.3.4 模糊查询: LIKE ,NOT LIKE

语法:

满足模糊查询:字段|值 LIKE 匹配标记

不满足模糊查询:字段|值 NOT LIKE 匹配标记

如果现在想对查询某一列进行模糊查询,可以使用 LIKE 子句完成,通过 LIKE 可以进行关键字的模糊查询,在 LIKE 子句中有两个通配符:

百分号(%):可以匹配任意类型和长度的字符,如果是中文则使用两个百分号(%%)

下划线(_):匹配单个任意字符,它常用来限制表达式的字符长度

范例:查询出雇员姓名是以 S 开头的全部雇员信息

证明 S 之后的内容可以是任意的数据,可能是 0位、1位或者多位。

SELECT * FORM emp WHERE ename LIKE 'S%';

范例:查询出雇员姓名的第二个字母是 M 的全部雇员信息

现在只是第二个字母,那么证明第一个字母可以任意了,所以使用 “_” 。

SELECT * FORM emp WHERE ename LIKE '_M%';

范例:查询出雇员姓名中任意位置包含字母 F 的雇员信息

现在可能是开头,也可能是结尾,或者是在中间,所以就必须考虑到前后都有的问题,那么使用% 。

SELECT * FORM emp WHERE ename LIKE '%F%';

范例:查询雇员姓名长度为6或者是超过6个的雇员信息。

姓名的长度为6,那么肯定可以写6个 “_”,如果可以超过6,就加一个% 。

SELECT * FORM emp WHERE ename LIKE '______%';

范例:查询出雇员基本工资中包含1 或者是在81年雇佣的全部雇员

在之前的所有查询之中都是针对于字符数据进行的操作,而对于 LIKE 而言,也可以在数字或者;日期类型上使用。

SELECT * FORM emp WHERE sal LIKE '%1%' OR hiredate LIKE (%81%);

但是有一点需要提醒的是,如果在设置模糊查询的时候不设置关键字,就表示查询全部,如:

SELECT * FORM emp WHERE sal LIKE '%%' OR hiredate LIKE (%%) OR ename LIKE '%%' OR job LIKE '%%';

​ 结果显示全部数据。

范例:找出部门10中所有经理,部门20中所有办事员,既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料,并且要求这些雇员姓名之中含有字母 S 或字母 K。

现在存在于以下几个条件:

条件一:10部门的经理

条件二:20部门的办事员

条件三:不是经理和办事员,但是薪金大于或等于2000

条件四:以上所有条件满足之后再过滤,包含字母 S 或字母 K

SELECT * FORM emp WHERE ((deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK') OR (job NOT IN (MANAGER,CLERK) AND sal >= 2000)) AND (ename LIKE '%S% OR ename LIKE '%K%');

小结:

限定排序主要使用 WHERE 子句,用于对选取的数据进行控制。

限定查询主要的运算符:关系运算、BETWEEN...AND、IN、IS NULL、LIKE

5.2、排序显示 5.2.1 认识排序

传统数据查询的时候只会按照设置的主键排序。如果现在希望对指定的列进行排序的操作,那么就必须通过 ORDER BY 子句完成控制。

5.2.2 排序语法 SELECT [DISTINCT] * |列名称 [AS] 列别名,列名称 [AS] 列别名 FORM 表名称 表别名 [WHERE 条件(S)] [ORDER BY 排序的字段|列索引序号 ASC | DESC, 排序的字段2 ASC | DESC ...]...;

在 ORDER BY 子句之中可以指定要进行排序的字段,而后字段有两种排序模式:

升序:ASC ,默认

降序:DESC ,需要编写的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8c83d1517b28875ac8489f9fbbccb525.html