1.where子句
--查询30号部门员工的姓名,职位和工资
SELECT ename,job,sal,deptno FROM emp
WHERE deptno = 30;

--查询职位是manager的员工
SELECT * FROM emp
WHERE job = 'MANAGER';
--手动输入字符串要加单引号,并且区分大小写

-- 比较条件的两边的数据类型必须一致

--查询工资高于2000的员工信息
SELECT * FROM emp
WHERE sal > 2000;

--where字句后面必须是一个完整的逻辑表达式,结果要么为真要么为假
--在数据库中,这样的逻辑表达式通常是比较运算:=  >    <  >=    <=  <>(!=)

--比较条件可以是某列数据和手动输入的数据比较
--也可以是某两列数据进行比较
SELECT * FROM emp
WHERE comm > sal;

--where中不能出现列的别名
SELECT ename,job,sal,12*sal nianxin FROM emp
WHERE 12*sal < 25000;

--作为条件的列可以不出现在select后面
--为了查询结果的可读性,最好选择作为查询条件的列
SELECT ename,job,deptno FROM emp
WHERE sal < 1500;

2.比较运算符

--in(value1,value2,...valueN) 列表匹配
SELECT * FROM emp
WHERE job IN ('CLERK','PRESIDENT','SALESMAN');

--between 最小值 and 最大值,范围匹配
SELECT * FROM emp
WHERE sal BETWEEN 1500 AND 3000;

--like,模糊匹配
--% 表示任意个任意字符
--_ 表示一个任意字符
SELECT * FROM emp
WHERE ename LIKE 'A%';

SELECT * FROM emp
WHERE ename LIKE '%S';

SELECT * FROM emp
WHERE ename LIKE '%A%';

SELECT * FROM emp
WHERE ename LIKE '_A%';

SELECT * FROM emp
WHERE ename LIKE '____';

--is null,匹配空值(不能写成 = null)
SELECT * FROM emp
WHERE comm IS NULL;

3.逻辑运算符

--and 与运算,多个条件必须同时满足才能返回结果
SELECT * FROM emp
WHERE sal > 1500
AND deptno = 20;

--or 或运算,多个条件只需要满足其中任意一个条件就可以返回结果
SELECT * FROM emp
WHERE sal > 1500
OR deptno = 20;

--not 非运算,返回不满足条件的结果
SELECT * FROM emp
WHERE NOT sal > 1500;

SELECT * FROM emp
WHERE ename NOT LIKE '%A%';

4.运算优先级:数学运算>比较运算>not>and>or
--使用括号来表示或者改变运算优先级
SELECT * FROM emp
WHERE sal > 1500
OR deptno = 20
AND job IN ('CLERK','MANAGER');

SELECT * FROM emp
WHERE (sal > 1500
OR deptno = 20)
AND job IN ('CLERK','MANAGER');

5.order by排序
--order by永远在查询语句的最后
--asc 升序排列,默认可以不写
--desc 降序排列
SELECT * FROM emp
ORDER BY sal;

--字符和日期的数据类型也可以排序
SELECT * FROM emp
WHERE deptno = 20
ORDER BY hiredate DESC;

SELECT * FROM emp
ORDER BY ename ASC;

--order by中可以出现列的别名
SELECT ename,job,sal,12*sal nianxin FROM emp
ORDER BY nianxin DESC;

--order by后面排序的列可以不出现在select
--选择排序的列可以提高查询结果的可读性
SELECT ename FROM emp
ORDER BY hiredate;

--多列排序
SELECT * FROM emp
ORDER BY deptno,sal DESC;

【练习】
1.查询emp表,显示薪水大于2000,且工作类别是MANAGER的雇员信息
SELECT * FROM emp
WHERE sal > 2000
AND job = 'MANAGER';

2.查询emp表,显示年薪大于30000,工作类别不是MANAGER的雇员信息
SELECT ename,job,sal,deptno,12*sal nianxin FROM emp
WHERE 12*sal > 30000
AND job <> 'MANAGER';

3.查询emp表, 显示薪水在1500到3000之间,工作类别以“M”开头的雇员信息
SELECT * FROM emp
WHERE sal BETWEEN 1500 AND 3000
AND job LIKE 'M%';

4.查询emp表,显示佣金为空并且部门号为20或30的雇员信息(佣金=薪水SAL+津贴COMM)
SELECT ename,job,sal,comm,deptno,sal+comm yongjin FROM emp
WHERE sal+comm IS NULL
AND deptno IN (20,30);

5.查询emp表,显示佣金不为空或者部门号为20的雇员信息,
要求按照薪水降序排列 (佣金=薪水+津贴)
SELECT ename,job,sal,deptno,sal+comm yongjin FROM emp
WHERE sal+comm IS NOT NULL
OR deptno = 20
ORDER BY sal DESC;

