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

article/2025/9/26 11:50:07

常见的数据库对象

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

视图

什么是视图?
  • 视图是一个 虚 表 \color{red}{虚表}
  • 视图建立在已有表的基础上,视图赖以建立的这些表称为 基 表 \color{red}{基表}
  • 向视图提供数据内容的语句为 s e l e c t 语 句 \color{red}{select 语句} select,可以将视图理解为 存 储 起 来 的 s e l e c t 语 句 \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 dwhere e.department_id = d.department_idgroup 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_seqincrement by 10start with 120maxvalue 9999nocachenocycle;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_seqincrement by 20maxvalue 999999nochchenoccle;
修改序列的注意事项
  • 必须时序列的拥有者或对序列有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.

http://chatgpt.dhexx.cn/article/LC1IMqSK.shtml

相关文章

Oracle【基础函数、视图、索引】

1. 认识oracle数据库 Oracle是非常强大的数据库软件。默认端口:1521。与MySQL不同的是,Oracle数据库的概念是一个操作系统装的就是一个大的数据库。一个数据库可以有很多个实例,每个实例占用一系列的进程和内存。通常一台机器只用一个实例。每…

主要是sql查询符合在圆形,多边形区域经纬度的数据

主要是sql查询符合在圆形,多边形区域经纬度的数据 查询 圆形 中心点 距离 drop table if exists demo; CREATE TABLE demo (id int(5) NOT NULL AUTO_INCREMENT COMMENT 主键,shop_name varchar(50) DEFAULT NULL COMMENT 商品名称,lng DECIMAL( 11, 8 ) DEFA…

mysql计算相关系数_用sql实现相关系数的计算

登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 静言_GRMC 于 2018-5-25 13:07 编辑 平时工作中要用到好多统计查询功能,一直用sql比较顺手,最近需要做相关系数方面的统计,发现除了Oracle自带了函数外,ms sql和mysql都没有自带计…

【SQL数据库基础05-2】常见约束与标识列

文章目录 常见约束01 基本概念1.1 含义:1.2 分类:六大约束1.3 添加约束的时机:1.4 约束的添加分类:1.5 主键和唯一的大对比:1.6 外键: 02 具体讲解2.1 创建表时添加约束1.添加列级约束2.添加表级约束 2.2 修…

关系数据库标准语言SQL视图模块

目录 一. 视图的特点 二. 基于视图的操作 2.1 建立视图 1)行列子集视图举例: 2)基于多个基表的视图: 3)基于视图的视图: 4)带表达式的视图: 5)建立分组视图&am…

Oracle的视图,索引,约束,事务,数据库范式

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第一节:SQL概述

pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解 文章目录 一:SQL的产生与发展二:SQL特点(1&a…

第三章 关系数据库标准语言 SQL

第三章 关系数据库标准语言 SQL 文章目录 第三章 关系数据库标准语言 SQL3.1 SQL 概述3.1.1 SQL 的特点 3.2 学生-课程数据库3.3 数据定义3.3.2 基本表的创建、删除与修改1. 基本表的创建2. 数据类型3. 插入数据4. 修改数据(1) 修改某一个元组的值(2) 修…

(九)密度聚类、层次聚类和轮廓系数[机器学习代码实现]

机器学习课程总结,本系列文章以代码和注释为主。 理论部分搬至博客上比较耗费时间,所以缺少理论部分。但是也欢迎大家一起探讨学习。 如果需要理论部分的讲义,可私信(个人觉的讲的很好很全)。 文章目录 问题需…

Oracle 数据库中的 索引、约束、视图

约束:就是指对插入数据的各种限制,约束既可在建表的时候直接声明,也可以为已经建好的表添加约束。 视图:就是一个封装了各种复杂查询的语句,就称之为视图。 索引:是一种用于提升查询效率的数据库对象。通过…

数据库原理与应用(SQL)——2、关系数据库(E-R图、关系模式、关系运算、关系代数)

目录 关系 关系运算 元组、域关系演算表达式 题目 关系代数表达式——例 元组演算表达式——例 域演算表达式——例 关系数据库是以二维表形式组织数据,应用数学方法处理数据库组织的方法。目前关系数据库系统在数据管理中已占据了主导地位。 关系 关系&…

Oracle约束 SQL语句分类 集合运算 索引 相关知识点讲解

ORACLE 约束: 数据库用来确保数据满足业务的手段,强制数据符合某些特定条件或者规范才可以插入 主键约束: primary key PK唯一约束:unique非空约束:not null外键约束:foreign key FK检查约束:…

SQL对数据进行统计、常用集合函数

学生表: 1、统计记录个数 1) count(【all】*)【as 列别名】 返回表中的记录数 执行:SELECT COUNT (* ) FROM 学生表 结果为: 执行:SELECT COUNT (* ) as 学生总人数 FROM 学生表…

关系数据库SQL数据查询

关系数据库SQL数据查询 数据查询 一、单表查询 1.查询仅涉及一个表,选择表中的若干列 [例1] 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student; [例2] 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;查询全部列 选出所有属…

样本轮廓系数(原理、sklearn.metrics.silhouette_score、silhouette_samples参数介绍)

一、轮廓系数含义: 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。 最佳值为1,最差值为-1。接近0的值表示重叠的群集。负值通常表示样本已分配给错误的聚类,因为不同的聚类更为相…

java上位机开发(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前对于java语言,很多人都认为太简单。其实这是不对的,因为某种意义上来说所,java语言就像学习日语一样&#…

Qt之上位机开发实战(一)

一、Qt三大金刚 1、qt下的串口编程 2、qt下的网络编程 3、qt下的GPIO 本章节先介绍一下qt下的串口编程,首先我们新建一个Widget项目 其中接受框使用Plain Text Edit(设置只读),串口号等按钮使用Combo Box,发送框使…

C# | 上位机开发新手指南(二)上位机通信

上位机开发新手指南(二)上位机通信 文章目录 上位机开发新手指南(二)上位机通信前言串口通信应用场景与控制器通信与传感器通信与仪器仪表通信与智能家居设备通信 常见协议ModbusCAN(Controller Area Network&#xff…

C# 西门子PLC上位机开发环境搭建

一、安装软件 1. TIA_Portal_STEP7 15 博途,西门子的自动化开发软件 2. SIMATIC_S7PLCSIM_V15_1 西门子的仿真软件 3. NetToPLCsim C#程序是不能和仿真通信的,只有利用此软件,C#程序才能连接到仿真 二、配置软件 1. 博途 点击 创建新…

java上位机开发(网络编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 所谓的网络编程,一般就是指UDP、TCP编程。传统的方法就是用api或者sdk直接编程,这种方法对于简单的协议是可以的。但是对于…