上文中对于oracle数据库做了一些介绍,本文中将主要着重介绍在数据库开发中运用到的知识,比如字符串的格式转换,还有存储过程的书写,高级连接等

一:存储过程

    存储过程是为了更加方便,有效的去执行复杂的sql语句。

    存储过程的格式:

    示例:输出hello world

    Create or replace procedure  name Is               --->创建存储过程,存在就替换

    begin                                                                       --->开始执行

    Execute immediate                              --->立即执行(对表做操作时必须要有这条语句)

    DBMS_output.put_line(‘Hello  World’);                    --->输出‘hello world’

    End;                                                                        --->结尾

    目前我在工作中用存储过程的主要作用是为了存放 创表还有查询,添加数据语句

    存在存储过程和java 代码一样,我们习惯于去创建一个package包保存,创建包

    示例:

    Create or replace package Packagename As

    Begin

     Class :=’二年级’;                                             --->公共变量(可以在下面的存储过程中使用)

    School:=’中南小学’;                                         --->公共变量

     Procedure name1;                                         --->Package Body中的存储过程 name1

     Procedure name2;                                         --->Package Body中的存储过程 name2

    End Packagename ;

    上问中的包内有两个存储过程,这两个存储过程实际是存放在包底下的body里面,创建好包以后,需要创建它的Body

    示例:

    Create or replace Package Body bodyname AS                          --->创建body

    Begin                                                                                    --->开始

    Create or replace Procedure name1 as                                      --->存放存储过程

    Begin

    Create table table1 (name  varchar2(20),age   number);

    End name1 ;

    Procedure name2 ..........

    End bodyname;                                                                    ---->body 结束

二:在上篇中介绍了函数,那么实际开发中对于数据的处理,往往需要多个函数一起使用。

示例:

Sql语句

显示+10000/-10000

To_char(nvl(num,0),’$09999’)

需要将数字输出

lpad(nvl(user_id,0),12,0) 这里需要使用从左补充0,否则取值会有问题

对于日期格式的取值

Nvl2(date,To_char(date,’yyyymmdd’),’19931111’) 利用nvl2函数去判断非空

未完待续......

    当我们在对数据做处理的时候,需要从各个不同的表中取到相应的数据,这时候就有了高级连接。

三:高级连接

    开发中往往需要从不止一张表中获取数据,那么都有哪些方法可以获取到这些数据呢?

    下面让我来一一为大家介绍,数据库中各种表之间的联系。

    表与表之间的连接通常分为内联和外联还有全联。

  内联:inner join on

示例:

会显示bugrecord和bug表中bug_name相等的数据所有信息

Sql语句

select * from bugrecord inner join bug onbug.BUG_NAME=bugrecord.bug_name

  外联(左联和右联)

    在多表进行连接时,我们会有主表和从表的区别。

      左连接  Left join on

示例:

会将左边主表(bugrecord)中的数据全部显示,右边从表(bug)的数据只有和主表bug_name匹配的才会显示

Sql语句

select * from bugrecord left join bug on bug.BUG_NAME=bugrecord.bug_name

      右连接  Right join on

示例:

会将右边主表(bug)中的数据全部显示,左边从表(bugrecord)的数据只有和主表bug_name匹配的才会显示

Sql语句

select * from bugrecord right join bug on bug.BUG_NAME=bugrecord.bug_name

  Union 与Union ALL的区别

    Union ALL

示例:

Union ALL 使用时,表中的数据结构必须相同,会将关联表中所有的信息都显示出来

Sql语句

select * from bugrecord union all select * from project

    Union

示例:

Union 使用时,表中的数据结构必须相同,会将关联表中所有的信息都显示出来,会自动去掉重复的信息

Sql语句

select * from bugrecord union select * from project

 

    在开发中如果遇到A表中的一个字段需要在B表中去对照获取最终值,这种情况推荐使用临时表来处理,使用临时表的效率更加高效,在数据量大的情况下效率很重要。

    With  t_lise as lise

    (select a.bugId as t_id,

     B.tranformvalue  as t_value

     From (select bugId from A)  a left join B b on a.bugid=b.codevalue

    )

     Select p.describe ||list.t_value  from project p Left join lise on lise.t_id=p.bugId

  这种写法很很大程度上会优化sql的效率,使用起来十分的便利。今后将会有一段时间从事oracle数据库的开发工作,后续会补充在工作中遇到的难点,以及各种优化的语句,也期望大家可以在下面留言,有更好的优化或者本文提到的不对的地方一一指出。

    始终坚信------但行好事,莫问前程!

转载于:https://www.cnblogs.com/warnerY/p/6809730.html

