05-Oracle中的对象(视图,索引,同义词,系列)
创始人
2024-05-30 16:10:57
0

本章主要内容:

1.视图管理:视图新增,修改,删除;

2.索引管理:索引目的,创建,修改,删除;

3.同义词管理:同义词的作用,创建,修改,使用及删除;

4.系列管理:系统作用,系列创建、修改、使用及删除;

什么是视图

1.视图是一种数据库对象,它允许用户从一个或多组表中通过查询语句创建一个“虚表”。 2.视图中并没有存放数据,而仅仅是一条select查询语句,查询结果以表的形式表示。 3.视图是创建在表的基础上的,也可以在视图的基础上再创建视图。视图不能创建索引。 4.创建视图的表称为基表 5.视图中可含有多表联接、集合运算符、DISTINCY运算符、集合函数、GROUP BY、CONNECT BY等字句时,视图通常是不能修改。

视图的优点

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

SQL语句管理视图

创建语句
CREATE VIEW VIEW_NAME AS SELECT * FROM BASE_TABLE 
[WITH READ ONLY]
[WITH CHECK OPTION]
使用视图进行操作
select  column_list from VIEW_NAME
删除视图
Drop VIEW_NAME

视图举例

CREATE OR REPLACE VIEW V_EMP1ASSELECT * FROM EMP;
SELECT * FROM USER_VIEWS;	   --查看用户的视图
DESC V_EMP1	 --查看视图的结构
INSERT INTO V_EMP (empno,ename,sal) VALUES (51,’HR’, 4000);
往视图插入数据,实际将数据插入到了基表
SELECT * FROM EMP;		 --查询看一下插入成功没
CREATE OR REPLACE VIEW V_EMP2ASSELECT * FROM EMP WHERE sal>2500;
INSERT INTO V_EMP2 (empno,ename,sal) values(51,’HR’, 2100); --OK
插入也能成功,可以查一下基表,但是查询该视图却看不到数据
SELECT * FROM V_EMP2	--看不到往视图插入的数据,造成错觉
CREATE OR REPLACE VIEW V_EMP2ASSELECT * FROM EMP WHERE sal>2500WITH CHECK OPTION         --不符合视图条件的数据不让插
INSERT INTO V_EMP2 (empno,ename,sal) VALUES (52,’HR’, 2100); --失败
CREATE OR REPLACE VIEW V_EMP_DEPTASSELECT empno,ename,sal,d.deptno,d.dname FROM EMP e INNER JOIN DEPT d ON e.deptno = d.deptno;
INSERT INTO V_EMP_DEPT VALUES(‘1005’,’TOM’,3100,’52’, ‘SALES’); 
失败,多表连接的视图不让插入和修改CREATE OR REPLACE VIEW V_READ ASSELECT * FROM EMP WITH READ ONLY;  --只读的视图,不能插入、修改、删除记录

索引的管理

•索引是基于表建立的一种数据结构,通过表中的某些字段上建立索引,可以提高系统对表的查询速度。 •索引表中只保存索引关键字和纪录号,查询时根据索引关键字,可以从索引表中找到对应的纪录号,根据纪录号就可以快速的将纪录指针移到与关键字相对应的纪录上,从而得到查询结果。 •支持两种索引: B树索引 •用一个倒置的树状结构来加快查询表的速度 位图索引 •只存在与oracle的企业版本中,适合在数据表中的列值重复较多的情况下创建索引

索引的原理

CREATE INDEX IDX_EMP on EMP (deptno,mgr);

 索引的管理

•创建不唯一索引

CREATE INDEX  index_name on TABLE_NAME(index_column) TABLESPACE SYSTEM STORAGE ( initial 20 k next 20 k pctincrease 75) pctfree 0 ;

•创建唯一索引

CREATE UNIQUE INDEX idx_emp_ename on EMP(empno) TABLESPACE users STORAGE ( initial 20 k next 20 k pctincrease 75) 、pctfree 0 ;

•创建位图索引

CREATE bitmap INDEX on EMP(sex); --可能的值少,重复多

•删除索引

DROP INDEX index_ename;

索引的管理

User_indexes:存放用户所创建的索引信息
User_ind_columns:存放用户索引的字段信息查询ida表的索引信息
select index_name,column_name,column_position from user_ind_columns where table_name=‘IDA'

同义词管理

•同义词就是为oracle数据库中的对象创建一个别名,使该对象的非创建者也可以直接通过该别名来访问。 •Oracle同义词有两种: 公有同义词 •由DBA创建,所有用户都可以访问 •CREATE public SYNONYM EMP  FOR SCOTT.EMP; 私有同义词 •只能由创建者自己使用 •CREATE SYNONYM EMP  FOR SCOTT.EMP; •删除同义词: Drop synonym EMP •与同义词有关的数据字典 DBA_SYNONYMS:是数据库中的所有同义词的描述 ALL_SYNONYMS:是数据库中的所有同义词的描述 User_SYNONYMS:是用户可存取的所有同义词 •select * from DBA_SYNONYMS WHERE SYNONYM_NAME=‘EMP’;

同义词用途

•应用程序应当尽量避免直接使用表名,DBA或设计人员改变了表名将直接影响程序,如果程序使用同义词,则只需修改同义词即可 •方便使用,不需带上模式名 •增强移植性 定义共有同义词,换了用户也可以使用

