Oracle 第二章

news/2024/10/18 14:26:37/

1- 排序查询

select * from 表名 order by 字段;

desc :从大到小排序 

默认是从小到大排序

2- 基于伪列的查询

ROWID 和 ROWNUM

rowid : 唯一的编号 

select rowid,表名.*

from 表名

where ROWID= 'AAAStKAANAAAAC/AAC'; (rowid号)

ROWNUM查询列表中从1开始编号

select rownum,表名.* from 表名 

相当于排列序号

但如果查询 where rownum时 不可以跳过1开始 rownum>5 不行

可以with 名字 as()进行查询

3-分页查询

使用rownum

查看前10条

select rownum, 表名.* from 表名  where rownum<=10

4-基于排序的分页

每页 10 条记录 ,按使用字数降序排序,查询第 2 页数据

select * from

       (select rownum r,表名.* from 表名

        where rownum<=20

        order by usenum desc)

where r>10

5-其他函数

5-1:空值处理函数(与sql中的if差不多)

NVL (检测的值 ,如果为 null 的值)  ;

语句 :

select NVL(NULL, 0) from dual

显示价格表中业主类型 ID 为 1 的价格记录 ,如果上限值为 NULL,则显示 9999999

语句 :

select price, minnum, nvl(maxnum,9999999)

from t_pricetable

where ownertypeid=1

空值处理函数 NVL2

用法 :

NVL2 (检测的值,如果不为 null 的值,如果为 null 的值)  ;

需求 :显示价格表中业主类型 ID 为 1 的价格记录 ,如果上限值为 NULL,显示“不限“ .

select price, minnum, nvl2(maxnum, to_char(maxnum), '不 限')

from t_pricetable

where ownertypeid=1

6-时间相关函数

Orcale中时间类型date是 必须为 年月日时分秒的样式

和mysql中不一样 没有单独的year时间类型

使用 to date('时间','yyyy-mm-dd.....')

SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL;

SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL;

SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL;

SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL;

SELECT TO_DATE('2006', 'YYYY') FROM DUAL;

trunc函数截取后的结果依然为时间类型

trunc(sysdate) S2,

trunc(sysdate,'year') YEAR,

trunc(sysdate,'month') MONTH ,

trunc(sysdate,'day') DAY

from dual;

to_char 函数 时间转变为字符串类型

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;

select to_char(sysdate,'yyyy') as nowYear from dual;

select to_char(sysdate,'mm') as nowMonth from dual;

select to_char(sysdate,'dd') as nowDay from dual;

select to_char(sysdate,'hh24') as nowHour from dual;

select to_char(sysdate,'mi') as nowMinute from dual;

select to_char(sysdate,'ss') as nowSecond from dual;

7-行列转换

按月份统计 2012 年各个地区的水费 ,如下图

代码如下:

select 

  (select name from T_AREA where id= areaid ) 区域,

  sum ( case when month= '01' then money else 0 end) 一月,

  sum ( case when month= '02' then money else 0 end) 二月,

  sum ( case when month= '03' then money else 0 end) 三月,

  sum ( case when month= '04' then money else 0 end) 四月,

  sum ( case when month= '05' then money else 0 end) 五月,

  sum ( case when month= '06' then money else 0 end) 六月,

  sum ( case when month= '07' then money else 0 end) 七月,

  sum ( case when month= '08' then money else 0 end) 八月,

  sum ( case when month= '09' then money else 0 end) 九月,

  sum ( case when month= '10' then money else 0 end) 十月,

  sum ( case when month= '11' then money else 0 end) 十一月,

  sum ( case when month= '12' then money else 0 end) 十二月

from t_account

where year='2012'

group by areaid

;

8-集合运算

  • UNION ALL(并集) ,返回各个查询的所有记录 ,包括重复记录。
  • UNION(并集) ,返回各个查询的所有记录 ,不包括重复记录。
  • INTERSECT(交集) ,返回两个查询共有的记录。

union all :不去重

select * from t_owners where id<=7

union all

select * from t_owners where id>=5

UNION  去掉重复记录

select * from t_owners where id<=7

union

select * from t_owners where id>=5

INTERSECT(交集)

select * from t_owners where id<=7

intersect

select * from t_owners where id>=5

只会输出567 交集的数据

9-差集运算

select * from t_owners where id<=7

minus

select * from t_owners where id>=5

只会显示1234  显示没有重合的数据


http://www.ppmy.cn/news/1436568.html

相关文章

前端H5动态背景登录页面(下)

最近正好有点儿时间&#xff0c;把之前没整理完的前端动态背景登录页面给整理一下&#xff01;这是之前的连接前端H5动态背景登录页面&#xff08;上&#xff09;&#xff0c;这主要是两个登陆页面&#xff0c;一个彩色气泡&#xff0c;一个动态云朵&#xff0c;感兴趣的可以点…

【yolo算法道路井盖检测】

yolo算法道路井盖检测 数据集和模型yolov8道路井盖-下水道井盖检测训练模型数据集pyqt界面yolov8道路井盖-下水道井盖检测训练模型数据集 算法原理 1. 数据集准备与增强 数据采集&#xff1a;使用行车记录仪或其他设备收集道路井盖的图像数据。数据标注&#xff1a;对收集到…

react之useState详解

1. 为什么要用useState&#xff1f; 它是React 16.8 的新特性&#xff0c;我们在React里面一般都是用Class去写组件&#xff0c;但是有时候会发现不用它更方便&#xff0c;但是问题来了&#xff1a;不用Class的时候&#xff0c;数据的状态改变如何存储呢&#xff1f;如果你用 …

代码随想录算法训练营day9 | 28. 实现 strStr()、459.重复的子字符串

28. 实现 strStr() 暴力解法&#xff1a;双重循环&#xff0c;外层是haystack字符串&#xff0c;内层是needle字符串 KMP算法&#xff1a;当haystack字符串和needle字符串已经匹配部分之后&#xff0c;如果下一个不匹配后&#xff0c;暴力法将会从头开始匹配&#xff0c;已经…

websocket消息处理失败排查(redis大key)

排查问题: websocket 断连问题 客户端连接成功后&#xff0c;会发起消息watchroom&#xff0c; 表示需要加入某个房间进行协同 技术栈&#xff1a; nodejs pm2 socket.io socket.redis.adapter.io grpc watchroom -> websocket -> grpc -> emit 调用grpc 超时失…

vue快速入门(三十五)组件通信-父传子

注释很详细&#xff0c;直接上代码 上一篇 新增内容 父组件传值子组件接收父组件传来的数据 源码 App.vue <template><div id"app"><!-- :item"item"为将item的值传递给MyTest组件 --><MyTest v-for"item in roles" :key&q…

Vue-条件渲染(初识vue渲染)

目录 一、Vue条件渲染-介绍 1.概念 2.特点 3.功能 4.好处 5.应用 二、Vue条件渲染-使用 1.初识渲染 2.条件v-if的使用 3.条件v-if-else的使用 4.条件v-else-if使用 5.template元素使用 6.条件渲染-阶段案例 7.条件v-show 三、Vue条件渲染-实例 1.权限管理系统 …

Python打怪升级(4)

在计算机领域常常有说"合法"和"非法"指的是:是否合理&#xff0c;是否有效&#xff0c;并不是指触犯了法律。 random.randint(begin,end) 详细讲解一下这个random是指模板&#xff0c;也就是别人写好的代码直接来用&#xff0c;在Python当中&#xff0c;…