数据库之Oracle(二)相关推荐

  1. Java小白的数据库爱情(二)Oracle 入门

    Java小白的数据库爱情(二)Oracle 入门 概述 随着互联网时代的到来,需要持久化数据呈现井喷式发 展,常规的 io 操作虽然可以满足持久化的需求,但是, 对于持久化的目的,对数据的操纵,显然力 ...

  2. oracle数据库gold,Oracle数据库之Oracle GoldenGate 12.2.0.1 安装、升级和删除

    本文主要向大家介绍了Oracle数据库之Oracle GoldenGate 12.2.0.1 安装.升级和删除,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 1.准备工作 选择 ...

  3. oracle表还原truncate,Oracle数据库之Oracle表恢复(truncate)

    本文主要向大家介绍了Oracle数据库之Oracle表恢复(truncate),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.模拟truncate操作: SQL> c ...

  4. 如何启用和关闭数据库的Oracle归档模式

    2019独角兽企业重金招聘Python工程师标准>>> 本文简单介绍如何启用和关闭数据库的Oracle归档模式. 一.shutdown normal或shutdown immedia ...

  5. db2 mysql sql server_下文给大家介绍mysql数据库介绍,具体详情如下所示:MySQL数据库:Oracle、DB2、SQL Server、MySQL、access、mang...

    下文给大家介绍mysql数据库介绍,具体详情如下所示: MySQL 数据库: Oracle.DB2.SQL Server.MySQL.access.mangodb.bigtable 关系型数据库 大型 ...

  6. oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle

    金算盘财务软件后台数据库为Oracle,OA系统中虽然提供了金算盘财务软件的接口,但由于版本较低,无法直接采集金算盘财务软件的备份数据.我们发现,在已试验的金算盘财务软件的凭证表中,科目字段中既有科目 ...

  7. 数据库之Oracle

    数据库之Oracle 一. 用户的管理 1. 用户就是好比公司的某个人,而权限是这个人能在公司做什么,他的角色就是说明他的职位. 2. 用户的权限分为: 系统权限:对别的用户的管理操作. 对象权限:对 ...

  8. 数据库之Oracle笔试面试题收集(来自网络)

    数据库之Oracle笔试面试题收集(来自网络) 问题: 1.解释冷备份和热备份的不同点及各自的优点? 2.解释归档和非归档模式之间的不同和它们各自的优缺点? ********************* ...

  9. Jsp程序设计-数据库练习题(二)

    Jsp程序设计-数据库练习题(二) 一. 单选题(共7题,58.1分) (单选题) 下面哪一项不是JDBC的工作任务?(C) A 与数据库建立连接 B 操作数据库,处理数据库返回的结果 C 在网页中生 ...

最新文章

  1. Matlab学习笔记——图形标注
  2. 确定浏览器是否支持某些DOM模块
  3. linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...
  4. 趣学python3(40)--TCP服务器和客户端(socketserver类)
  5. AttributeError: module 'tensorflow' has no attribute 'placeholder'等一系列tensorflow版本导致的问题
  6. 你的博士三五年,不艰辛?
  7. c语言可变参数 printf,c语言 使用可变参数列表实现printf(my_printf)
  8. Python使用socket读取网页源代码实现简单爬虫程序
  9. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解
  10. python字符串截取后拼接_Python字符串拼接、截断、搜索、替换,python,截取,查找
  11. 系统学习NLP(十一)--命名实体识别
  12. python递归函数代码_python – 进行深度优先搜索的递归函数
  13. 8279c语言编程,可编程键盘/显示接口芯片8279应用浅析
  14. 计算机快捷指令ip,IP小技巧之如何使用DOS命令行快速修改电脑IP地址?
  15. linux hd4000显卡驱动,AMD 即将放弃 Radeon HD2000/3000/4000 系列显卡的驱动支持
  16. HTML5中定位网页元素重点总结
  17. iOS在服务器返回的JSON字符串带火星文乱码的处理
  18. 0002数学建模的重要意义
  19. C# 项目没有.sln文件的解决办法:
  20. android 9 手机硬件性能,硬件 篇一:一加7 / 7pro与小米9的参数对比及云评测

热门文章

  1. 【收藏】HBase集成Phoenix实现类SQL操作hbase
  2. Python爬虫基础:简单的爬虫入门示例(urllib库)
  3. SQL语句--INSERT INTO SELECT 语句用法示例
  4. 解决eclipse中Mybatis框架下sql语句执行后控制台不显示日志问题
  5. Qt for ios 打开相机(添加权限)
  6. IT从业者必备的十五种能力
  7. bat小游戏代码大全_Python打砖块小游戏源代码
  8. python flask 大文件 下载_python flask 建站之文件上传下载(一)
  9. android image 位移动画_深入理解Android之动画
  10. FreeRTOS 之一 源码目录文件 及 移植详解