Oracle的where语句和排序操作

where特点:

1、用于对数据的筛选

2、可以比较,逻辑操作

3、where 需要放到from后面

=========================================================

一、比较操作

比较操作包含:>   <    >=    <=    in   (not in)    between ... and ...     like 等

1、使用数字做条件

SQL>select ename,sal,deptno from emp where DEPTNO=10;

SQL>select * from emp where sal>1000;

2、使用字符做条件

SQL>select ename,sal,deptno from emp where ename=‘SCOTT‘;

注意:where后面的字符需要使用单引号引起来,并且where后的字符严格区分大小写

3、between ... and ... :限制数据在某个范围

SQL>select * from emp where sal between 1000 and 3000;

注意:between是包含关系。

4、in:使用枚举的形式查询数据

SQL>select * from emp where ename in (‘KING‘,‘SCOTT‘,‘ALLEN‘);

5、like:用于模糊匹配

%  :表示0个或者多个字符

_  :表示一个字符

①找到雇员名字以M开头的emp信息

SQL>select * from emp where ename like ‘%M‘;

②找到字符串中包含M的雇员信息

SQL>select * from emp where ename like ‘%M%‘;

③找到名字第二个字母为M的雇员信息

SQL>select * from emp where ename like ‘_M%‘;

6、注意: 可以使用escape转义%或_

SQL> select * from t11 where name like ‘%_%‘;

       NAME

       ---------

       aa_a

       aaa

SQL> select * from t11 where name like ‘%\_%‘ escape ‘\‘;

       NAME

       ----------

       aa_a

7、对null的处理

SQL>select * from emp where comm is null;

SQL>select * from emp where comm is not null;

=========================================================

二、逻辑操作

1、and   要求所有表达式为true,才能为true

2、or      所有表达式中只要有一个为true就返回true

3、not    取反

①查询部门编号为10,并且工资大于1500的人

SQL>select * from emp where sal>1500 and deptno=10;

②查询部门编号为10或者工资大于1500的人

SQL>select * from emp where sal>1500 or deptno=10;

③使用not,not表示取反

SQL>select * from emp where ename not in (‘KING‘,‘SCOTT‘,‘ALLEN‘);

=========================================================

三、where中条件的优先级

1、算术操作

2、比较操作

3、逻辑操作:not>and>or

①找到工作为管理员或者是分析员,并且工资大于2500的人

SQL>select * from emp where (job=‘MANAGER‘ or job=‘ANALYST‘) and sal >2500;

EMPNO     ENAME         JOB           MGR     HIREDATE      SAL      COMM   DEPTNO

----------   ----------  ------------- ---------- ------------ ---------- ---------- ----------

7566         JONES      MANAGER     7839     02-APR-81      2975                       20

7698         BLAKE      MANAGER     7839     01-MAY-81     2850                       30

7782         CLARK      MANAGER     7839     09-JUN-81      2450                       10

7788         SCOTT      ANALYST       7566     19-APR-87      3000                       20

7902         FORD       ANALYST        7566     03-DEC-81     3000                       20

=========================================================

四、排序

1、ASC   升序排列(默认)

2、DESC 降序排列

SQL>select ename,sal A from emp where comm is null  order by A;   默认是升序

SQL>select ename,sal A from emp where comm is null  order by A desc;

3、order by :可以使用数字

SQL>select * from emp order by 6;

4、多列排序

按照deptno 做降序排列,sal做升序排列。

SQL>select ename,deptno,sal from emp order by deptno desc,sal ;

SQL>select ename,deptno,sal from emp order by 2,3 desc;

时间: 2024-10-22 17:16:58

Oracle的where语句和排序操作的相关文章

oracle排序操作

查询排序最多的SQL语句: WITH sql_workarea AS (SELECT sql_id || '_' || child_number sql_id_child,         operation_type operation,         last_execution last_exec,         round(active_time / 1000000, 2) seconds,         optimal_executions || '/' || multipass

ORACLE中用rownum分页并排序的SQL语句

ORACLE中用rownum分页并排序的SQL语句 以前分页习惯用这样的SQL语句: select * from (select t.*,rownum row_num from mytable t order by t.id) b where b.row_num between 1 and 10 结果发现由于该语句会先生成rownum 后执行order by 子句,因而排序结果根本不对,后来在GOOGLE上搜到一篇文章,原来多套一层select 就能很好的解决该问题,特此记录,语句如下: sel

ORACLE 中 SQL语句优化

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):  ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.    (2) WHERE子句中的连接顺序.:  ORACLE采用自下而上的顺序解

Oracle之sql语句优化

项目中虽然使用了orm映射,但Oracle系统的优化还是很有价值的,这里从sql语句的角度对常用的语句做下总结. 1.from字段中的优化: Oracle安照从右到左的顺序加载表数据,应该把可以排除数据最多的表放到后面(基础表). 比如,在关联查询中,把课程表放到后面,成绩表放到前面,因为课程表数据一般比较少,关联的时候可以快速的过滤掉一些成绩数据. 2.where中的优化: 对可以过滤数据最多的,放到后面,原理也是Oracle执行从下到上(从右到左)的顺序. 3.使用列名替代*: 省去从字典表

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’ 如果字段值里包含单引号’ 需要

【Oracle】常用语句集合

1 oracle常用经典SQL查询 2 常用SQL查询: 3 4 1.查看表空间的名称及大小 5 6 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size 7 from dba_tablespaces t, dba_data_files d 8 where t.tablespace_name = d.tablespace_name 9 group by t.tablespace_name; 10 11 2.查看表空间物

Oracle 11g 学习3——表空间操作

一.表空间概述 表空间是Oracle中最大的逻辑存储结构,与操作系统中的数据文件相对应: 基本表空间:一般指用户使用的永久性表空间,用于存储用户的永久性数据 临时表空间: 主要用于存储排序或汇总过程中产生的临时数据: 大文件表空间:用于存储大型数据(例如LOB) 非标准数据块表空间:用于在一个数据库实例中创建数据块大小不同的表空间: 撤销表空间:用于存储事务的撤销数据,在数据恢复时使用. 二.创建表空间 语法: CREATE [ TEMPORARY | UNDO ] TABLESPACE tab

Oracle 查询(SELECT)语句(二)

?  简介 在前面的 Oracle 查询 SELECT 语句(一) 中介绍了 SELECT 常用的一些基本查询语法,接下来再来看 SELECT 更深入的一些查询功能和技巧,包括以下内容: 1.   All 与 Any 运算符 2.   分页查询(rownum) 3.   集合操作符(UNION.UNION ALL.INTERSECT.MINUS) 1.   All 与 Any 运算符 1)   All 运算符,表示满足给出列表中的所有值.通常用于以下场景: 1.   查出大于30号部门所有员工最

Oracle分页查询语句的写法(转)

分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHER