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

本文详细介绍了Oracle数据库中的事务管理,包括事务的开始、提交、回滚及其ACID特性。接着讨论了索引的种类和作用,以及如何创建和维护索引以提升查询性能。此外,还阐述了视图的概念和作用,序列的生成及使用,以及同义词的功能和分类。最后,解释了分区表的概念和优势,并给出了创建和使用分区表的示例。
摘要由CSDN通过智能技术生成

5268f80b9b1e01f982625ef6fac83ca1.png

博文结构

事务的使用

索引的使用

视图的作用

序列、同义词的使用

分区表的概念

一.事务

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

事务的含义

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

事务开始于一条可执行的SQL语句,继续执行事务主体,然后结束于以下的任意一种情况。

显式提交(commit): 当事务遇到cormmit指令时,将结束事务并永久保存所有更改的数据。

显式回滚(ollback); 当事务遇到rollback指令时,也将结束事务的执行,但是此时它回滚

所有更改的数据到事务开始时的原始值,即取消更改。

DDL语句:一旦用户执行了DDL (Data DefinitionLanguage,数据定义语言,如 CREATE. DROP

等)语句,则之前所有的DML (Data Manipulation Language,数据操作语言)操作将作为一

个事务提交.这种提交称为隐式提交。

正常结束程序:如果Oracle数据库应用程序正常结束,如使用SQL Plus工具更改了数据,

而正常退出该程序(输入"exit"), 则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 行。

创建表sales并将其放在sales空间中

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;

回退已完成。

自动提交

SQL> set autocommit on;

二.索引

索引的含义

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

索引的特点如下:

适当地使用索引可以提高查询速度。

可以对表的一-列或多列建立索引。

建立索引的数量没有限制

索引需要磁盘存储,可以指定表空间,由Oracle自动维护。

索引对用户透明,检索时是否使用索引是由Oracle决定的。

Oracle的数据库管理系统在访问数据时使用以下两种访问方法.

全表扫描。

使用索引。

索引的分类

B树索引

索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块。最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向链接,有助于

按关键字值的升序和降序扫描索引。

如图:

df4acd5cbbbdbd13550be8dfac423052.png

案例:

对sales表的address列创建B树索引sales_address_index

SQL> create index sales_name_index

2 on sales(address);

索引已创建。

对sales表的name列创建唯一索引sales_name_unique_index

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;

序列已创建。

创建表project

SQL> create table project(id int,name varchar2(10));

表已创建。

向project表添加记录

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

查看序列的CURRVAL值

SQL> select sale_seq.currval from dual;

CURRVAL

----------

2

修改序列的最大值到5000

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)公有同义词

六.分区表

分区表的含义

Oracle允许用户把-个表中的所有行分成几部分,并将他们存储在不同的表空间。分成的每部分称为一个分区,被分区的表称为分区表(Partition).

对于包含大量数据的表来说,分区很有必要.分区表的优点如下:

改善表的查询性能。在对表进行分区后,用户执行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);

Oracle事务和常用数据库对象

标签:enc   管理系   lang   sequence   system   sele   输入   独立   自动生成

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://blog.51cto.com/14400213/2460421

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值