Oracle--常用数据库对象(视图、序列、索引、同义词)详解

Oracle数据库【视图、物化视图、序列、索引】 阅读详情

常见的数据库对象

对象描述
表基本的数据存储集合,由行和列组成
视图从表中抽出的逻辑上相关的数据集合
序列提供有规律的数值
索引提高查询的效率
同义词给对象起别名

视图

什么是视图?
  • 视图是一个虚表\color{red}{虚表}虚表
  • 视图建立在已有表的基础上,视图赖以建立的这些表称为基表\color{red}{基表}基表
  • 向视图提供数据内容的语句为select语句\color{red}{select 语句}select语句,可以将视图理解为存储起来的select语句\color{red}{存储起来的select语句}存储起来的select语句
  • 视图向用户提供基表数据的另一种表现形式
  • 最大的优点就是简化复杂的查询。\color{red}{最大的优点就是简化复杂的查询。}最大的优点就是简化复杂的查询。
视图的优点

在这里插入图片描述

创建视图的语法
create [or replace] [force|noforce] view viewName
	[(alias[, alisa]...)]
[with check option [constraint constraint]]
[with read only [constraint constraint]];
  • force:子查询不一定存在
  • noforce:子查询存在(默认)
  • with read only:只能做查询操作
  • 子查询可以是复杂的select语句
    示例:建立一个视图,此视图包括了20号部门的全部员工信息
create view empView20 as select * from emp t where t.deptno=20;

select * from empView20;

在这里插入图片描述

语法2:
create or replace view 视图名称 as 子查询

如果视图已经存在我们可以使用语法2来创建视图,这样已有的视图会被覆盖。

create or replace view wmpView20 as select * from emp t where t.deptno=10;

select * from empView20;

在这里插入图片描述在这里插入图片描述

简单视图和复杂视图
特性简单视图复杂视图
表的数量一个一个或多个
函数没有有
分组没有有
DML操作可以有时可以

不建议通过视图对表中数据进行修改,因为会受到很多的限制。\color{red}{不建议通过视图对表中数据进行修改,因为会受到很多的限制。}不建议通过视图对表中数据进行修改,因为会受到很多的限制。

创建复杂视图

示例:查询各个部门的最低工资,最高工资,平均工资

create view dept_sum_vu
	(name, minsal, maxsal, avgsal)
as select d.department_name, MIN(e.salary),
		  MAX(e.salary), AVG(e.salary)
	from employees e, departments d
	where e.department_id = d.department_id
	group by d.department_name;
视图中使用DML的规定
  • 可以在简单视图中执行DML操作

  • 当视图定义中包含以下元素之一时不饿能使用delete:

    1. 组函数
    2. GROUP BY 子句
    3. DISTINCT 关键字
    4. ROWNUM 伪列
  • 当视图定义中包含以下元素之一时不能使用update:

    1. 组函数
    2. GROUP BY 子句
    3. DISTINCT 关键字
    4. ROWNUM 伪列
    5. 列的定义方式为表达式
  • 当视图定义中包含以下元素之一时不能使用insert:

    1. 组函数
    2. GROUP BY 子句
    3. DISTINCT 关键字
    4. ROWNUM 伪列
    5. 列的定义方式为表达式
    6. 列中非空的列在视图定义中未包括
屏蔽DML操作
  • 可以使用WITH READ ONLY 选项屏蔽对视图的DML操作
  • 任何DML操作都会返回一个Oracle server 错误
删除视图

删除视图只是删除视图的定义,并不会删除基本表的数据。

drop view vie;

drop view empView20;

序列

在很多数据库中都存在一个自动增长的列,如果现在要想在oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。并且Oracle将序列值装入内存可以提高访问效率。

序列:可供多个用户用来产生唯一数值的数据库对象:

  • 自动提供唯一的数值
  • 共享对象
  • 主要用于提供主键值
  • 将序列值装入内存可以提高访问效率
