Oracle-DQL 2- 限定和排序
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- 限定和排序的更多相关文章
- oracle之数据限定与排序
数据限定与排序 6.1 简单查询语句执行顺序 from, where, group by, having, order by, select where限定from后面的表或视图,限定的选项只能是表的 ...
- Oracle Where查询语句与排序语句
SQL限制和排序数据 1.Oracle的Where条件值,字符串和日期都必须以单引号括起来. 模糊查询: like 'S%' 以S开头的任意字符 like 'S_' 以S开头的任意字符结尾的两个字符 ...
- ORACLE中用rownum分页并排序的SQL语句
ORACLE中用rownum分页并排序的SQL语句 以前分页习惯用这样的SQL语句: select * from (selectt.*,rownum row_num frommytable t ord ...
- Oracle数据库之五 限定查询和排序显示
五.限定查询和排序显示 5.1.限定查询 5.1.1 认识限定查询 例如:如果一张表中有 100w 条数据,一旦执行了 " SELECT * FROM 表 " 语句之后,则将在屏幕 ...
- 关于Oracle数据库中SQL空值排序的问题
在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果. 如 select * from tableTest order by VISITS desc ...
- Oracle中针对中文进行排序[Z]
在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RA ...
- Oracle 实现 mysql 的 find_in_set 排序!
oracle 实现类似MYSQL的 find_in_set 排序,函数 decode: select * from tb_info_game where gameid in(23,20,19,26,1 ...
- oracle 树形表结构查询 排序
oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...
- oracle 字符串 正则表达式 拆分,排序,合并
需求,表数据如:要求圈中的数据,必须根据线芯有序排列. 思路: 1.首先根据分号分隔元素.oracle 很蛋疼,没有提供字符串分隔函数,网上倒是多觉得有点麻烦,耐着性子继续网上找了下,还真让我找到一篇 ...
- ORACLE中使用row_number over()排序
from:http://blog.csdn.net/iw1210/article/details/11937085 意图:实现select top 1 * from tablename Oracle ...
随机推荐
- word文档的图片怎么保存到ueditor上
word图片转存,是指UEditor为了解决用户从word中复制了一篇图文混排的文章粘贴到编辑器之后,word文章中的图片数据无法显示在编辑器中,也无法提交到服务器上的问题而开发的一个操作简便的图片转 ...
- Noip2016 提高组 Day2 T1 组合数问题
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- luogu3629
P3629 [APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通 ...
- C#中如何去掉字"/0"
string str = "you/0are/0sweet/0"; str = str.replace("/0","")); 备忘一下
- JS广度优先查找无向无权图两点间最短路径
广度优先查找无向无权图两点间最短路径,可以将图看成是以起点为根节点的树状图,每一层是上一层的子节点,一层一层的查找,直到找到目标节点为止. 起点为0度,与之相邻的节点为1度,以此类推. // 广度优先 ...
- yum异常: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
http://people.centos.org/hughesjr/chromium/6/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 ...
- Telerik JustDecompile
Free. For everyone. Forever. With an open source decompilation engine https://www.telerik.com/produc ...
- java不用中间变量交换两个值
public void changeVal(){ int a = 2; int b = 3; System.out.println("交换前 a:"+a+",b:&quo ...
- linux下如何基于已有容器创建image并运行?
1. 通过docker ps命令先找到容器id,示例如下,123456789012就是我们要找的 jello@~$ docker ps CONTAINER ID IMAGE COMMAND CREAT ...
- zabbix监控nginx+php-fpm,mysql+主从复制+高可用,tomcat,redis web状态
zabbix监控对象区分 使用SNMP监控交换 使用IPMI监控服务器硬件 使用Agent监控服务器 使用JMX监控JAVA SNMP监控流程 交换机上开启snmp 在zabbix上添加监控(设置SN ...