oracle学习之表管理,约束以及视图索引同义词的操作

在oracle中,常见的数据库对象有:

表,视图,索引,序列,同义词

存储过程,存储函数,触发器,包,包体,数据库链路(datalink),快照

表是数据库的基本存储单元,以行列组成,命名规则:

1,必须以字母开头

2,长度在1~30之间

3,oracle默认存储都存为大写

创建表必须具备:权限 和 表空间

常见的数据类型如下:

//创建表语法:
create table tablename(col1 type,col2 type,col3 type …);

  例子:

create table t1(id number(2),tname varchar2(30),hiredate date default sysdate);

  增加一列:

alter table t1 add email varchar2(40);

  修改列属性:

alter table t1 modify email varchar2(50);

  修改列名:

alter table t1 rename column email to address;

  删除列名:

alter table t1 drop column address;

  重命名表:

rename t1 to t2;

  删除表:

drop table t2;

这里要注意,删除后,还会存在回收站中,可以使用下面的语句查看:

show recyclebin;

如果想恢复,可以使用下面语句闪回:

flashback table t2 to before drop;

  当然了,也可以直接清空回收站:

purge recyclebin;

  如果想在删除时,直接不进入回收站,可以使用:

drop table t2 purge;

表的约束,类型主要有:

1,非空 not null

2,唯一 unique

3,检查 check

4,主键 非空 + 唯一 primary key

5,外键 引用其它表的主键字段

  当主表数据删除时,子表可以 set null , on delete set null

  当主表数据删除时,子表的数据级联删除 ON DELETE CASCADE

  默认方式,当子表有数据的时候,不让删除主表,而是先删除子表数据,在删除主表

表的约束创建,使用 constraint 给约束起别名,references 引用:

create table emp2(sid number(4) constraint PK_EMP2 primary key,
                  sname varchar2(30) not null,
                  email varchar2(30) unique,
                  sex varchar2(10) check (sex in('男','女')),
			sal  number(10) check(sal > 10000),
                  deptno number(2) references dept(deptno) on delete set null
                  );

 

表的序列化

当多个人同时操作主键字段,如何保证不会重复,这就需要用到序列,给主键字段使用。

创建序列:

create sequence myseq;

这里要注意,同一行,只会增加一次序列

什么情况下会导致主键不连续:

1,删除数据

2,多个表使用同一个序列

3,执行rollback,序列在实例中,不会回滚

4,掉线,宕机,重启直接加载下一段

删除序列:

drop sequence myseq;

  

常见数据库对象:视图

它是从表中抽出的逻辑上相关的数据集合,特性:

1,视图基于表

2,视图是逻辑概念

3,视图本身没有数据
视图的优点如下:

1,简化复杂查询

2,隔离数据访问,不建议通过视图对表进行修改

创建视图:

create or replace view  vdeptcount  as
select d.deptno,d.dname,count(e.empno) count
  from dept d,emp e
 where d.deptno = e.deptno(+)
group by d.deptno,d.dname
order by d.deptno;

  简化后可以使用如下语句查看:

select * from vdeptcount;

  默认情况下会提示没有权限创建视图,需要登录管理员增加权限:

sqlplus sys/sys@orcl100 as sysdba;
grant create view to scott;

使用视图需要注意三点:

1,视图不能提高查询效率

2,视图本身没有数据,数据依赖于表

3,不建议通过视图对原表进行操作

 

同义词,作用如下:

1,简化复杂查询

2,隔离数据方问

创建同义词同样也需要权限:

grant create synonym to scott;

  开始创建:

create synonym employees for hr.employees;

  删除同义词:

drop synonym employees;

  

 索引,提市内数据检索速度,提高效率(视图不可以)

1,索引被删除或者损坏,不会对表产生影响,只会影响查询速度

2,索引一旦建立,由oracle自动维护

3,在删除表时,会自动删除

创建索引仍然需要权限 + 表空间

create index myindex on emp(ename);

  建立好后,索引的字段ename必须作为查询字段,要不也没有意义。

还可以创建联合索引:

create index myindex on emp(ename,deptno);

什么情况可以创建索引:

1,列中数据值分布范围很广

2,列经常在 where 子句 或者连接条件中出现

3,表经常被访问且数据量很大,访问的数据大概占数据总量的2%~4%

posted @ 2017-11-13 19:38  *平凡*随风舞  阅读(349)  评论(0编辑  收藏  举报