目录
Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
between...and的主要功能是用户进行范围查询,语法如下:
select 字段 | 数值 between 最小值 and 最大值;
1.查询工资在 1500 ~ 3000 的所有员工信息
如果使用前面介绍的关系运算和逻辑运算,那么代码如下
现在来看一下使用 BETWEEN...AND 查询,代码如下
SQL> select *
2 from emp
3 where sal between 1500 and 3000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
已选择 6 行。
可以看到两者达到了相同的效果
关系与逻辑的组合属于两个运算符,而 BETWEEN...AND 是一个运算符,自然效率会更高
Oracle 中的所有运算符都不受数据类型的控制,在之前使用数字进行判断。除了数字之外,也可以 使用字符串或者日期进行判断。下面来看一下使用这个运算符进行日期判断
2.查询所有在 1981 年雇佣的员工信息
范围: 1981-01-01('01-1 月 -81') ~ 1981-12-31('31-12 月 -1981') 。这个时候可以按照已 有的数据结构通过字符串来描述日期
SQL> select *
2 from emp
3 where hiredate between '01-1月-81' and '31-12月-1981';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
已选择 10 行。
3.查询字符串字段姓名在 ALLEN 和 CLARK 之间的内容
SQL> select *
2 from emp
3 where ename between 'ALLEN' and 'CLARK';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
从数据库定义上来说,nul 属于一个未知的数据。任何情况下,如果任何一个数字 与 nul 进行计算,那么结果还是 null
SELECT null + 1 FROM emp ;
在某些数据列上是允许存在 nul 值的,但是对于 nul 不能够使用关系运算判断。关系可以判断的 是数据,nul 不是空字符串也不是数字 0,所以在 SQL 之中只能够通过 IS NUL 来判断为空,以及 IS NOT NULL(NOT 字段 IS NULL)判断不为空
4.查询所有领取佣金的员工信息(com 字段表示的是佣金,如果领 取,com 的内容不是 null)
?