oracle


前言

为什么大部分公司的数据库系统仍然要用Oracle?我认为Oracle之所以能占有这么大的市场份额,是因为其在海量数据的处理上更具有优势,并且能提供一整套的数据存储解决方案。

在一些非常大的企业里,这些企业通常拥有庞大的资金能力,所以它们会选择用钱购买解决方案,而不是自己雇佣人员使用 MySQL 去维护(当然现在也有很多大厂倾向去Oracle而使用MySQL)。
另一方面,这些企业的数据量也是非常庞大,它们更注重数据的安全性和高效存储,并且关心的出现问题的时候能快速解决,Oracle提供的一系列服务正好符合它们的需求。


提示:以下是本篇文章正文内容,下面案例可供参考

一、oracle是什么?

Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一,比如 SilverStream 就是基于数据库的一种中间件。Oracle 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能,但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。

数据文件(dbf)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

表空间

表空间是Oracle对物理数据库上相关数据文件(ORA 或者DBF文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为system表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件(datafile)。一个数据文件只能属于一个表空间。

用户

用户是在实例下建立的。不同实例中可以建相同名字的用户。注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于Oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!

SCOTT和HR(用户)

scott与hr就是初始的普通用户,这些用户下面都默认存在了表结构

DDL:数据库定义语言:create、drop

DML:数据库的操作语言:insert、update、delete

DQL:数据库的查询语言:select

DCL:数据库的控制语言:grant、revoke

ORACLE数据库系统能够在业内独占鳌头并不是空穴来风,下面我们来细数一下ORACLE数据库的优势所在:
完整的数据管理功能:
数据的大量性
数据的保存的持久性
数据的共享性
数据的可靠性
完备关系的产品:
信息准则—关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则—只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
分布式处理功能:
ORACLE数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。

用ORACLE能轻松的实现数据仓库的操作
以上是Oracle数据库的优势,从这些优势中不难看出这是一款功能强大的数据库系统。

数据库和实例
Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。

数据库和实例是紧密相连的,所以我们一般说的Oracle数据库,通常指的就是实例和数据库。

下图说明了Oracle数据库服务器体系结构:

在这种体系结构中,Oracle 数据库服务器包括两个主要部分:文件(Oracle数据库)和内存(Oracle实例)。。

二、oracle索引分类

逻辑分类:
唯一索引/非唯一索引:对某一列或几列的键值(key)是否是唯一的,当某列任意两行的值都不相同时适合创建唯一索引(CREATE UNIQUE INDEX index ON table (column););
当表建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立;
对一列或多列建的索引:索引分离于表,作为一个单独的个体存在,除了可以根据单个字段创建索引,也可以根据多列创建索引。Oracle要求创建索引最多不可超过32列。
基于函数(function-based)的索引:基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率;
组合索引:当两个或多个列经常一起出现在where条件中时,则适合在这些列上同时创建组合索引;
域(domain)索引:索引数据库以外的数据,使用相对较少;

物理分类:
B*树(B-tree)索引(默认方式):Root为根节点,branch 为分支节点,leaf 到最下面一层称为叶子节点。每个节点表示一层,当查找某一数据时先读根节点,再读支节点,最后找到叶子节点。叶子节点会存放index entry (索引入口),每个索引入口对应一条记录(key的值、长度、rowid等)
位图(bitmap)索引:位图索引主要针对大量相同值的列而创建,位图索引通过不同位图取值直接的位运算(与或),来获取到结果集合向量(计算出的结果)。

唯一索引

1、 何时创建:当某列任意两行的值都不相同

2、 当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立

3、 语法:CREATE UNIQUE INDEX index ON table (column);

组合索引

1、 何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引

2、 组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面

3、 演示(组合列,单独列)

位图索引

1、 何时创建:

列中有非常多的重复的值时候。例如某列保存了 “性别”信息。

Where 条件中包含了很多OR操作符。

较少的update操作,因为要相应的跟新所有的bitmap

2、 结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。

3、 优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多

4、 语法:CREATE BITMAP INDEX index ON table (column[, column]…);

5、 掩饰:

create table bitmaptable as select * from indextable where owner in(‘SYS’,‘PUBLIC’);

分析,查找,建立索引,查找

基于函数的索引

1、 何时创建:在WHERE条件语句中包含函数或者表达式时

2、 函数包括:算数表达式、PL/SQL函数、程序包函数、SQL函数、用户自定义函数。

3、 语法:CREATE INDEX index ON table (FUNCTION(column));

三、PL/SQL

基本介绍:
PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。(来自百度百科)

1.就是跟我们的java的基本语法相似的一个过程语言。但是不同的点是,过程语言需要在进行任何一个方法是都要在结尾写上对应的end。
2.pl/sql的运算符和表达式跟java的运算符和表达式有点不一样,pl/sql运算符的不等于多出两个写法:~=和^=。运算符的赋值号是:=。
3.跟java一样,有对应的变量声明规则:
a.第一个字符必须为字母。
b.不能用-号。
c.不能是sql名词。
d.不区分大小写。(为了运行速度快点话,可以用大写,好像因为是底层实现是大写的。)
e.长度不能超过30。
4.pl/sql的数据类型有7种:
char,varchar2,binary_integer,number,log,date,boolean。
lob数据类型用来存储大的数据对象。
5.属性类型分两种:
a.%type:
定一个变量(使用这个属性推荐是在定义的变量为表的某一列)。
优点在于:不需要知道引用的数据库列的数据类型,还能对数据类型实时改变。
b.%rowtype:
返回一个类型,这个类型跟数据库表数据结构一致。
优点在于:可以不需要知道引用的数据库中列的个数和类型,能对个数和类型进行实时改变。
6.pl/sql控制语句跟java的对于的条件、循环、顺序差不多的逻辑,语法发生改变。需要留意对于的模块是否end。
7.动态sql:
动态sql就是将对于的列存在pl/sql变量里进行拼接,在执行拼接后的sql语句。
8.游标:

基本原理:
游标是用于接收sql语句返回多行或单行结果的一个缓冲区。
游标是指向该区的一个指针。
游标分类:
游标分为静态游标和动态游标:
1.静态游标:
分为显示游标和隐示游标。
2.动态游标:
游标在声明时没有定义,在打开时可以对其进行修改。可以分为强类型和弱类型。
强类型游标:
变量时使用return关键字定义游标的返回类型。
弱类型游标:
变量时不使用return关键字定义游标的返回类型。
2.存储过程:
基本原理:
存储过程类似于java定义方法,是由流程过程和sql语句书写的命名语句块,经编译和优化后存储在数据库中。
存储过程优点:
1.具有良好的安全性
2.执行速度快,效率高
3.减少网络流量
4.模块化程序设计
缺点:
1.调式麻烦
2.移植性差
3.代码可读性差

四、使用jdbc解析存储过程

jdbc连接Oracle:
基本介绍:
jdbc是Java Database Connectivity(JAVA语言连接数据库)。
jdbc是sun公司制定的一套接口(interface)
JAVA.sql.*(这个软件包下有很多接口。)
为了给各个数据库提供连接。

使用jdbc访问数据库的操作步骤:
1.加载jdbc驱动
2.与数据库建立连接
3.发送sql语句,并得到返回结果
4.处理返回结果
5.关闭资源

为什么使用jdbc调用存储过程,有什么好处?:
首先,存储过程是一组预编译的sql语句,经编译和优化后存储在数据库中。应用程序使用时调用就行(跟java的方法相似)。
好处:
1.具有良好的安全性:
可以给没有权限的用户赋予使用存储过程来实现访问没有权限的表。
2.执行速度快,效率高:
因为已经在数据库中预编译了,所以存储过程能够极速运行。
3.减少网络流量:
可以降低网络的通信量。
4.模块化程序设计:
可以跟java一样封装业务逻辑。并存在数据库中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值