Oracle事务和常用数据库对象

发布时间:2020-05-31 04:25:44 作者:mb5d03569e7eb16
来源:网络 阅读:234

博文结构
事务的使用
索引的使用
视图的作用
序列、同义词的使用
分区表的概念

一.事务

Oracle通过事务来保证数据库中数据的一致性。

事务就是业务上的一个逻辑单元,它能够保证其中对数据所有的操作要么全部成功,要么全部失败

事务的四个特性,即原子性(Atomicity). - 致性(Consistency)、隔离性. (Isolation)和持久性(Durability). 简写为ACID特性。

(1)原子性:要么同时成功,要么同时失败,

(2) 一致性:无论是在事务前、事务中,还是在事务后,数据库始终处于一致的状态。

SQL> create tablespace sales
  2  datafile '/space/sales.dbf' size 100M;

表空间已创建。
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
--------------------------------------------------------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SALES

已选择 6 行。
SQL> create table sales
  2  (name varchar(50),
  3  sex varchar(10),
  4  address varchar(100),
  5  results float(10))
  6  tablespace sales;

表已创建。
SQL> insert into sales values('zhangsan','nan','haidian',90);

已创建 1 行。
SQL> commit;                                                     

提交完成。
SQL> rollback;

回退已完成。

二.索引

索引是Oracle的一个对象,是与表关联的可选结构,提供了-种快速访问数据的途径,提高了数据库的检索性能。索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需要的数据。
索引的特点如下:

适当地使用索引可以提高查询速度。
可以对表的一-列或多列建立索引。
建立索引的数量没有限制
索引需要磁盘存储,可以指定表空间,由Oracle自动维护。
索引对用户透明,检索时是否使用索引是由Oracle决定的。

全表扫描。
使用索引。

  1. B树索引
    索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块。最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向链接,有助于
    按关键字值的升序和降序扫描索引。
    如图:

Oracle事务和常用数据库对象

案例:

SQL> create index sales_name_index
  2  on sales(address);

索引已创建。
SQL> create unique  index sales_name_unique_index  on sales(name);

索引已创建。
SQL> create index sales_reverse_index  on sales(results) reverse;

索引已创建。
SQL> create bitmap index sales_bit_index on sales(sex);

索引已创建。
频繁搜索的列可以作为索引。
经常排序、分组的列可以作为索引。
经常用作连接的列(主键/外键)可以作为索引。
将索引放在一 个单独的表空间中,不要放在有回退段、 临时段和表的表空间中。
对大型索引而言,考虑使用NOLOGGING子句创建。
根据业务数据发生的频率定期重新生成或重新组织索引,以进行碎片整理。
根据业务数据发生的频率定期 重新生成或重新组织索引,以进行碎片整理。
不要在下面情况创建索引:
仅包含几个不同值的列。
表中仅包含几行。

三.视图

视图(View) 是- -个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典中。视图中的数据是从一个或多个实际表中获得的。那些用于产生视图的表叫作视图的基表。一个视图也可以在另一个视图中产生,。

物化视图(Materialized View) 也称实体化视图、快照(Oracle 8i以前的说法),含有数据,占用存储空间,在数据仓库中很有实用价值。

视图隐藏了数据的复杂性,
视图简化了用户的命令,
视图将应用程序与基表定义的修改隔离开来,
视图通过重命名列.

四.序列

序列是用来生成唯一的、 连续的整数类型的数据库对象。序列通常用来自动生成主键或唯一键的值。序列可以按升序排列,也可以按降序排列。例如,销售流水表中的流水号可以使用序列自动
生成。

SQL> create sequence sale_seq
  2  start with 1
  3  increment by 1
  4  nomaxvalue
  5  nocycle;

序列已创建。
SQL> create table project(id int,name varchar2(10));

表已创建。
SQL> create table project(id int,name varchar2(10));

表已创建。

SQL> insert into project values(sale_seq.nextval,'zhangsan');

已创建 1 行。

提交完成。
SQL> insert into project values(sale_seq.nextval,'lisi');

已创建 1 行。

提交完成。
SQL> select * from project;

    ID NAME
---------- ------------------------------
     1 zhangsan
     2 lisi
SQL> select sale_seq.currval from dual;

   CURRVAL
----------
     2
SQL> alter sequence sale_seq
  2  maxvalue 5000
  3  cycle;

序列已更改。
SQL> select sequence_name,increment_by,cache_size from user_sequences where 
  2  sequence_name='SALE_SEQ';

SEQUENCE_NAME
--------------------------------------------------------------------------------
INCREMENT_BY CACHE_SIZE
------------ ----------
SALE_SEQ
       1         20

五.同义词

同义词是对象的一个别名,不占用任何实际的存储空间,只在Oracle 的数据字典中保存其定义描述。在使用同义词时,Oracle 会将其翻译为对应对象的名称。

1)简化SQL语句
2)隐藏对象的名称和所有者
3)为分布式数据库的远程对象提供位置透明性
4)提供对数据库对象的公共访问

同义词可分为以下两类
1)私有同义词
2)公有同义词

六.分区表

改善表的查询性能。在对表进行分区后,用户执行SaL查询时可以只访问表中的特定分区
而非整个表.表更容易管理。因为分区表的数据存储在多个部分中,按分区加载和删除数据比在表中加
载和删除更容易。
便于备份和恢复。可以独立地备份和恢复每个分区。提高数据安全性。将不同的分区分布在不同的磁盘,可以减小所有分区的数据同时损坏的可能性。

案例:

创建表并且分区,以age分区。
create table student
(
  id number,
  name varchar2(10),
  age number)
partition by range (age)
(
 partition p1 values less than (10),
 partition p2 values less than (20),
 partition p3 values less than (maxvalue)
);

2、向表中插入数据
insert  into student values(1,'t1',8);
insert  into student values(2,'t2',9);
insert  into student values(3,'t3',15);
insert  into student values(4,'t4',18);
insert  into student values(5,'t5',50);
3、分别查询p1,p2,p3的数据
select * from student partition(p1);
select * from student partition(p2);
select * from student partition(p3);
4、要删除小于10岁的数据。
delete from  student  partition(p1);
推荐阅读:
  1. 浅谈Oracle数据库的对象
  2. 【Oracle Database】 数据库对象管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle事务和常用数据库对象 数据库对象

上一篇:android —— Animation

下一篇:打印指定顺序矩阵

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》