博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询...
阅读量:6068 次
发布时间:2019-06-20

本文共 5044 字,大约阅读时间需要 16 分钟。

博客分类:

比较运算符 >,<:大于,小于 >=.<=:大于等于,小于等于 =:等于 !=,<>,^=:不等于
逻辑运算符运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号
逻辑运算符 AND:逻辑与,表示两个条件必须同时满足 OR:逻辑或,表示两个条件中有一个条件满足即可 NOT:逻辑非,返回与某条件相反的结果
特殊运算符 [NOT] BETWEEN…AND…:用于测试是否在范围内 [NOT] IN (…):用于测试是否在列表中 [NOT] LIKE:用于进行模式匹配 IS [NOT] NULL:用于测试是否为空值 ANY SOME:同列表或查询中的每一个值进行比较,测试是否有一个满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 ALL:同列表或查询中的每一个值进行比较,测试是否所有的值都满足,前面必须使用的运算符包括=、!=、>=、<=、>、<等 [NOT] EXISTS:测试是否子查询至少返回一行
IN的用法 使用以下运算形式,可以显示值满足特定集合的结果: [NOT] IN (...) 显示职务为“SALESMAN',“CLERK”和“MANAGER”的雇员信息。 输入并执行查询:
Sql代码
  1. SELECT * FROM emp WHERE job IN ('SALESMAN','CLERK','MANAGER'); 
SELECT * FROM emp WHERE job IN ('SALESMAN','CLERK','MANAGER');
执行结果从略。 注意:如果在IN前面增加NOT,将显示职务不在集合列表中的雇员。以上用法同样适用于数值型集合,
多行子查询 如果子查询返回多行的结果,则我们称它为多行子查询。多行子查询要使用不同的比较运算符号,它们是IN、ANY和ALL。 查询工资低于任何一个“CLERK”的工资的雇员信息。 执行以下查询:
Sql代码
  1. SELECT  empno, ename, job,sal FROM emp 
  2.         WHERE   sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK'
  3.         AND job <> 'CLERK'
SELECT  empno, ename, job,sal FROM emp		WHERE   sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK')		AND job <> 'CLERK';
执行结果为:     
Sql代码
  1. EMPNO ENAME      JOB              SAL 
  2.         ------------------- ------------ ----------------- --------------------- 
  3.              7521 WARD       SALESMAN         1250 
  4.             7654 MARTIN     SALESMAN         1250 
EMPNO ENAME      JOB              SAL		------------------- ------------ ----------------- ---------------------     		 7521 WARD       SALESMAN         1250      		7654 MARTIN     SALESMAN         1250
说明:在emp表的雇员中有4个职务为“CLERK”,他们的工资分别是800、1100、950、1300。满足工资小于任何一个“CLERK”的工资的记录有2个,在这里使用了ANY运算符表示小于子查询中的任何一个工资。 注意:条件job <> 'CLERK'排除了职务是CLERK的雇员本身。 查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。 执行以下查询:
Sql代码
  1. SELECT  empno, ename,sal FROM emp 
  2.         WHERE sal > ALL(SELECT sal FROM emp WHERE job= 'SALESMAN'); 
SELECT  empno, ename,sal FROM emp		WHERE sal > ALL(SELECT sal FROM emp WHERE job= 'SALESMAN');
执行结果为:   
Sql代码
  1. EMPNO ENAME             SAL 
  2.     ---------------- ------------- ----------------------- 
  3.       7566 JONES               2975 
  4.       7698 BLAKE               2850 
  5.       7782 CLARK               2450 
  6.       7788 SCOTT               3000 
  7.       7839 KING                5000 
  8.       7902 FORD                3000 
EMPNO ENAME             SAL		---------------- ------------- -----------------------       7566 JONES           	   2975       7698 BLAKE          	   2850       7782 CLARK          	   2450       7788 SCOTT          	   3000       7839 KING           	   5000       7902 FORD           	   3000
    说明:在emp表的雇员中有4个职务为“SALESMAN”,他们的工资分别是1600、1250、1250、1500。在这里使用了ALL运算符,表示大于查询中所有的工资。 查询部门20中职务同部门10的雇员一样的雇员信息。 执行以下查询:
Sql代码
  1. SELECT  empno, ename, job FROM emp 
  2. WHERE   job IN (SELECT job FROM emp WHERE deptno=10) 
  3. AND deptno =20; 
SELECT  empno, ename, job FROM empWHERE   job IN (SELECT job FROM emp WHERE deptno=10)AND deptno =20;
执行结果为:   
Sql代码
  1. EMPNO ENAME          JOB 
  2.     ------------------ -------------- ---------------------- 
  3.       7369 SMITH        CLERK 
  4.       7876 ADAMS        CLERK 
  5.       7566 JONES        MANAGER 
