oracle中的select用法(二)

一.查询行(记录)

where过滤行记录条件 ,条件有:
a)、= 、 >、 <、 >=、 <=、 !=、 <>、 between and
b)、and 、or、 not、 union、 union all、 intersect 、minus
c)、null :is null、 is not null、 not is null
d)、like :模糊查询 % _ escape(‘单个字符’)
f)、in 、 exists(难点) 及子查询
1.比较条件
= 、>、 <、 >=、 <=、 !=、 <>
2.且 或 非
3.null
null不能使用条件判断,只能使用is

-- 存在佣金的员工名称
select * from emp where comm is null;
-- 不存在佣金的员工名称
select * from emp where comm is not null;
select * from emp where not comm is null;

4.集合操作
Union、Union All、Intersect、Minus
Union:并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
Union All:全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;
Intersect:交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus:差集( 减去重复 ) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序

5.like:模糊查询
模糊查询,使用通配符:
%:零个及以上(任意个数的)的字符
_:一个字符
遇到内容中包含 % _ 使用escape(‘单个字符’)指定转义符
6.in和exist
1).in相当于使用or的多个等值,定值集合 ,如果存在 子查询,确保 类型相同、字段数为1,如果记录多,效率不高,用于 一些 少量定值判断上
2).exists条件为true,存在记录则返回结果,后续不再继续 比较查询,与查询的字段无关,与记录有关:

二.排序

使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序。
顺序 :asc(默认) desc
多字段: 在前面字段相等时,使用后面的字段排序
空排序: 降序为 desc,注意 null 为最后

三.函数

函数分为系统内置函数 自定义函数,这里我们主要学习to_date和to_char两个系统内置的函数。根据函数的返回结果,我们将函数分为单行函数和多行函数。
1、单行函数:一条记录返回一个结果
2、多行函数 组函数 聚合函数 (重点) :多条记录 返回一个结果 (重点)

1.日期函数
1).sysdate/current_date 以date类型返回当前的日期
2).add_months(d,x) 返回加上x月后的日期d的值
3).LAST_DAY(d) 返回的所在月份的最后一天
4).months_between(date1,date2) 返回date1和date2之间月的数目
5).next_day(sysdate,‘星期一’) 下周星期一

2.转换函数
to_date(c,m) :字符串以指定格式转换为日期
to_char(d,c):日期以指定格式转换为字符串

3.其他函数(保证类型兼容)
1).nvl nvl(string1,string2) :如果string1为null,则结果为string2的值
2).decode decode(condition,case1,express1,case2 , express2,….casen , expressn, expressionm)
3).case when then else end

四.组函数

组函数|多行函数|聚合函数 即多条记录 返回一个结果。我们需要掌握如下几个组函数:
avg 、sum、 min、 max、 count
1)、count :统计记录数 count() -->* 或一个列名
2)、max min: 最大值 最小值
3)、sum:求和
4)、avg:平均值
注意:
1)、组函数仅在选择列表和Having子句中有效
2)、出现组函数,select 只能有组函数或分组字段
说明:
1).组信息 与单条记录不能同时查询
2).组函数 不能用在 where中,能使用的地方 select having
3).null 不参与运算

五.分组

分组:group by , 将符合条件的记录 进一步的分组
过滤组:having , 过滤组信息 ,表达式 同 where 一致
注意:where :过滤行记录,不能使用组函数, having:过滤组 可以使用组函数。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值