Oracle事务和常用数据库对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle事务和常用数据库对象相关的知识,希望对你有一定的参考价值。

1、事务:有一组命令组成的逻辑单元,保证所有操作要么全部成功要么全部失败。
以下情况事务结束:1)显式提交(commit) 2)显式回滚(rollback) 3)ddl语句隐身提交 4)正常结束程序提交 5)非正常结束程序回滚
事务特点:ACID特性
1)原子性 2)一致性 3)隔离性 4)持久性
命令:commit 提交 rollback 回滚 set autocommit on 自动提交(回滚无效)
2、索引:快速访问数据,一个单列最多只能建一个索引
访问数据的方法:全表扫描、通过rowid(行号)、索引
索引分类:1)B树索引:(balance平衡索引)每个节点查询速度一样,默认为b树索引,唯一索引和复合索引同时也是b树索引。
2)唯一索引(unique):索引列没有重复值
3)反向键索引(reverse):反转索引列的数据值。适应建在列值连续增长的列上。不能做范围查询。
4)位图索引(bitmap):适应于列值很少的列上。占用空间小、减少响应时间,不适应频繁更改的表
5)其他索引:组合索引、函数索引
命令: 1)创建索引:create [unique|bitmap] index 索引名 on 表名(列名) [reverse]
2) 重建索引:alter index 索引名 rebulid
3)合并索引:alter index 索引名 coalesce
3、视图:虚拟表不占空间,数据存储在基表中。
语法:create [or replace替换] [force强制] view 视图名 as sql语句 [with check option约束][with read only只读]
force强制创建带错误视图:无论基表是否存在、列是否有效、表是否有权限 sql语句中可以带order by字句
with check option只能插入或更新可以访问的行
对视图的修改只能对一个基表并且不能违反约束不包含聚合函数
作用:保证数据安全性、隐藏数据的复杂性、简化命令、与基表定义的修改隔离、可以灵活的重命名列
物化视图:具有物理存储空间的特殊视图。有两个概念:查询重写和物化视图同步,同步刷新有on commit(基表更改即同步到视图)和on demand(手动)两种方式,刷新方式有complete(完全)、force(默认方式,优先fast)、fast(增量)、never(不刷新)四种
创建物化视图(需要有相应权限):1)创建物化日志:create materialized view log on 表名 with rowid;
2)创建物化视图:create materialized view 视图名 build immediate refresh fast on commit enable query rewrite as sql语句
4、序列: 用来生成连续的整数值的列值,可以升序或降序。
语法:create sequence 序列名 [start with 初始数字][increment by 增长值][maxvalue 最大值][minvalue 最小值]
可以用nextval查询下一个序列值和currval查询当前序列值,伪列的值存储在虚拟表dual中
查询序列:select sequence_name,increment_by from user_sequences
5、同义词:对象的别名,不占用空间
用途:简化sql语句、隐藏对象名称和所有者、为远程对象提供位置透明性、提供对数据库对象的公共访问。
分类:私有同义词、公有同义词
1)私有同义词:只能被当前模式用户访问必须有create [any] synonym权限
creae synonym 同义词名称 for 对象名
2)公有同义词:可以被所有的用户访问,必须有create public synonym权限
create public synonym 同义词名 for 对象名
6、分区表:将一个表分成几部分存储在不同的表空间成为一个个分区。
有点:改善表的查询性能、表更容易管理、便于备份和恢复、提高数据安全性
分区方法:范围(range)、列表(list)、散列(hash)、复合、间隔、虚拟列分区
语法:create table 表名(字段1,字段2,..) patiton by range(分区字段) (partition p1 values less then (值),partition p2 ....)
查询分区表:select from 表名 partition(p1)
命令:
alter user scott account unlock 解除对scott用户的锁定
alter user scott identified by 密码 设置scott用户的密码
grant connect,resource to scott 为scott用户授权
select username,account_status from dba_users 查用户的锁定状态
select object_name,object_type from user_objects 查用户所有对象及类别
select rowid,rownum from dept 查dept表的伪列rowid和rownum,序列中的nextval和currval都是伪列,可查不可修改
select table_name,index_name,column_name from user_ind_columns 查被索引字段
create unique index dept_index on dept(dname) 在dept表中创建dname的唯一索引
create index emp_reserve on emp(empno) reverse; 在emp表中创建empno的反向索引
alter table emp drop constraint pk_emp cascade drop index; 删除主键索引
create view v3 as select
from dept where loc=‘BOSTON‘ with check option constratint ycq; 在dept表创建v3视图,并添加约束禁止修改loc列
grant create materialized view,query rewrite,create any table,select any table to scott;授予scott有创建物化视图和任意表的权限
select 序列名.nextval,序列名.currval,user,sysdate from dual 查询下一个和当前序列号及当前用户和系统时间
grant create any synonym to scott; 授予scott用户有创建任意同义词的权限
create synonym e for emp; 为emp表创建私有同义词e
create public synonym a for emp; 为emp表创建公有同义词a
create table student (id int,name char(10)) partition by range (id) (partition p1 value less than (‘10‘),partition p2 value less than (‘20‘),partition p3 value less than (‘30‘),partition p4 value less than (maxvalue)); 创建student表,id小于10的为第一分区表...

以上是关于Oracle事务和常用数据库对象的主要内容,如果未能解决你的问题,请参考以下文章

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

Oracle事务和常用数据对象

Oracle事务和常用数据对象

Oracle事务和常用数据库对象

Oracle事务和对象上集(视图索引)

在oracle中,事务中使用下列SQL语句不会引起锁定?