EMPNO ENAME          JOB			------------------ -------------- ----------------------        7369 SMITH     	CLERK        7876 ADAMS      	CLERK        7566 JONES      	MANAGER
说明:在该训练中,使用IN运算符表示职务是子查询结果中的任何一个。部门10中有3种职务:MANAGER、PRESIDENT和CLERK,以上查询得到的是部门20中是这3种职务的雇员。
多列子查询 如果子查询返回多列,则对应的比较条件中也应该出现多列,这种查询称为多列子查询。以下是多列子查询的训练实例。 查询职务和部门与SCOTT相同的雇员的信息。 执行以下查询:
Sql代码
  1. SELECT  empno, ename, sal FROM emp 
  2.         WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788); 
SELECT  empno, ename, sal FROM emp		WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788);
执行结果为:     
Sql代码
  1. EMPNO ENAME      JOB 
  2.         ------------------ --------------- ---------------- 
  3.             7902 FORD        ANALYST 
EMPNO ENAME      JOB		------------------ --------------- ----------------      		7902 FORD        ANALYST
说明:在该例的子查询中返回两列,查询条件中也要出现两列,表示雇员的职务和部门应该和SCOTT的职务和部门相同。
LIKE的用法 使用LIKE操作符可完成按通配符查找字符串的查询操作,该操作符适合于对数据进行模糊查询。其语句法为: [NOT] LIKE 匹配模式 匹配模式中除了可以包含固定的字符之外,还可以包含以下的通配符: %:代表0个或多个任意字符。 _ :代表一个任意字符。 显示姓名以“S”开头的雇员信息。 输入并执行查询:
Sql代码
  1. SELECT * FROM emp WHERE ename LIKE'S%'
SELECT * FROM emp WHERE ename LIKE 'S%';
执行结果为:
Sql代码
  1. EMPNO ENAME     JOB             MGR HIREDATE     SAL   COMM     DEPTNO 
  2.         ------------- -------------- ------------------------- ---------- ------------------ ----------- ------------ ------------------ 
  3. 7369 SMITH    CLERK 7902 17-12月-80       800     20 
  4. 7788 SCOTT    ANALYST   7566 19-4月 -87   3000           20 
EMPNO ENAME    	JOB     		MGR HIREDATE     SAL   COMM     DEPTNO		------------- -------------- ------------------------- ---------- ------------------ ----------- ------------ ------------------7369 SMITH    CLERK 7902 17-12月-80       800     207788 SCOTT    ANALYST	7566 19-4月 -87   3000           20
说明:SMITH和SCOTT名字均以S开头,名字后边的字符和长度任意。 显示姓名第二个字符为“A”的雇员信息。 执行查询:
Sql代码
  1. SELECT * FROM emp WHERE ename LIKE'_A%'
SELECT * FROM emp WHERE ename LIKE '_A%';
说明:“_”代表第一个字符任意,第二个字符必须为“A”,“%”代表第二个字符后面的字符为任意字符,个数任意。
判断空值NULL 在表中,字段值可以是空,表示该字段没有内容。如果不填写,或设置为空则我们说该字段的内容为NULL。NULL没有数据类型,也没有具体的值,但是使用特定运算可以判断出来。这个运算就是: IS  [NOT] NULL 显示经理编号没有填写的雇员。 输入并执行查询:
Sql代码
  1. SELECT  ename, mgr FROM emp WHERE mgr ISNULL
SELECT  ename, mgr FROM emp WHERE mgr IS NULL;
执行结果为:
Sql代码
  1. ENAME     MGR 
  2.         ------------ --------------- 
  3.         KING 
ENAME     MGR		------------ ---------------		KING
注意:以下用法是错误的。 SELECT  ename, mgr FROM emp WHERE mgr=NULL;

转载于:https://www.cnblogs.com/caohs/archive/2013/04/22/3036657.html

你可能感兴趣的文章
什么是linux的ftp
查看>>
Python命令行解析argparse常用语法使用简介
查看>>
Spring 4 官方文档学习(十二)View技术
查看>>
jsp页面验证码(完整实例)
查看>>
学习建模 - UML
查看>>
Android解析WindowManager(一)WindowManager体系
查看>>
一个想法(续二):换个角度思考如何解决IT企业招聘难的问题!
查看>>
tomcat指定配置文件路径方法
查看>>
一些常见的关于Linux系统的问题
查看>>
推荐一款jQuery ColorPicked 颜色拾取器插件
查看>>
javaweb学习总结(二十三)——jsp自定义标签开发入门
查看>>
网络编程中的CAP & 有趣的存储框架(关系型、NoSQL)全图
查看>>
[Linux内核]ctrl-z/fg/bg/nohup/setsid/()与&/disown/screen
查看>>
VS没办法调试,直接退出,报错:1. 使用调试生成配置或禁用调试选项“启用‘仅我的代码’”。。。...
查看>>
C# 委托应用总结
查看>>
Linux驱动技术(七) _内核定时器与延迟工作
查看>>
裁判文书网采集说明
查看>>
Reverse Engineering Custom DataTypes -> GUID() in SQL Server to PostgreSQL
查看>>
配置Tomcat apr运行模式
查看>>
BZOJ3490 : Pa2011 Laser Pool
查看>>