语法:
create sequence 序列名
	[increment by n]
	[start with n]
	[{MAXVALUE n| NOMAXVALUE}]
	[{MINVALUE n| NOMINVALUE}]
	[{CYCLE|NOCYCLE}]
	[{CACHE n| NOCACHE}];

示例:

create sequence dept_deptid_seq
	increment by 10
	start with 120
	maxvalue 9999
	nocache
	nocycle;

Sequence created.
查询序列

查询数据字典视图USER_SEQUENCES获取序列定义信息:

select sequence_name, min_value, max_value, increment_by, last_number
from user_sequences;
  • 如果指定NOCACHE选项,则列LAST_NUMBER显示序列中下一个有效的值

序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了以下的两种操作:

  • nextval:取得序列的下一个内容
  • currval:取得序列的当前内容

在插入数据时需要自增的主键中可以这样使用
在这里插入图片描述
序列可能产生裂缝的原因:

  • 回滚
  • 系统异常
  • 多个表公用一个序列
修改序列

修改序列的增量,最大值,最小值,循环选项或是否装入内存

alter sequence dept_deptid_seq
	increment by 20
	maxvalue 999999
	nochche
	noccle;
修改序列的注意事项
  • 必须时序列的拥有者或对序列有ALTER权限
  • 只有将来的序列值会被改变
  • 改变序列的初始值只能通过删除序列之后重建序列的方法实现
删除序列
  • 使用drop sequence 语句删除序列
  • 删除之后,序列不能再次被引用
drop sequence dept_deptid_seq;

Sequence dropped.

索引

索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o的次数,从而提高数据访问性能。

  • 一种独立于表的模式对象,可以存储在与表不同的磁盘或表空间中
  • 索引被删除或损坏,不会对 表产生影响,其影响的只是查询的速度
  • 索引一旦建立,Oracle管理系统会对其进行自动维护,而且由Oracle管理系统决定何时使用索引,用户不用再查询语句中指定使用哪个索引
  • 再删除一个表时,所有基于该表的索引会自动被删除
  • 通过指针加速Oracle服务器的查询速度
  • 通过快读定位数据的方法,减少磁盘 I/O

1. 单列索引:
单列索引是基于单个列所建立的索引,比如:

create index 索引名 on 表明(列名);

2. 复合索引:
复合索引是基于两个列或多个列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同,例如:

create index emp_idxl on emp(ename, job);
create index emp_idx1 on emp(job, ename);

示例:给person表的name属性建立索引

create index pname_index on person(name);

示例:给person表创建一个name和gender的索引

create index pname_gender_index on person(name, gender);
什么时候创建索引
  • 列中数据值分布范围很广
  • 列经常在where子句或连接条件中出现
  • 表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%
什么时候不要创建索引
  • 表很小
  • 列不经常作为连接条件或出现在where子句中
  • 查询的数据大于2%到4%
  • 表经常更新
查询索引

可以使用数据字典视图USER_INDEXES和USER_IND_COLUMNS查看索引的信息
在这里插入图片描述

删除索引
  • 使用DROP INDEX命令删除索引
drop index indexName;
  • 删除索引UPPER LAST NAME IDX
drop index upper_last_name_idx;

Index dropped.
  • 只有索引的拥有者或拥有drop any index 权限的用户才可以删除索引

同义词

  • 方便范文其它用户的对象
  • 缩短对象名字的长度
create [public] SYNONYM synonym
for object;
创建同义词

示例:为视图DEPT_SUM_VU创建同义词

create synonym d_sum
for dept_sum_vu;

Synonym Created.
删除同义词
drop synonym d_sum;

Synonym dropped.
【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER 在Apollo星火计划学习笔记——Apollo路径规划算法原理与实践与【Apollo学习笔记】——Planning模块讲到……Stage::Process的函数会依次调用task_list中的TASK,本文将会继续以LaneFollow为例依次介绍其中的TASK部分究竟做了哪些工作。由于个人能力所限,文章可能有纰漏的地方,还请批评斧正。在配置文件中,我们可以看到LaneFollow所需要执行的所有task。本文将继续介绍LaneFollow的第10个TASK——动态规划规划目标加速度尽可能小。 阅读详情

