05-Oracle入门之where过滤

前端之家收集整理的这篇文章主要介绍了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 ;

字符和日期

@H_404_69@
  • 字符和日期要包含在单引号中。别名是双引号!
  • 字符大小写敏感,日期格式敏感。
  • 默认的日期格式是 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

    @H_404_69@
  • 使用 LIKE 运算选择类似的值
  • 选择条件可以包含字符或数字:
    @H_404_69@
  • % 代表零个或多个字符(任意个字符)。
  • _ 代表一个字符。
  • 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
    @H_404_69@
  • ‘%’和‘-’可以同时使用。
  • 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
    @H_404_69@
  • 可以使用 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,null);

    正确写法是

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

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

    逻辑运算

    优先级

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

    原文链接:https://www.f2er.com/oracle/210957.html

    猜你在找的Oracle相关文章