oracle数据库对象:
tablespace and datafile(表空间和数据文件)
table(表)
constraints(约束)
index(索引)
view(视图)
sequence(序列)
synonyms(同义词,又称别名)
procedure(存储过程)
function(函数)
trigger(触发器)
package(包)
db-link(数据库链路)
1、表空间:是一个或多个数据文件的逻辑集合
表空间逻辑存储对象:永久段-->如表与索引
临时段-->如临时表数据与排序段
回滚段-->用于事物回滚或闪回内存的撤销数据
表空间分类:系统表空间(system、sysaux),非系统表空间
一个表空间至少包含一个数据文件,一个数据文件只能属于一个表空间。
不可或缺的几个表空间:
SYSTEM --->字典表空间,不能被损坏
UNDO --->dml,dql把数据快照到此,数据提交即消失(用于恢复)
SYSAUX --->10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)
TEMP --->临时数据相关的内容
USERS --->10g 用户数据从system拨离出来
Oracle的存储结构
1.Schema: 用户--->创建相关对象、表、视图、序列、函数、存储过程、包等
2.逻辑结构:database数据库--->tablespace表空间---> segment段--->extent区间----> block块
逻辑结构是Oracle内部管理数据库中对象的方式
3.物理结构:OS block --->datafile 物理结构通常是一系列数据文件
2、表:
逻辑上存储了数据库的所有数据
一个表的数据可以存储在一个或多个表空间上
表类型:
1堆组织表(heap organized table):这些就是“普通”的标准数据库表。数据以堆的方式管理。
2索引组织表(index organized table):这些表按索引结构存储。
3索引聚簇表(index clustered table):聚簇(cluster)是指一个或多个表组成的组,这些表物理地存储在相同的数据库块上,有相同聚簇键值的所有行会相邻地物理存储。
4散列聚簇表(hash clustered table):这些表类似于聚簇表,但是不使用B*树索引聚簇键来定位数据,散列聚簇将键散列到聚簇上,从而找到数据应该在哪个数据库块上。
5有序散列聚簇表(sorted hash clustered table):这种表类型是Oracle 10g中新增的,它结合了散列聚簇表的某些方面,同时兼有IOT的一些方面。
6嵌套表(nested table):嵌套表是Oracle对象关系扩展的一部分。它们实际上就是系统生成和维护的父/子关系中的子表。
嵌套表与子表的主要区别是:嵌套表不像子表(如EMP)那样是“独立”表。
7临时表(temporary table):这些表存储的是事务期间或会话期间的“草稿”数据。
3、约束:
not null
unique
primary key
foreign key
check
4、索引
索引类似于一本书的目录,我们通过查询目录就可以找到指定数据所在的具体位置,
而不需要翻越整本书。索引在检索数据方面具有高效性,尤其是从存储了大量数据的表中查询数据时。
索引是一种树状结构,可以分为两类:
1.从逻辑设计
单列索引,组合索引,唯一性索引,非唯一性索引,基于函数的索引...
2.从物理实现
分区索引,非分区索引,b树索引,正向索引,反向索引,位图索引,位图联接索引...
oracle提供了这么多索引,常用到的如下:
·B*树索引
·索引组织表
·B*树聚簇索引
·降序索引
·反向键索引
·位图索引
·位图联结索引
·基于函数的索引
·应用域索引
5、视图
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。
视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。
视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。
视图分为简单视图和复杂视图:
简单视图只从单表里获取数据
复杂视图从多表
简单视图不包含函数和数据组
复杂视图包含
简单视图可以实现DML操作
复杂视图不可以(但是在用了INSTEAD OF 触发器后就可以).
6、序列
Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。
Sequence是数据库系统的特性,有的数据库有Sequence,有的没有。比如Oracle、DB2、PostgreSQL数据库有 Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。
7、同义词
同义词:同义词是一个对象的替代名称
作用:利用同义词可以很方便地操纵不同用户模式下的对象。
通过select user from dual查看当前使用的用户。
访问其它用户模式下的表:
select * from scott.dept; 表示查看scott用户模式下的dept表数据。
同义词分为private 和 public,private仅创建的用户可以使用。public则所有用户都可以使用。
语法:
CREATE SYNONYN DEPT FOR SCOTT.DEPT;
表示将scoot用户下的dept表,创建为当前用户的同义词。默认为private
通过drop synonym dept删除。
create public synonym dept for scott.dept;表示创建一个公共的,在其它用户模式下也同样的进行查询。
8、过程、函数、包
PL/SQL程序块可背独立编译并存储在数据库中,任何与数据库相连接的应用程序都可以访问这些存储的PL/SQL程序块。ORACLE提供了四种类型的可存储的程序:
过程和函数
过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值
,函数和过程的主要区别不在于返回值,而在于他们的调用方式。过程是作为一个独立执行语句调用的:
pay_involume(invoice_nbr,30,due_date);
函数以合法的表达式的方式调用:
order_volumn:=open_orders(SYSDATE,30);
包是一种将过程、函数和数据结构捆绑在一起的容器;包由两个部分组成:外部可视包规范,包括函数头,过程头,和外部可视数据结构;另一部分是包主体(package body),包主体包含了所有被捆绑
的过程和函数的声明、执行、异常处理部分。
触发器是一种自动执行响应数据库变化的程序。可以设置为在触发器事件之前或之后触发或执行。能够触发触发器事件的事件包括下面几种:
DML事件
DDL事件
数据库事件
oracle数据库对象
最新推荐文章于 2019-01-17 14:58:41 发布