相关推荐

基于555定时器的D类功放设计:从PWM原理到无反馈电路实践

D类功放(数字功放)是一种高效率的音频放大技术,其核心原理是脉冲宽度调制(PWM)。它将输入的模拟音频信号转换为一系列高速开关的脉冲,通过控制功率开关管(如MOSFET)的通断,再经低通滤波器还原放大后的音频。相比传统AB类功放,其转换效率通常超过90%,显著降低了热能损耗。这项技术在追求高能效和小型化的现代音频设备中价值凸显,广泛应用于有源音箱、汽车音响和便携式设备。本文聚焦于一种独特的实现方案:以经典的555定时器芯片为核心,构建一个无整体负反馈的D类功放。通过剖析其PWM调制器、FET电压-电流转换级

weixin_30162121的博客 222

数据库常用对象(表、视图)

数据库常用对象(表、视图)

呵呵喝何何 1356

从CPRI到eCPRI:手把手教你用Wireshark分析基站前传协议帧结构

本文手把手教你使用Wireshark工具,深入解析从CPRI到eCPRI的基站前传协议帧结构。通过搭建分析环境、编写解析脚本,并对比两者在时延管理、帧格式及数据封装上的差异,为无线通信领域的研发与测试人员提供了一套实用的逆向分析与故障排查方法。

x8y9z0的博客 605

数据库对象之详解

数据库顾名思义就是指数据存放的地方。在计算机中,数据库是数据和数据库对象的集合!数据库对象是数据库中重要的组成部分,常见的有这么几种: 一、表(Table) 数据库中的表与我们生活当中的表格类似,由行(Row)和列(Column)组成列指同类信息,每列又称为一个字段,每列的标题称为字段名。行包括了若干列表信息项,一行数据称为一个或一条记录。一个数据库表由一条或多条记录组成,没有记录的表称为...

www.v5qq.com的技术博客 313

IDEA+JRebel实现SpringBoot+MyBatis Plus项目热部署全攻略(含XML热更新实战)

本文详细介绍了如何在IDEA中使用JRebel为SpringBoot与MyBatis Plus项目配置高效的热部署方案。通过安装激活JRebel插件并配置关键扩展,重点解决了MyBatis XML映射文件修改后无法即时生效的痛点,实现了Java代码与XML文件的秒级热更新,从而彻底摆脱频繁重启应用的开发困境,大幅提升编码与调试效率。

weixin_28831341的博客 472

【域控制器EMC】域控制器EMC设计总结

汇总项目设计当中关于EMC的设计要点,主要从原理设计、Layout、结构、外设部分总结。满足要求的器件和合理的电路能降低电磁干扰;正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。结构件设计也会对EMC性能产生影响。

weixin_42098658的博客 1259

数据库 表,视图,索引的创建

表,视图,触发器的创建 表的创建: 格式create table 表名 ( 字段名 数据类型, 字段名 数据类型, …(次数注意最后一个字段的后面没有逗号) ); 例子:创建一个名为T的表 其中有属性id数据类型为int,name数据类型为varchar,学分grade数据类型为double。 create table T ( id int, name varchar, grade double ); 视图的创建 视图是什么:我们select查询之后会得到一些数据,但是我们不能对查询出来的数据进行再操作,如

weixin_46506102的博客 836

智能汽车竞赛摄像头处理(4)——摄像头循迹思路讲解

智能汽车竞赛摄像头处理(4)对摄像头循迹思路进行讲解。

weixin_62261692的博客 7059

数据库MySQL用户创建、角色创建、权限授予

– 1.查询现有用户 use mysql; select * from user; – 2.创建用户 create user ‘zhengfan’@‘localhost’ identified by ‘2000’; create user ‘wanglaoshi’@‘localhost’ identified by ‘1234’; – 3.用户身份鉴定(DOS命令行) – 4.删除用户 drop ...

