那么面对这样的操作,如果此时不使用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 ,需要编写的。