05-Oracle入门之where过滤
来源:互联网 发布:淘宝卖家骂人扣几分 编辑:程序博客网 时间:2024/06/04 01:12
这里说的过滤主要是在查询中过滤,也就是在结合select语句使用过滤功能!主要用的是where子句!
使用WHERE 子句,将不满足条件的行/记录过滤掉。
where子句
WHERE 子句紧随 FROM 子句。
SELECT *|{[DISTINCT] column|expression [alias],...}FROM table[WHERE condition(s)];
基本模式
select ....from empwhere colname1 = 20where colname1 < 20where colname1 < 20where colname2 between 1000 and 200where colname2 in (10, 20)
举例如下
SELECT employee_id, last_name, job_id, department_idFROM employeesWHERE 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 800ALLEN 1600WARD 1250JONES 2975MARTIN 1250BLAKE 2850CLARK 2450SCOTT 3000TURNER 1500ADAMS 1100JAMES 950FORD 3000MILLER 130013 rows selected.
其它比较运算
BETWEEN…AND…
SQL> select ename,sal from emp where sal between 2500 and 3000;ENAME SAL---------- ----------JONES 2975BLAKE 2850SCOTT 3000FORD 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 76986 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_idFROM jobsWHERE job_id LIKE ‘IT\_%‘ escape ‘\‘;
过滤中的空值===NULL
使用 IS (NOT) NULL 判断空值。
SELECT last_name, manager_idFROM employeesWHERE 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
- 05-Oracle入门之where过滤
- Oracle select ---------having条件过滤与where条件过滤
- oracle-having条件过滤与where条件过滤
- Oracle select ---------having条件过滤与where条件过滤
- WHERE&过滤和排序
- 过滤数据-----where子句
- WHERE NOT EXISTS 过滤
- 数据where条件过滤
- 6 过滤数据:where
- oracle 之where子句和having子句
- 第四章 select where过滤
- 【MySql】过滤数据where语句
- Oracle数据库之过滤和排序
- C#3.0入门系列(五)-之Where操作
- C#3.0入门系列(五)-之Where操作
- oracle练习之查询1(where等)
- Oracle之Where子句中常用的运算符
- ORACLE SQL开发where子句之case-when
- struts2——action返回参数的方法总结
- HTML入门学习笔记--体验CSS(1)
- P1126 机器人搬重物
- 一份年总结的感想
- python+处理日志+处理URL防止SQL注入
- 05-Oracle入门之where过滤
- web 表单提交按钮的测试点
- APScheduler应用
- 【redis】——高级应用(1)
- 《操作系统原理》中的小的知识点-总结2
- android复合控件的学习
- (牛客)无判断max
- SpringMVC运行解析
- Microsoft Visual Studio正忙 怎么解决