zfjiayoua的博客 6906

【UE4】Hierarchical Instanced Static Mesh——一种速度优于Spawn的实例化物体组件

最近需要在场景中实例出很多个相同的模型,位置也很有规律,并且要对它的位置信息进行更新。 但是一个个拖进去实在太麻烦,就发现了Spawn Actor这个蓝图方法,可以实例一个蓝图类在场景中。 但是由于数量较大,实例化的速度太慢,这时发现了一个神奇的组件——Hierarchical Instanced Static Mesh。 新建一个蓝图类,添加该组件,在细节里添加你要实例化的模型对象。 ...

ColorGalaxy 1万+

自动驾驶大模型---小米&华科的ORION端到端方案

本文介绍了小米汽车与华中科技大学联合开发的ORION自动驾驶端到端方案。该框架创新性地将视觉语言模型(VLM)与自动驾驶系统结合,包含QT-Former特征提取模块、大语言模型(LLM)推理模块和生成式规划器三大核心组件。通过视觉感知与语言理解的深度融合,ORION能更准确地理解人类指令并生成合理轨迹,同时提升系统的可解释性。实验证明,该方案在准确性、泛化能力和决策透明度方面均有显著优势。ORION框架为自动驾驶技术提供了新思路,有望推动行业向更安全、智能的方向发展。

智能汽车人的博客 2005

数据字典视图的查询

数据字典视图的查询 SQL> desc dictionary   Name                                      Null?    Type  ----------------------------------------- -------- ----------------------------  TABLE_NAME      

sh231708的博客 1933

【SpringBoot 3.x 第43节】你还敢说 Spring 启动慢是“宿命”?Spring AOT 把启动剧本都提前写死了,你服不服?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。

**My Coding Family** 540

oracle数据库---视图、物化视图、序列、同义词、索引

视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。一个视图所存储的并不是数据,而是一条预定义】SQL语句。根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。使用视图的优点:1.简化数据操作:视图可以简化用户处理数据的方式。

m0_63845988的博客 1901

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

oracle 视图、索引、序列、同义词

目录 1.视图对象 1.1创建视图 1)简单视图 2)建立只读视图 3)复杂视图 1.2管理视图 1)查看视图定义 2)修改视图定义 3)重新编译视图 4)删除视图 2.索引 2.1索引概述 2.2创建索引 1)建立B树索引 2)建立位图索引 3)建立反向键索引 4)基于函数的索引 2.3修改索引 合并索引 重建索引 重建索引同时修改表空间 2.4删除索...

树叶子的博客 1190

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Oracle数据库对象详解:视图、约束、序列、同义词与索引

这篇讲了 Oracle 的 5 大核心数据库对象: 视图:虚拟表,用来限制访问、简化查询; 约束:给数据定规矩,保证正确性; 序列:自动生成唯一数字,给主键赋值; 同义词:给对象起小名,简化操作; 索引:像目录一样,让查询变快。

qq_45438032的博客 1085

oracle实验9-10 索引与视图,序列和同义词的创建

传送门(不用再辛苦百度实验报告啦,一键直达呦) oracle实验1 oracle 基本操作 oracle实验2 oracle数据体系结构 oracle实验3 用户、方案的创建与管理 oracle实验4 表的创建与管理 oracle实验5 sql基本查询 oracle实验6 sql高级查询 oracle实验7 pl/sql编程基础 oracle实验8 存储过程与函数的创建 orac...

blaze_jack 2809

【Oracle】的表空间、视图、序列、同义词、索引详解

1.Oracle 数据库对象 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作。2.同义词 同义词(Synonym)是数据库对象的一个别名,Oracle 可以为表、视图、序列、过程、函数、程序包等指定一个别名。同义词有两种类型: 私有同义词:拥有 CREATE SYNONYM 权限的用户(包括非管理员用户)即可创建私有同

