WHERE字句


主要内容:
数据库怎么限制里面的数据;
数据库怎么排列里面的数据。
WHERE子句:

--WHERE字句起到的是对数据库查询结果集的限制作用
----[WHERE condition(s)]
------[]代表可选,意思是WHERE字句是可以没有的
------(s)也就是说条件是可以多个的

----WHERE条件的三个要素
------列名
------比较条件
--------不等于的三种形式!=、<>、^=

SQL > select count( *) from emp;

  COUNT( *)
----------
        14

SQL > select count( *) from emp where empno^ = 7788;

  COUNT( *)
----------
        13

------between and 是有边界的,意思是包括边界值的

------常数、值列表
--------常数的特征1、字符串和日期必须用引号括起来;2、字符串是大小写敏感

------like走索引的问题:like '%XX'是不走索引的,基于索引的原理
SQL > select * from emp where empno = '7788';

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7788 SCOTT      ANALYST         7566 09 - 2月 - 82           3000                     20


执行计划
----------------------------------------------------------
Plan hash value: 4024650034

--------------------------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |     38 |     1   ( 0)| 00:00: 01 |
|   1 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |     38 |     1   ( 0)| 00:00: 01 |
| *   2 |   INDEX UNIQUE SCAN         | EMP_PK |     1 |       |     0   ( 0)| 00:00: 01 |
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

    2 - access( "EMPNO" = 7788)


统计信息
----------------------------------------------------------
          0   recursive calls
          0  db block gets
          2  consistent gets
          0  physical reads
          0  redo size
        772  bytes sent via SQL *Net to client
        405  bytes received via SQL *Net from client
          1   SQL *Net roundtrips to / from client
          0  sorts (memory)
          0  sorts (disk)
          1   rows processed
有索引,且走索引
SQL > select * from emp where empno like '%88';

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7788 SCOTT      ANALYST         7566 09 - 2月 - 82           3000                     20


执行计划
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     38 |     3   ( 0)| 00:00: 01 |
| *   1 |   TABLE ACCESS FULL| EMP  |     1 |     38 |     3   ( 0)| 00:00: 01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

    1 - filter(TO_CHAR( "EMPNO") LIKE '%88')


统计信息
----------------------------------------------------------
          0   recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
        864  bytes sent via SQL *Net to client
        416  bytes received via SQL *Net from client
          2   SQL *Net roundtrips to / from client
          0  sorts (memory)
          0  sorts (disk)
          1   rows processed
不能走索引,走全表扫描

--------except 逃避符 一般用来处理 字符串里面的特色字符 例如 '\'
------null的特征之一就是不能用比较等于或者不等于
SQL > select * from emp where comm ! = null;

未选定行

SQL > select * from emp where comm = null;

未选定行
--逻辑运算
----AND
ANDTRUEFALSENULL
TRUETRUEFALSENULL
FALSEFALSEFALSEFALSE
NULLNULLFALSENULL
----OR
ORTRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL
----NLS_UPPER:转换成大写,不同语言都有用
----UPPER:不能处理特殊语言
--IN的查询转换问题:






转载于:https://my.oschina.net/u/1582282/blog/309114

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值