一、什么是方案:
属于一个用户下,所有数据库对象的总称表、视图、序列、索引、同义词 存储过程、存储函数、触发器、包和包体一个用户就是一个方案,创建用户的时候,系统会自动创建一个同名的方案
二、常用的数据库对象
1、临时表:当事务或者会话结束的时候,表中的数据自动删除
创建:
自动创建:order by
手动创建:create global temporary table ******
基于事务的临时表:
create global temporary table test1 (tid number,tname varchar2(20)) on commit delete rows;
基于会话的临时表:
create global temporary table test2 (tid number,tname varchar2(20)) on commit preserve rows;
- delete rows表示事务相关,也就在事务结束后truncate data in the temporary table.当事务提交后数据就已经清除;
- preserve rows表示在会话结束后清除临时表的数据,在会话中止时或者导常退出时数据都会被清除掉;
2、约束的状态
(1) enable disable
(2) validate: 对表中已经存在的数据和将来的数据都要验证
(3) novalidate: 对表中已经存在的数据不做验证,只将来的数据
create table test3
(
tid number,
tname varchar2(20),
email varchar2(40)
);
insert into test3 values(1,‘Tom‘,‘[email protected]‘);
insert into test3 values(2,‘Mary‘,‘[email protected]‘);
在email上加上unique约束:
alter table test3 add constraint test3_email_unique unique(email);
alter table test3 add constraint test3_email_unique unique(email) deferrable enable novalidate;
3、Oracle的分区
(1)类型:
*、范围分区
*、列表分区
*、Hash分区
*、范围-列表分区
*、范围-Hash分区
(2)例子:
*、范围分区
create table test4
(
empno number,
ename varchar2(20),
sal number,
deptno number
)
partition by range(sal)
(
partition part_range_1 values less than (1000),
partition part_range_2 values less than (3000),
partition part_range_3 values less than (MAXVALUE)
);
查看SQL的执行计划
explain plan for select * from test4 where sal<=2500;
select * from table(dbms_xplan.display);
*、列表分区
create table test5
(
empno number,
ename varchar2(20),
sal number,
deptno number
)
partition by list(deptno)
(
partition part_list_1 values(10,20),
partition part_list_2 values(30),
partition part_list_3 values(40,50)
);
*、Hash分区(求余数)
create table test6
(
empno number,
ename varchar2(20),
sal number,
deptno number
)
partition by hash(ename)
(
partition part_hash_1,
partition part_hash_2
);