WHERE字句
structured query language(非过程性的结构查询语言)
主要内容:
数据库怎么限制里面的数据;
数据库怎么排列里面的数据。
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
AND | TRUE | FALSE | NULL |
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
----OR
OR | TRUE | FALSE | NULL |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
----NLS_UPPER:转换成大写,不同语言都有用
----UPPER:不能处理特殊语言
--IN的查询转换问题:
我坚信初学者更习资料是自己亲手记录。
我坚信最好的加明白初学者学习的困难在哪里。
我坚信最好的学学习方法是自己动手。
我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
-----作者: 高鹏
我坚信最好的加明白初学者学习的困难在哪里。
我坚信最好的学学习方法是自己动手。
我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
-----作者: 高鹏