05-Oracle中的对象(视图,索引,同义词,系列)

news2024/10/2 1:36:29

本章主要内容:

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_EMP1
	AS
	SELECT * 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_EMP2
	AS
	SELECT * 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_EMP2
	AS
	SELECT * FROM EMP WHERE sal>2500
	WITH CHECK OPTION         --不符合视图条件的数据不让插
INSERT INTO V_EMP2 (empno,ename,sal) VALUES (52,’HR’, 2100); --失败
CREATE OR REPLACE VIEW V_EMP_DEPT
	AS
	SELECT 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 
	AS
	SELECT * 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 20
	NOORDER;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过websoket实现即时通讯+断线重连?

本篇博客只是一个demo,具体应用还要结合项目实际情况,以下是目录结构: 1.首先通过express搭建一个本地服务器 npm install express 2.在serve.js中自定义测试数据 const express require(express); const app express(); const http req…

详细stm32驱动SDRAM的注意事项以及在keil中的使用

SDRAM的主要参数: 容量:SDRAM的容量是指其可以存储的数据量,通常以兆字节(MB)或千兆字节(GB)为单位。 时钟频率:SDRAM的时钟频率指的是其内部时钟的速度,通常以兆赫&…

94. 二叉树的中序遍历

94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 (左根右)。 首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历…

MQTT协议-订阅主题和订阅确认

MQTT协议-订阅主题和订阅确认 SUBSCRIBE——订阅主题 订阅是客户端向服务端订阅 订阅报文 订阅报文与CONNECT报文类似,都是由固定报头可变报头有效载荷组成 固定报头比较简单,也是由两个字节组成,第一个字节为82,第二个字节是…

像素密度提升33%,Quest Pro动态注视点渲染原理详解

在Connect 2022上,Meta发布了Quest Pro,并首次在VR中引入动态注视点渲染(ETFR)功能,这是一种新型图形优化技术,特点是以用户注视点为中心,动态调节VR屏幕的清晰度(注视点中心最清晰、…

Oracle VM VirtualBox6.1.36导入ova虚拟机文件报错,代码: E_INVALIDARG (0x80070057)

问题 运维人员去客户现场部署应用服务,客户是windows server 服务器(客户不想买新机器),我们程序是在linux系统里运行(其实windows也可以,主要是为了保持各地环境一致方便更新和排查问题)我们使…

吐血整理学习方法,2年多功能测试成功进阶自动化测试,月薪23k+......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 测试进阶方向 测试进…

[Gin]框架底层实现理解(三)

1.engine.Run(port string) 这个就是gin框架的启动语句,看看就好了,下面我们解析一下那个engine.Handler() listenandserve 用于启动http包进行监听,获取链接conn // ListenAndServe listens on the TCP network address addr and then ca…

【SOP 】配电网故障重构方法研究【IEEE33节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Java中wait和sleep区别

文章目录1. Java中wait和sleep区别2. wait和sleep所属方法的不同3. wait的Demo3.1 没有synchronized同步代码块异常3.2 wait使用Demo4. sleep的Demo1. Java中wait和sleep区别 sleep属于Thread类中的static方法;wait属于Object类的方法sleep时线程状态进入TIMED_WAI…

java 如何实现在线日志

如何采集springboot日志至web页面查看 实现方案 基于Filter方式,在日志输出至控制台前,LoggerFitler 拦截日志通过websocket推送至前台页面 实现逻辑: LoggerFilter采集日志添加至LoggerQueue队列, LoggerConsumer 从LoggerQueue中采集推送至前台页面 #mermaid-s…

LearnOpenGL-光照-3.材质

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject 文章目录材质例子1代码相关光照太强了例子2例子3: 不同的光源颜色材质 引出材质 如果我们想要在OpenGL中模拟…

TTS | 语音合成常见数据集及数据格式详情

linkLJSpeech网址 : The LJ Speech Dataset (keithito.com)数据集描述:数据集大小:2.6GB这是一个公共领域的语音数据集,由 13,100 个简短的音频剪辑组成 一位演讲者阅读 7 本非小说类书籍的段落。为每个剪辑提供转录。…

删除的文件怎么恢复?恢复方法在这里(支持Win和Mac)

案例:文件永久删除还能找回来吗?关于Win和Mac系统的恢复方法 “前几天我在清理电脑垃圾,不小心误删了重要的文件。有没有什么比较全面的方法,可以帮助我恢复删除的文件啊?在线急等回复!” 随着电脑使用的…

Golang 中 Slice的分析与使用(含源码)

文章目录1、slice结构体2、slice初始化3、append操作4、slice截取5、slice深拷贝6、值传递还是引用传递参考文献众所周知,在golang中,slice(切片)是我们最常使用到的一种数据结构,是一种可变长度的数组,本篇…

三维人脸实践:基于Face3D的渲染、生成与重构 <二>

face3d: Python tools for processing 3D face git code: https://github.com/yfeng95/face3d paper list: PaperWithCode 3DMM方法,基于平均人脸模型,可广泛用于基于关键点的人脸生成、位姿检测以及渲染等,能够快速实现人脸建模与渲染。推…

MySQL基础篇3

第一章 多表关系实战 1.1 实战1:省和市 方案1:多张表,一对多 方案2:一张表,自关联一对多 id1 name‘北京’ p_id null; id2 name‘昌平’ p_id1 id3 name‘大兴’ p_id1 id3 name‘上海’ p_idnull id4 name‘浦东’…

中国人工智能企业中集飞瞳全球港航人工智能领军者,箱况残缺检测视频流动态感知智能闸口,自动化港口码头数字化智慧港航中国人工智能企业

中国人工智能企业中集飞瞳全球港航人工智能领军者,箱况残缺检测视频流动态感知超级智能闸口,自动化港口码头数字化智慧港航。CIMCAI已完成全球250万人工智能集装箱箱况检验,完成全球上亿集装箱信息,先进产品在全球各港区及集装箱枢…

CNStack 多集群服务:基于 OCM 打造完善的集群管理能力

作者:学靖 概述 随着 Kubernetes 在企业业务中的应用和发展,单集群内的管理能力已经趋于完善,越来越多的客户期望在多云、多集群场景部署其业务,因此需要提供相应的多云、多集群管理能力。 CNStack 多集群服务是 CNStack 面向多…

【实现“大图”功能 Objective-C语言】

一、这时候,我们来实现另外一个功能,就是点击,实现这个“大图”, 1.点击“大图”按钮,实现这个“大图”, 那么我先给大家说一下,这个点击“按钮”,实现“大图”,这个思路是怎样的,大家看一下,这个示例程序,当你点击“大图”的时候,首先,这个图片变大,同时,后…