qq_35029429的博客 1392

Oracle的数据库对象分为五种:表,视图,序列,索引和同义词

(摘自不同文档如侵删)                    用户、数据库、表、视图、存储过程、存储函数、触发器、索引等 GRANT:授权语句,对应的是REVOKE(撤销授权语句)。   视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。  查询视图没有什么限制, 插入/更新/删除视图的操作会受到一定的限制...

weixin_42314686的博客 1140

Oracle数据库的视图、物化视图、序列、同义词、索引

Oracle数据库对象 视图物化视图序列同义词索引 注:以下数据库对象中,物化视图、序列、同义词为Oracle数据库特有 视图 含义:视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。 使用视图的优点: 简化数据操作:视图可以简化用户处理数据的方式。 着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。 视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限

i_am_handsome_的博客 683

Oracle 快速入门 同义词&序列&视图&索引

目录 一、数据库对象 二、同义词synonym 三、序列 四、视图 五、索引 六、综合代码 1.同义词部分: 2.序列: 3.视图和索引 一、数据库对象 1.数据库对象 2.同义词 3.序列 4.视图 5.索引 ......

m0_60786924的博客 1650

Oracle入门笔记(九)——视图、序列、索引、同义词和权限等

主要讲解视图、序列、索引、同义词等

weixin_46560512的博客 2039

ORACLE数据库中创建、删除--同义词、视图、索引、序列

/*创建,删除同义词*/select * from emp;create synonym emp_ny for emp;create public synonym pub_emp_ny for employees;--创建公有同义词DROP SYNONYM EMP_NY;--删除同义词DROP PUBLIC SYNONYM PUB_EMP_NY;--删除公有同义词/*创建,删除序列*/CREATE

远 1596

Oracle 常用脚本之查看视图、序列、存储过程、触发器、同义词、计划任务等信息

介绍如何通过 Oracle 数据字典查看视图、序列、存储过程/函数、程序包、触发器、同义词、计划任务以及对象之间的依赖关系等信息。

Tony.Dong的专栏 4079

数据库对象,序列,视图,索引

oracle06-数据库对象 一、数据库对象 1.1 什么是数据库对象 说白了就是pl/sql软件my objects里面的东西,最基本的可以理解为表。 数据库对象又称模式对象,是逻辑结构的集合。 最基本的数据库对象就是表。 数据逻辑结构:指的是存在一种或多种特定关系的数据元素集合。 通俗点:就是把数据元素形象地进行了有规则排列,但不用考虑在计算机上如何实现。 再通俗点:就是数据有规则的排列。表不就是有规则的排列吗? 数据库对象...

qq_62898618的博客 1730

oracle的序列、视图、同义词、索引、数据库备份、用户管理、范式整理

序列 在许多数据库之中存在一种自动增长的概念。像是SQL Server、MySQL、DB2都提供有这样的方式。唯独在Oracle之中没有(Oracle 12C之后就提供了,之前没有),但是在Oracle之中提供的是一种手工的自动增长的方式。而这样的控制在Oracle之中使用序列对象完成。 Create sequence 序列名称 [increment by 步长] [ star...

pshdhx的博客 5953

oracle 索引、同义词、序列

一、索引 1、概念: 是一个单独的、物理的数据库对象 用于存放表中每一条记录的位置的对象。 在创建索引时,先要对索引字段进行排序。 索引由Oracle自动维护 优点:提高查询速度 缺点:创建和维护索引需要时间;索引需要物理空间,随着数据量的增大而增大; 2、创建方式: 自动创建:通过约束,系统创建 手工创建 create [unique] [bitmap] index index_name on table_name(column_name) [reverse] [tablespace tablespace

wuwndj的博客 1684
上一篇: Oracle--使用DDL语句管理表、约束详解
下一篇: Oracle--使用DML语句处理数据及控制事务
吴声子夜歌
博客等级 码龄9年 2688粉丝 2268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值