Oracle中的对象详解

假装没事ソ 提交于 2020-01-22 22:50:57

学习目标

  1. 视图
  2. 索引
  3. 同义词
  4. 序列
  5. 表空间

宁静致远,天道酬勤

什么是表?
表是有行和列组成的结构体

什么是视图?
视图是一条select查询语句创建组成的一个虚表

示例:
```
--创建视图
create or replace view v_student 
as
select * from  test where sex='m'   --性别是男的数据信息
--视图创建成功 ,基表是test表
--查询一下视图
select * from v_student  
--对视图进行增删修改测试
--添加
insert into v_student values(1001,'张三',‘f’)  
--修改
update v_student sex sname='测试' where sname='张三'
--删除
delete from v_student where sname='张三'
--删除视图
drop view v_student  
--以上都执行成功 ,查询基表
select * from test
--你发现基表数据被变动了,说明在视图上进行的操作基表也会改变
--讲解一个视图的关键词
 or replace --我上面也带了,意思是创建视图的时候,如果已经存在,它则会覆盖以前的视图,如果没有则创建视图,好累
 --with read only 只能进行查询操作
--with check option 必须满足sql语句条件才能正常执行添加操作
创建表的时候直接跟在最下面就可以了
```

视图的优点:
1 安全,使用视图将用户基表分开
2 方便,简化sql命令
3 一致性,视图不存储数据,操作视图就是在操作基表数据

什么是索引?
索引是对数据库表中一列或多列的值进行排序的一种结构,我打个比方吧
一本书如果没有目录指定内容在多少页查找起来肯定比较慢,但是有了目录索引只后呢,索引就是让系统快速的找到指定的数据,并非全部过一遍
go,看代码

示例表:
create table demo
(
 empno int,
 sname varchar2(20)
)
创建索引:
create unique index dm_empno on demo(empno)  --这是一个唯一索引,你把前面的unique去掉就是不唯一索引了
删除索引:
DROP INDEX index_ename;
查看是否创建成功?
select rowid from demo  --成功
--如果你设置的有主键就不能创建索引了,因为主键就是唯一的
索引的管理:
User_indexes:存放用户所创建的索引信息
User_ind_columns:存放用户索引的字段信息

什么是同义词?

同义词就是为oracle数据库中的对象创建一个别名,使该对象的非创建者也可以直接通过该别名来访问。
同义词分为2种

--公共的:
create synonym ep for scott.emp;--私有同义词
--私有的:
create public synonym ep2 for scott.emp--公共的同义词

顾名思义私有的只能在当前用户访问,公共的可以在其他的用户访

同义词的优点:
1 应用程序应当尽量避免直接使用表名,DBA或设计人员改变了表名将直接影响程序,如果程序使用同义词,则只需修改同义词即可

2 方便使用,不需带上模式名

3 增强移植性
定义共有同义词,换了用户也可以使用
但是同义词不能代替权限,在使用同义词前要确保用户已得到访问对象的权限

什么是序列?

在Oracle数据库中不像sqlserver中可以设置自增列,索引这个序列就可以实现自增的效果。
序列有两个伪列:

CurrVal:表示当前列
NextVal:下一个序列值

go,代码演示

创建一个序列:
create sequence rao
incremet by 1 --定义序列生长每次加1 
srart with 1 --定义从1开始
maxvalue 100 --定义最大到100
minvalue 1  ---定义最小值
nocycle --定义是否循环 ,到了100之后是否循环回来从1开始把no去了就是循环,这里不循环
cache  20--定义序列站的内存块大小 
--创建成功
进行添加操作:
insert into demo values(rao.nextval,'张三')
insert into demo values(rao.nextval,'张三2')
insert into demo values(rao.nextval,'张三3')
查询下当前创建的个数
select rao.currval from dual --3
第一次使用currval查询必须先访问nextval进行增加一次,只要访问它就会增加

作者也是学习中的小白,一起加油吧
–原创阿宇

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!