Oracle的排序和限制条件(order by 和where)
1、Order by 子句的使用
select column....
from ....
order by ...
1) Order by子句在整个
select语句中的位置:
始终位于最后
2) order by后可以跟什么:
列名,列的别名,表达式,
列出现在select关键字后的
顺序(列号);
3) order by后可以跟多列,
表示先按第一列排序,
如第一列有相同值再按
第二列进行排序,如前二列
均有相同值,则按第三列进行排序...
4) ASC表升序,可以省略.
DESC表降序。
5)空值永远是最大的。
升序排序的时候,空值放在最后
降序排序的时候,空值放在最前面的
note: 出现在order by子句之后的列,不一定出现在select子句中。
2、Where子句的使用
语法:
select col_name,...
from tb_name
where col_name 比较操作表达式
逻辑操作符
col_name 比较操作表达式
1) 作用:对SQL语句返回的数据集进行筛选;
2) 位置:紧跟在from子句后
3) 内容:由一至多个限定条件组成,限定条件由表达式, 比较符, 字面值组成。
4) 所有字符串和日期要用单引号括起来,数值不需要单引号。
日期在Oracle里有特定的格式,’DD-MON-YY’(具体看日期的显示格式),
否则作为一个字符串。
5) 几种常见的操作符:
1》逻辑比较操作符
= > < >= <= != <> ^=
需求:查找工资大于1000的所有员工的last_name和工资。
需求:查找不在45号部门工作的所有员工的id,last_name和dept_id,并且按照dept_id 升序进行排序
select id,last_name,dept_id
from s_emp
where dept_id<>45
order by dept_id;
2》sql比较操作符
between and:在什么范围之内
in(list):在一个列表中
like:模糊查询,即值不是精确的值的时候使用
通配符,即可以代替任何内容的符号
%:通配0到多个字符
_: 当且仅当通配一个字符
转义字符:
默认为\,可以指定 指定的时候用escape 符号指明即可,转义字符只能转义后面的一个字符
between 1 and 4: 包括起止值。限定内容为1到4。
in (1,2,4): 限定内容为1,2,4。
is null:对null值操作特定义的操作符,不能使用=
3》逻辑操作符
当条件有多个的时候使用
and:且逻辑
or:或逻辑
注意:and逻辑比or逻辑要高
not:非逻辑
4)
需求:
1.查找员工id在[5,20]之间的所有员工的id和last_name
select id,last_name
from s_emp
where id between 5 and 20;
or
select id,last_name
from s_emp
where id >=5 and id<=20;
2.查找员工id不在[5,20]之间的所有员工的id和last_name
select id,last_name
from s_emp
where id not between 5 and 20;
or
select id,last_name
from s_emp
where id <5 or id > 20;
3.查找在43或者44号部门的员工的id和last_name;
select id,last_name
from s_emp
where dept_id in(43,44);
or
select id,last_name
from s_emp
where dept_id = 43 or dept_id = 44;
需求:查看员工名字以C字母开头的员工的id,工资。
练习:查看员工名字长度不小于5,且第四个字母为n字母的员工id和工资
需求:查看员工名字中包换一个_的员工id和工资
需求:查看员工提成为为空的员工的id和名字
select id,last_name,commission_pct
from s_emp
where commission_pct is null;
3.逻辑操作符
当条件有多个的时候使用
and:且逻辑
or:或逻辑
注意:and逻辑比or逻辑要高
not:非逻辑
需求:查看员工部门id为41且职位名称为Stock Clerk(存库管理员)的员工id和名字
select id,last_name,dept_id,title
from s_emp
where dept_id = 41
and
title = 'Stock Clerk';
练习:查看员工部门为41 或者 44号部门 且工资大于1000的员工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000
and
(dept_id = 41
or
dept_id = 44);
查看员工部门为41且工资大于1000 或者 44号部门的员工id和名字
select id,last_name,dept_id,title
from s_emp
where salary > 1000
and
dept_id = 41
or
dept_id = 44;
Oracle的排序和限制条件(order by 和where)的更多相关文章
- oracle row_number() over(partition by .. order by ..)和rank() over(partition by .. order by ..) 和dense_rank() over(partition by .. order by ..)的相似点与区别
新建一个测试表 create table dim_ia_test2(device_number varchar2(20),desc2 varchar2(20)) 插入数据后得到: 一.oracle r ...
- [大牛翻译系列]Hadoop(6)MapReduce 排序:总排序(Total order sorting)
4.2.2 总排序(Total order sorting) 有的时候需要将作业的的所有输出进行总排序,使各个输出之间的结果是有序的.有以下实例: 如果要得到某个网站中最受欢迎的网址(URL),就需要 ...
- Mysql高手系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑
这是Mysql系列第8篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符号分开的表示可选其一. 本章内容 详解排序查询 详解limit limit存在的坑 分 ...
- Oracle查询排序asc/desc 多列 order by
查询结果的排序 显示EMP表中不同的部门编号. 如果要在查询的同时排序显示结果,可以使用如下的语句: SELECT 字段列表 FROM 表名 WHERE 条件 ORDER BY 字段名1 [ASC|D ...
- oracle 分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和 ...
- oracle——分析函数——排序值分析函数
一.问题描述 查询列表时,我们有时需要对查询结果依据某个字段进行排名. 如果每条记录在排序字段上都不相同,我们可以将原查询作为一个视图,查询其rownum,便可以实现简单排序,例如: select r ...
- oracle先排序再分页
只做简单记录 按操作时间排序1 SELECT A.*, ROWNUM RN FROM (SELECT * FROM v_log) A ORDER BY operatetime DESC 结果 可以发现 ...
- Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)
(1)rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名. (2)dense_rank函数返回一个唯一的值, ...
- 【转】MySQL实现Oracle里的 rank()over(ORDER BY) 功能
Oracle rank()和dense_rank()的区别是: –rank()是跳跃排序,有两个第二名时接下来就是第四名 –dense_rank()l是连续排序,有两个第二名时仍然跟着第三名 sele ...
随机推荐
- java编程思想恶心的enum状态机示例
下面是一个包装输入的类 package test; import java.util.Random; public enum Input { NICKEL(5) , DIME(10) , QUARTE ...
- BizTalk动手实验(六)Orchestration开发
1 课程简介 通过本课程熟悉Orchestration的相关开发与测试技术 2 准备工作 熟悉XML.XML Schema.XSLT等相关XML开发技术 熟悉.NET相关开发技术 新建BizTalk空 ...
- Amoeba For MySQL读写分离
Amoeba安装,参考http://hi.baidu.com/itfenqing/item/79fe989838e1e8ad83d2959c Amoeba版本为:amoeba-mysql-1.3.1- ...
- rabbimq之流控
rabbitmq为了能够保证服务器在大量使用资源的情况下正常工作,会做流控. 所谓流控有以下两个方面.一是针对连接做流控,即降低某频率过快的发送消息.二是整体流控,即将所有消费者发送的消息丢掉,悄无声 ...
- JavaMail接、收邮件
我总算把这个研究出来啦.... 不要觉得 代码有点多哈. 我们先来说发送邮箱吧,首先建立一个属性文件*.properties sys.properties server=smtp.163.com ## ...
- 让ecshop用户名、手机号、email登陆方法
让ecshop用户名.手机号.email登陆方法, 仅适用于没有做过任何平台整合的ECSHOP网站 修改文件: 1.includes/modules/integrates/ecshop.php ...
- while do while 区别
一.while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体.while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句. int i=10; whil ...
- TCP 长连接与短连接的区别
TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的 ...
- LeetCode Two Sum III - Data structure design
原题链接在这里:https://leetcode.com/problems/two-sum-iii-data-structure-design/ 题目: Design and implement a ...
- Linux内核中大小端判定宏
#include <stdio.h> ];unsigned long mylong;} endian_test = { {'l','?','?','b'} }; #define ENDIA ...