6.查询emp表,显示年薪大于30000工作类别不是MANAGER,
且部门号不是10或40的雇员信息,要求按照雇员姓名进行排列
SELECT ename,job,sal,deptno,12*sal nianxin FROM emp
WHERE 12*sal > 30000
AND job <> 'MANAGER'
AND deptno NOT IN (10,40)
ORDER BY ename;

Oracle-DQL 2- 限定和排序的更多相关文章

  1. oracle之数据限定与排序

    数据限定与排序 6.1 简单查询语句执行顺序 from, where, group by, having, order by, select where限定from后面的表或视图,限定的选项只能是表的 ...

  2. Oracle Where查询语句与排序语句

    SQL限制和排序数据 1.Oracle的Where条件值,字符串和日期都必须以单引号括起来. 模糊查询: like 'S%' 以S开头的任意字符 like 'S_' 以S开头的任意字符结尾的两个字符 ...

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

    ORACLE中用rownum分页并排序的SQL语句 以前分页习惯用这样的SQL语句: select * from (selectt.*,rownum row_num frommytable t ord ...

  4. Oracle数据库之五 限定查询和排序显示

    五.限定查询和排序显示 5.1.限定查询 5.1.1 认识限定查询 例如:如果一张表中有 100w 条数据,一旦执行了 " SELECT * FROM 表 " 语句之后,则将在屏幕 ...

  5. 关于Oracle数据库中SQL空值排序的问题

    在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果.   如 select * from tableTest order by VISITS desc ...

  6. Oracle中针对中文进行排序[Z]

    在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RA ...

  7. Oracle 实现 mysql 的 find_in_set 排序!

    oracle 实现类似MYSQL的 find_in_set 排序,函数 decode: select * from tb_info_game where gameid in(23,20,19,26,1 ...

  8. oracle 树形表结构查询 排序

    oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...

  9. oracle 字符串 正则表达式 拆分,排序,合并

    需求,表数据如:要求圈中的数据,必须根据线芯有序排列. 思路: 1.首先根据分号分隔元素.oracle 很蛋疼,没有提供字符串分隔函数,网上倒是多觉得有点麻烦,耐着性子继续网上找了下,还真让我找到一篇 ...

  10. ORACLE中使用row_number over()排序

    from:http://blog.csdn.net/iw1210/article/details/11937085 意图:实现select top 1 * from tablename Oracle  ...

随机推荐

  1. 《30天自制操作系统》学习笔记--番外篇之Mac环境下的工具介绍

    这几天又有点不务正业了,书也没看,一直在搞这个破环境,尝试各种做法,网上各种垃圾信息,浪费了很多时间,说的基本都是废话,不过还是找到了一些,赶紧写下来,不然这个过几天又忘了 首先是环境,我用的是Max ...

  2. Java字节码例子解析

    举个简单的例子: public class Hello {     public static void main(String[] args) {         String string1 = ...

  3. Django常见命令

    在Django的使用过程中需要使用命令让Django进行一些操作,例如创建Django项目,启动Django程序,创建新的APP,数据库迁移等. 1. 创建Django项目 新建一个文件夹来存放项目文 ...

  4. UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)

    和普通的线段树不同的是,查询x~y的话,给出的答案是第一个值的一倍加上第二个值的两倍一直到第n个值的n倍. 思路的话,就是关于query和pushup的方法.用一个新的变量sum记录一下这个区间里面按 ...

  5. springMVC课程笔记(一)springMVC架构原理分析

    一.springMVC架构原理分析 1.先搞清楚什么是springMVC: 其实springMVC是spring框架中的一个模块,springMVC和spring无需通过中间整合层整合,SpringM ...

  6. Linux dirname 和 basename

    [参考文章]:Linux shell - `dirname $0` 定位到运行脚本的相对位置 [参考文章]:Linux命令之basename使用 1. dirname $0 获取脚本文件所在的目录信息 ...

  7. 解决Sublime Text3中文显示乱码问题

    一.安装包管理器 使用Ctrl+~快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码 import urllib.request,os; pf = 'Package ...

  8. JVM | 分代垃圾回收策略的基本概念以及过程

    一.为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对 ...

  9. Android性能优化-电量优化

    前言 电量优化,这个名词在传统PC时代,我们基本很少听见.然而到了诺基亚时代,我们也同样很少关注.直到了移动互联的智能机时代.电量优化才被慢慢的重视起来.可能的原因如下: 移动设备,不能一直使用电源供 ...

  10. CSS 优先级法则

    样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...