博文结构
事务的使用
索引的使用
视图的做用
序列、同义词的使用
分区表的概念数据库
Oracle经过事务来保证数据库中数据的一致性。安全
事务就是业务上的一个逻辑单元,它可以保证其中对数据全部的操做要么所有成功,要么所有失败less
事务开始于一条可执行的SQL语句,继续执行事务主体,而后结束于如下的任意一种状况。分布式
显式提交(commit): 当事务遇到cormmit指令时,将结束事务并永久保存全部更改的数据。ide
显式回滚(ollback); 当事务遇到rollback指令时,也将结束事务的执行,可是此时它回滚
全部更改的数据到事务开始时的原始值,即取消更改。工具
DDL语句:一旦用户执行了DDL (Data DefinitionLanguage,数据定义语言,如 CREATE. DROP
等)语句,则以前全部的DML (Data Manipulation Language,数据操做语言)操做将做为一
个事务提交.这种提交称为隐式提交。性能
正常结束程序:若是Oracle数据库应用程序正常结束,如使用SQL Plus工具更改了数据,
而正常退出该程序(输入"exit"), 则Oracle 自动提交事务。spa
非正常地结束程序:当程序崩溃或意外停止时,全部数据更改都被回滚,这种回滚称为隐
式回滚。.翻译
事务的四个特性,即原子性(Atomicity). - 致性(Consistency)、隔离性. (Isolation)和持久性(Durability). 简写为ACID特性。code
(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决定的。
全表扫描。
使用索引。
案例:
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)公有同义词
分区表的含义
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) ); 二、向表中插入数据 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); 三、分别查询p1,p2,p3的数据 select * from student partition(p1); select * from student partition(p2); select * from student partition(p3); 四、要删除小于10岁的数据。 delete from student partition(p1);