oracle高级部分

摘要:
语法Createview视图名称as关联查询的SQL语句优势简化SQL语句提高重要数据的安全性逻辑数据独立性劣势增加维护成本一般运用到的不希望访问者获取整个表的信息,只暴露部分字段给访问者。存储过程的创建Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

回顾

多表关联查询的方式

内连接

根据AB表关联的条件进行过滤查询,只保留满足条件数据

Select * from a,b  where a.xxx=b.xxx;

    Select * from a inner join b on a.xxx=b.xxxx

    inner join c on a.xxxx=c.xxxx

外连接

左外连接

以左表为驱动表,根据AB表关联的条件进行过滤查询,保留满足条件的数据,以及左边表的所有记录显示

Select * from a left join b on a.xxx=b.xxxx 

    Inner join c on b.xxxx=c.xxxx

    Select * from a, b(+);

右外连接

和左外连接正好相反 

Select * from a right join b on a.xxxx=b.xxxx

等同于:select * from b left join a on a.xxxx=b.xxxx

特殊关联查询

全外连接

左外连接结果+右外连接结果-重复的数据

Select * from a full join b on a.xxxx=b.xxxx

笛卡尔集

两张表或多张表的乘积

Select * froma,b
Select * from a inner join b on 1=1

自连接A表连接A表进行查询)

Select * froma,a
Select * from a t1 inner join a t2 on t1.xxxx=t2.xxxx

合并查询union union all

可以把不同表的结果集合并一个结果集

两张表选择列的数量和类型必须保持一致

SQL1
Union [all]SQL2

通过union实现全外连接

Select * from a left join b on a.xxxx=b.xxxx
  Union
Select * from a right join b on a.xxxx=b.xxxx
索引

对数据库中表的一列或多列进行排序的一种结构,

使用索引可以快速访问数据库中的特定信息

(空间换时间)

语法

Create [unique] index 索引名 on 表名 (字段1,[字段2])

例如:create index idx_student_name on t_student (student_name);

  • 索引也是一种约束

优势

  1. 确保每一行数据的唯一性
  2. 加快检索速度
  3. 加快多表关联查询的速度
  4. 加快分组和排序的查询速度

劣势

  1. 创建和维护索引要耗用时间
  2. 索引占用数据以外的物理空间,随数量量的增加而增加
  3. 当对表中的数据进行增删改,索引也需要更新
视图

视图是从一个或几个基本表中导出的虚拟表。

  • 视图可以把多表关联查询的结果作为一张虚拟表来查询。

可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。

对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

语法

Create view 视图名称 as 关联查询的SQL语句

优势

  1. 简化SQL语句
  2. 提高重要数据的安全性
  3. 逻辑数据独立性

劣势

增加维护成本

一般运用到的

不希望访问者获取整个表的信息,只暴露部分字段给访问者。

查询的数据来源于不同的表,而查询者希望以统一的方式查询。

内置函数

行转列

列转行

需求

oracle高级部分第1张

oracle高级部分第2张

1. 通过decode()函数实现

  • 实现类似if else的功能
  • 思路:分组利用聚合函数扩展字段

语法decode(字段,条件的值,当条件成立返回的值,当条件不成立返回的值)

oracle高级部分第3张

2.Case when语法

oracle高级部分第4张

列转行

思路:使用union扩展记录数

oracle高级部分第5张

自定义函数

什么是数据库函数

封装了完成某些特定功能的SQL语句,经过编译后保存在数据库中的一个特殊对象

语法:

create [or replace] function 函数名称(参数1,参数2)
存储过程

类似函数,封装了某些特定功能的SQL语句集,经过编译保存在数据库中的一个特殊对象,存储过程不能出现在SQL中。

存储过程的创建
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

1)无参存储过程语法

createorreplaceprocedureNoParPro   as//声明    ;    begin//执行    ;   exception//存储过程异常   ;    end;

2)带参存储过程实例

create or replaceprocedure queryempname(sfindno emp.empno%type)  
  as  sName emp.ename%type; 
     sjobemp.job%type; 
  begin.... 
  exception 
      .... 
  end;

3)带参数存储过程含赋值方式

应用场景:

统计每月的考勤数据

游标

就在pl中的一个特殊对象,在存储过程中遍历SQL结果集时,可以通过游标来指向结果集每一条记录。

游标的使用可以让用户想操作数组一样操作查询出来的数据集,实际上,它提供了一种从集合性质的结果中提取单挑记录的手段。

游标的种类:

显示游标

隐式游标

触发器

应用场景:主键自增

触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。

触发器是数据库中的一个特殊的存储过程,由事件触发,当用户对数据进行增删改操作的时候,可以触发该存储过程的执行。

触发器可以分为语句级触发器和行级触发器。

触发器的语法:

create [or replace]tigger 触发器名 触发时间 触发事件
on表名
[for each row]
beginpl/sql语句
end

免责声明:文章转载自《oracle高级部分》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇图片存储类型的种类、特点、区别windows上vmware 虚拟机,局域网其他主机访问下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JMeter学习(八)JDBC测试计划-连接Oracle(转载)

转载自 http://www.cnblogs.com/yangxia-test 一.测试环境准备       Oracle:10g       JDBC驱动:classes12.jar                              oracle安装目录下(oracleproduct10.2.0db_1jdbclibclasses12.jar)文...

insert时出现主键冲突的处理方法【转载】

原文出处:http://hi.baidu.com/ytjwt/blog/item/1ccc2c26022b0608908f9d8c.html 使用"insert into"语句进行数据库操作时可能遇到主键冲突,用户需要根据应用场景进行忽略或者覆盖等操作。总结下,有三种解决方案来避免出错。1. insert ignore into遇主键冲突,保持原纪录,忽略...

Oracle函数应用与查询聚合统计

Oracle预定义函数 Oracle数据库系统中定义了很多的函数(预定义)。这些函数能够完成本身特有的数据操作功能,执行效率更高并重复使用。 Oracle中的预定义函数按照对数据的操作执行特征可以分为: 单行函数——对每个记录执行一次 聚合函数(多行函数)——对多个记录行执行一次 单行函数 字符串函数 日期时间函数 数学计算函数 其它特殊函数 字符串操作函...

Oracle 12c Windows安装、介绍及简单使用(图文)

1、下载 地址为:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 含企业版和标准版的各种平台支持的下载链接,此处选择windows下的企业版: 2、安装 2.1 解压并运行 直接解压即可,切记两个压缩包都要解压(因为为zip格...

ORACLE实例恢复过程详细分析--使用dump、BBED等多种工具结合分析

---友情提示,内容较多,可以从博文左上的+目录选择小节方便阅读。  实验思路:  --实验相关TRACE文件:http://download.csdn.net/detail/q947817003/6646723 1.数据库OPEN,,做DML操作不提交,查看检查点。 2.SHUTDOWN ABORT并重启到MOUNT并查询检查点 3....

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统、oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错。错误提示内容如下。...