05-Oracle入门之where过滤

这里说的过滤主要是在查询中过滤,也就是在结合select语句使用过滤功能!主要用的是where子句!

使用WHERE 子句,将不满足条件的行/记录过滤掉。

where子句

WHERE 子句紧随 FROM 子句。

SELECT  *|{[DISTINCT] column|expression [alias],...}
FROM    table
[WHERE  condition(s)];

基本模式

select ....
from emp
where colname1 = 20
where colname1 <  20
where colname1 < 20
where colname2 between 1000 and 200
where colname2 in (10, 20)

举例如下

SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

字符和日期

  • 字符和日期要包含在单引号中。别名是双引号!
  • 字符大小写敏感,日期格式敏感。
  • 默认的日期格式是 DD-MON-RR

获取当前日期:

select sysdate from dual;

获取系统配置参数

select * from v$nls_parameters; 

设置系统日期格式

alter session set NLS_DATE_FORMAT='yyyy-mm-dd'

还原系统日期格式

alter session set NLS_DATE_FORMAT='DD-MON-RR'

应用示例

select * from emp where hiredate >'1981-1-1';

比较运算

这里写图片描述

赋值使用 :=符号

SQL> select ename,sal from emp where sal <= 3000;

ENAME         SAL
---------- ----------
SMITH         800
ALLEN        1600
WARD         1250
JONES        2975
MARTIN       1250
BLAKE        2850
CLARK        2450
SCOTT        3000
TURNER       1500
ADAMS        1100
JAMES         950
FORD         3000
MILLER       1300

13 rows selected.

其它比较运算

这里写图片描述

BETWEEN…AND…

SQL> select ename,sal from emp where sal between 2500 and 3000;

ENAME         SAL
---------- ----------
JONES        2975
BLAKE        2850
SCOTT        3000
FORD         3000

IN

SQL> select empno,ename,sal,mgr from emp where mgr in(7698,7902);

     EMPNO ENAME         SAL    MGR
---------- ---------- ---------- ----------
      7369 SMITH         800       7902
      7499 ALLEN        1600       7698
      7521 WARD         1250       7698
      7654 MARTIN       1250       7698
      7844 TURNER       1500       7698
      7900 JAMES         950       7698

6 rows selected.

LIKE

  • 使用 LIKE 运算选择类似的值
  • 选择条件可以包含字符或数字:
    • % 代表零个或多个字符(任意个字符)。
    • _ 代表一个字符。
SQL> select * from emp where ename like 'S%';

     EMPNO ENAME      JOB          MGR HIREDATE     SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK       7902 17-DEC-80        800            20
      7788 SCOTT      ANALYST         7566 19-APR-87       3000            20
  • ‘%’和‘-’可以同时使用。
SQL> select * from emp where ename like '_L%';

     EMPNO ENAME      JOB          MGR HIREDATE     SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300     30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850            30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450            10
  • 可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号。
    回避特殊符号要使用转义符。例如:将%转为\%_转为\_,然后再加上ESCAPE ‘\’即可。
SELECT job_id
FROM   jobs
WHERE  job_id LIKE ‘IT\_%‘ escape ‘\‘;

过滤中的空值===NULL

使用 IS (NOT) NULL 判断空值。

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

查询10 20号部门的员工信息

select * from emp  where deptno in (10, 20);

或者

select * from emp where deptno in (10, 20, null);

说明集合中如果存在空值NULL,是可以使用in的。
但是—not in就不是这样了!!!!

查询不是10 20号部门的员工信息

这是错误的写法

select * from emp where deptno not in (10, 20, null);

正确写法是

select * from emp where deptno not in (10, 20);

结论:如果集合中含有空值,不能使用not in 操作符; 但可使用in操作符。not in遇上空值 ,则 where 条件表达式永远不成立!

逻辑运算

这里写图片描述

优先级

可以使用括号改变优先级顺序

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值