序列的管理

•序列就是一个连续的数字生成器,可设置为上升或下降 •当序列第一次被调用的时候将返回一个指定的值,然后根据规则增量增长 •序列可以是循环的,也可以是连续增加的,直到一个限制值为止。 •序列有两个伪列: CurrVal:表示当前列 NextVal:下一个序列值

语法:CREATE SEQUENCE sequence_name[INCREMENT BY n]
[START WITH n][{MAXVALUE n}][{MINVALUE n}]
[{CYCLE |NOCYCLE}][{CACHE n|NOCACHE}]; 
INCREMENT BY:指定步长 。
START WITH:指定初始值 。
MAXVALUE:指定序列可生成的最大值。
MINVALUE:指定序列的最小值。CYCLE--配置序列在达到界限值时重复编号NOCYCLE--达到界限值时不重复编号,一直累加,不循环,这是默认值。
CACHE--定义在内存中保留的序列编号块的大小,默认值为20.NOCACHE--强制数据词典对于生成的每个序列编号进行更新,保证在生成的编号中没有空缺,但这样会降低性能. 

•创建一个序列

CREATE  SEQUENCE  myseq  INCREMENT BY 1 START WITH 1 MAXVALUE    1.0E28 MINVALUE  1 NOCYCLE CACHE 20NOORDER;CREATE TABLE AA (id number(10,0) not null, aa varchar2(10));

使用序列

insert into AA values(myseq.NEXTVAL, 'first');
insert into AA values(myseq.NEXTVAL, 'second');
SELECT * FROM AA;
SELECT myseq.CURRVAL from dual;

•删除一个序列

Drop sequence myseq

•与序列有关的数据字典

DBA_SEQUENCE: •存放数据库中的所有序列的描述信息 ALL_SEQUENCE: •存放当前用户可存取的所有序列 USER_SEQUENCES: •用户序列的说明 •SELECT SEQUENCE_NAME, MIN_VALUE  , MAX_VALUE •FROM  user_sequences where SEQUENCE_NAME ='SQ'

本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

讲师课堂链接:https://edu.csdn.net/lecturer/893

相关内容

热门资讯

润禾材料涨2.27%,成交额1... 5月12日,润禾材料盘中上涨2.27%,截至09:35,报39.18元/股,成交1948.55万元,...
众源新材涨2.04%,成交额1... 5月12日,众源新材盘中上涨2.04%,截至09:40,报10.02元/股,成交1926.44万元,...
浔兴股份跌2.54%,成交额1... 5月12日,浔兴股份(维权)盘中下跌2.54%,截至09:41,报9.20元/股,成交1.01亿元,...
突发!金价大跌,A股港股高开!... 每经编辑|毕陆名 刚刚过去的这个周末,大事频发,随着中美贸易谈判出现积极进展、印巴...
捷强装备跌2.15%,成交额7... 5月12日,捷强装备盘中下跌2.15%,截至09:35,报29.58元/股,成交7273.96万元,...
厚普股份涨2.06%,成交额2... 5月12日,厚普股份盘中上涨2.06%,截至09:40,报9.91元/股,成交2302.99万元,换...
东芯股份涨2.01%,成交额5... 5月12日,东芯股份盘中上涨2.01%,截至09:40,报32.52元/股,成交5488.77万元,...
菲利华涨2.01%,成交额72... 5月12日,菲利华盘中上涨2.01%,截至09:42,报48.75元/股,成交7210.29万元,换...
富满微涨2.01%,成交额23... 5月12日,富满微盘中上涨2.01%,截至09:41,报30.41元/股,成交2314.82万元,换...
5月12日人民币对美元中间价报... 中新网5月12日电 据中国外汇交易中心网站消息,中国人民银行授权中国外汇交易中心公布,2025年5月...
梦洁股份跌2.07%,成交额1... 5月12日,梦洁股份(维权)盘中下跌2.07%,截至09:42,报3.79元/股,成交1906.76...
盛泰集团跌2.02%,成交额1... 5月12日,盛泰集团盘中下跌2.02%,截至09:41,报6.30元/股,成交1688.14万元,换...
普利退涨2.67%,成交额24... 5月12日,普利退(维权)盘中上涨2.67%,截至09:42,报0.77元/股,成交246.72万元...
西部超导涨2.00%,成交额8... 5月12日,西部超导盘中上涨2.00%,截至09:41,报50.90元/股,成交8972.82万元,...
锂电池ETF(561160)开... 5月12日,锂电池ETF(561160)开盘涨1.27%,报0.479元。锂电池ETF(561160...
中药50ETF(562390)... 5月12日,中药50ETF(562390)开盘涨0.32%,报0.952元。中药50ETF(5623...
新能源车龙头ETF(15963... 5月12日,新能源车龙头ETF(159637)开盘涨0.66%,报0.611元。新能源车龙头ETF(...
机床ETF(159663)开盘... 5月12日,机床ETF(159663)开盘涨0.90%,报1.122元。机床ETF(159663)重...
碳中和龙头ETF(159640... 5月12日,碳中和龙头ETF(159640)开盘涨0.54%,报0.742元。碳中和龙头ETF(15...
交运ETF(159662)开盘... 5月12日,交运ETF(159662)开盘涨0.20%,报0.991元。交运ETF(159662)重...