`
yaya_wiscom
  • 浏览: 49935 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle数据库SQL总结

阅读更多

1Oracle时间段的查询

1.1 场景:根据用户输入的时间段过滤出相应记录。

1.2 解决办法:

第一种写法:

SELECT * FROM T_XJXX_XJGL
WHERE CREATEDATE >= TO_DATE('2011-6-13', 'yyyy-MM-dd')
AND CREATEDATE <= TO_DATE('2011-6-17', 'yyyy-MM-dd');
 

第二种写法:

SELECT * FROM T_XJXX_XJGL
WHERE TO_CHAR(CREATEDATE, 'yyyy-MM-dd') >= '2011-6-13'
AND TO_CHAR(CREATEDATE, 'yyyy-MM-dd') <= '2011-6-16';

 

 第三种写法:

SELECT * FROM T_XJXX_XJGL
WHERE CREATEDATE > TO_DATE('2011-6-15', 'yyyy-MM-dd') - 1
AND CREATEDATE <= TO_DATE('2011-6-16', 'yyyy-MM-dd') + 1;

 

取出当前时间在开始时间和结束时间范围内的记录:

SELECT * FROM T_XJXX_XJGL
WHERE 1 = 1
AND TO_CHAR(KSSJ, 'yyyy-mm-dd') <= TO_CHAR(SYSDATE, 'yyyy-mm-dd')
AND TO_CHAR(JSSJ, 'yyyy-mm-dd') >= TO_CHAR(SYSDATE, 'yyyy-mm-dd')

 

2 Oracle创建触发器的例子

2.1场景:创建T_XJXX_XJGL中BH字段为自增长类型,start by 1 increment by 1

2.2解决方法:BH字段的类型设置为number,创建Sequence

CREATE SEQUENCE  SEQ_XJXX_BH  
MINVALUE 1 MAXVALUE 999999 
INCREMENT BY 1 START WITH 11 
CACHE 10 NOORDER  NOCYCLE ;

 创建触发器:

CREATE OR REPLACE TRIGGER TR_ADDID
BEFORE   INSERT   ON   T_XJXX_XJGL
FOR   EACH   ROW
BEGIN
      IF (:NEW.BH IS NULL) THEN
        SELECT SEQ_XJXX_BH.NEXTVAL INTO :NEW.BH FROM DUAL;
      END IF;
END;

 

3 Oracle中经常使用的函数

3.1场景:按照用户设定的定时器时间段,过滤出数据后Update下一执行时间。例如用户设定是邮件发送频率为每月15号 12:00:00发送,则计算出下一发送时间点为当前发送时间+1个月;设定频率为每周一 09:00:00发送,则计算出下一发送时间+一周

3.2解决方法:

1)、ADD_MONTHS(x,y)函数,平时我使用的场景也就是对月份进行加减时使用ADD_MONTHS函数,其中y若是负整数表示对月份的减操作;y是正整数表示对x月份添加y个月

SELECT ADD_MONTHS(SYSDATE, '-1') FROM DUAL

2)、NEXT_DAY(x,day)返回x日期下一个day的日期,新手需要注意的是这里的day指的是星期。1表示星期天、2表示星期一,以此类推。

SELECT NEXT_DAY(SYSDATE, 2) FROM DUAL;

 返回从当前时间开始计算下一星期一的日期。

3)、如果是+1天或是-1天的操作可以直接对日期进行+-操作,like this

SELECT SYSDATE-1 FROM dual 

oracle支持对日期进行运算,运算时是以天为单位进行的。

4)、LAST_DAY(x) 获取x月份中的最后一天

5)、MONTHS_BETWEEN(x,y);x>y返回正数,表示x和y之间相隔的月份数(实际项目中没使用过,暂时不做太多记录)。

字符串处理函数:

6)、nvl(x,value),如果x is null 则返回value中的值,否则返回x;

7)、length(x),返回x的字符长度;

8)、substr(x,start,length) 截取字符串,对字符串x进行截取,从start开始截取的长度为length;如果需要取字符串的后面几位可以这样写:

 SELECT SUBSTR('TEST', -2) FROM DUAL;

 返回最后两位字符 ST

 

 

4、Oracle中伪列的使用技巧

4.1场景:利用oracle中的伪列进行分页是一种简单方便的分页手段有些场景中我们也可以使用伪列来代替组函数,从而巧妙的实现过滤要求。

1 )  利用伪列取出工资最高的第6到第10名雇员的记录

 

 SELECT *
   FROM (SELECT ROWNUM RN, TEMP.*
           FROM (SELECT E.ENAME, E.SAL
                   FROM EMP E
                  WHERE ROWNUM <= 10
                  ORDER BY E.SAL DESC) TEMP)
  WHERE RN > 5
 

2 ) 利用伪列进行分页操作:

 

SELECT B.*, RN
  FROM (SELECT A.*, ROWNUM AS RN2
          FROM (SELECT XXKC.WID,
                       ...
                       ROWNUM AS RN
                  FROM T_PY_XXKC XXKC
                  LEFT JOIN T_PY_KC KC ON KC.KCDM = XXKC.XXKCDM
                 ORDER BY XXKC.XXKCDM) A) B
 WHERE B.RN2 >  v_start 
 AND B.RN2 <=  (((v_start/10) + 1) * v_limit )
 这样,便可以利用前台传来的v_start(起始页)和v_limit(每页显示条数)和计算得出的totalCount(总页数)进行分页显示。此外RowNum还可以用来取某个结果集中的最大值,思路就是将结果集进行降序排序后取出rn = 1的记录就是最大值了,呵呵很简单吧!

 

 

1
2
分享到:
评论

相关推荐

    数据库开发 Oracle数据库 SQL开发教程 全套PPT课件 共20个章节.rar

    数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制...

    oracle数据库sql练习题(含答案)

    oracle数据库sql练习题(含答案)用于练习增删改查操作。

    SQL SERVER连接oracle数据库几种方法

    SQL SERVER 连接 Oracle 数据库几种方法 在实际开发中,我们经常需要在 SQL Server 中连接 Oracle 数据库,以便实现数据交换和集成。那么,如何在 SQL Server 中连接 Oracle 数据库呢?下面我们将介绍几种常见的...

    Oracle数据库SQL性能优化

    Oracle数据库SQL性能优化学习可以用到的。

    [自己开发]一款非常好用的抓取Oracle数据库SQL语句的工具

    Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...

    Oralce数据库SQL和pl_sql实例教程

    总的来说,Oracle数据库SQL和PL/SQL实例教程旨在帮助学习者深入理解这两种语言,提高数据库管理与开发的技能,从而在实际工作中更加高效地处理数据。通过详细的章节和实例,读者可以逐步熟悉并熟练运用SQL和PL/SQL...

    oracle数据库导入到SQL server.docx

    "Oracle数据库迁移到SQL Server" 本文将详细讲解如何使用Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具)将Oracle数据库迁移到SQL Server。该工具可以帮助用户快速、安全地将...

    Oracle数据库Sql语句详解大全

    Oracle数据库Sql语句详解大全,提供给大家快速查询复习哦!

    Oracle数据库SQL练习

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其SQL语法是进行数据操作和查询的核心工具。本资料包针对Oracle数据库的SQL使用提供了丰富的练习资源,旨在帮助用户深入理解和熟练掌握SQL语言在Oracle环境...

    Oracle数据库sql语句 跟踪器

    总结来说,Oracle数据库SQL语句跟踪器是一个强大的性能分析工具,它通过Toad for Oracle等工具提供深入的洞察,帮助数据库管理员和开发者有效地优化数据库性能,提升系统的整体响应速度和稳定性。通过实时监控、性能...

    ORACLE数据库SQL语句美化器

    对ORACLE-SQL进行一些布局优化,更新它的格式

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    Oracle数据库SQL语句大全

    Oracle数据库SQL语句大全

    ORACLE数据库学习总结资料.pdf

    Oracle数据库学习总结资料.pdf Oracle数据库学习总结资料.pdf 是一份关于 Oracle 数据库的学习总结资料,涵盖了 Oracle 数据库的各个方面,包括 Oracle 的简介、简单查询、标量函数和算数运算、多表查询、列函数和...

    Oracle数据库导入到SqlServer步骤(图文篇)

    Oracle 数据库到 SqlServer 数据迁移步骤详解 Oracle 数据库到 SqlServer 的数据迁移是一项复杂的任务,需要经过多个步骤来完成。本文将详细介绍如何将 Oracle 数据库导入到 SqlServer 中。 Step 1-6: 数据源设置...

    Oracle数据库课程设计医院系统数据库源代码.zip

    Oracle数据库课程设计医院系统数据库源代码。包含Java代码和SQL语句。源码中默认使用的数据库为运行的Oracle数据库 如需修改,在java源码/database.propertie中修改即可!Oracle数据库课程设计医院系统数据库源代码...

    Oracle数据库SQL和PL SQL实例教程 高继民(ppt)

    oracle数据库ppt 第1章 关系数据库与SQL语言环境 第2章 数据查询 第3章 数据操作 第4章 表和视图 第5章 其他数据库对象 第6章 SQL基础 第7章 游标和异常处理 第8章 存储过程、函数和包 第9章 触发器 第10章 数据库...

    oracle 数据库 scott.sql 范例表

    "scott.sql"是一个典型的Oracle数据库示例脚本,它包含了著名的"SCOTT"用户的表和相关数据,这个用户是为了教学和演示目的而设计的。在本文中,我们将深入探讨Oracle数据库的基础知识,以及如何使用"SCOTT"用户和...

Global site tag (gtag.js) - Google Analytics