Oracle基础部分三(视图、物化视图、序列、同义词、索引)

news2024/12/23 23:21:02

Oracle基础部分三(视图、物化视图、序列、索引)

  • 1 视图
    • 1.1概述
    • 1.2 创建普通视图
      • 1.2.1 创建普通视图
      • 1.2.2 创建带检查约束的视图
      • 1.2.3 创建只读视图的创建与使用
      • 1.2.4 强制创建视图
      • 1.2.5 创建复杂视图
        • 1.2.5.1 多表关联
        • 1.2.5.2 分组聚合统计的复杂视图
    • 1.3 创建物化视图
      • 1.3.1 语法
      • 1.3.2 示例
        • 1.3.2.1 创建手动刷新的物化视图
        • 1.3.2.2 创建自动刷新的物化视图
        • 1.3.2.3 创建不生成数据的物化视图
        • 1.3.2.4 创建增量刷新的物化视图
        • 1.3.2.5 执行物化视图的手动刷新
    • 1.4 查询视图
      • 1.4.1 语法
      • 1.4.2 示例
    • 1.5 修改视图数据
      • 1.5.1 语法
      • 1.5.2 示例
  • 2 序列
    • 2.1 语法
    • 2.2 创建序列
      • 2.2.1 创建普通序列
      • 2.2.2 创建复杂序列
        • 2.2.2.1 创建有最大值的非循环序列
        • 2.2.2.2 创建有开始值和最大值的非循环序列
        • 2.2.2.3 创建有开始值和最大值的循环序列
    • 2.3 修改序列
      • 2.3.1 语法
      • 2.3.2 示例
    • 2.4 删除序列
      • 2.4.1 语法
      • 2.4.1 示例
  • 3 同义词
    • 3.1 创建同义词
      • 3.1.1 语法
      • 3.1.1 创建示例
        • 3.1.1.1 创建私有同义词
        • 3.1.1.1 创建共有同义词
  • 4 索引
    • 4.1 概述
    • 4.2 创建索引语法
      • 4.2.1 创建普通索引
      • 4.2.2 创建唯一索引
      • 4.2.3 创建复合索引
      • 4.2.4 创建反向键索引
      • 4.2.4 创建位图索引
    • 4.3 创建索引示例
      • 4.3.1 创建普通索引
      • 4.3.2 创建唯一索引
      • 4.3.3 创建复合索引
      • 4.3.4 创建位图索引

1 视图

1.1概述

视图定义:
视图优点:
1.简化数据操作:视图可以简化用户处理数据的方式
2.着重于特定数据:不必要的数据或敏感数据可以不出现在视图中
3.视图提供一个简单而有效的安全机制,可以定制不同用户对数据的访问权限
4.提供向后兼容性:视图使用户能够在表的架构更改时为表创建向后兼容接口

1.2 创建普通视图

CREATE [OR PEPLACE] [FORCE] VIEW view_name
AS subquery
[WITH CHECK OPTION]
[WITH READ ONLY]

解释:
OR REPLACE:若所创建的视图已经存在,ORACLE自动重建改视图
FORCE:不管基表是否存在ORACLE都会自动创建该视图
subquery:一条完整的SELECT语句,可以在该语句中定义别名
WITH CHECK OPTION:插入或修改的数据必须满足视图定义的约束
WITH READ ONLY:该视图不能执行任何DML操作

1.2.1 创建普通视图

create view view_owners1 as
select * from t_owners where ownertypeid = 1

1.2.2 创建带检查约束的视图

create view view_address2 as
select * from t_address where areaid = 2
with check option

1.2.3 创建只读视图的创建与使用

create or replace view view_owners1 as
select * from t_owners where ownertypeid = 1
with read only

1.2.4 强制创建视图

create force view view_test as  -- view_test不存在
select * from t_test

1.2.5 创建复杂视图

1.2.5.1 多表关联

create or replace view view_owners as 
select ow.id 业主编号, ow.name 业主名称,ot.name 业主类型  from t_owners ow, t_ownertype ot
where ow.ownertypeid = ot.id

1.2.5.2 分组聚合统计的复杂视图

create view view_accountsum as
select year,month,sum(money) money from t_account
group by year,month
order by year,month

1.3 创建物化视图

1.3.1 语法

CREATE METERIALIZED VIEW view_name 
[BUILD IMMEDIATE | BUILD DEFERRED]
REFRESH [FAST|COMPLETE|FORCE]
[
ON  [COMMIT | DEMAND] | START WITH [start_time] NEXT(next_time) 
]
as

解释:
BUILD IMMEDIATE 是在创建物化视图的时候就生成数据(默认)
BUILD DEFERRED 则在创建时不生成数据,以后根据需要再生成数据

COMPLETE 完全
FAST 增量更新
FORCE 自动(默认)

ON COMMIT 在基表做提交操作时刷新物化视图
ON DEMAND 手动刷新(默认)

1.3.2 示例

1.3.2.1 创建手动刷新的物化视图

create materialized view mv_address1 
as
select ad.id, ad.name, ar.name arname  from t_address ad, t_area ar
where ad.areaid = ar.id

1.3.2.2 创建自动刷新的物化视图

create materialized view mv_address2
refresh COMPLETE
on commit  -- 自动刷新
as
select ad.id, ad.name, ar.name arname  from t_address ad, t_area ar
where ad.areaid = ar.id

1.3.2.3 创建不生成数据的物化视图

create materialized view mv_address3
build deferred  -- 创建不产生数据
refresh
on commit
as
select ad.id, ad.name, ar.name arname  from t_address ad, t_area ar
where ad.areaid = ar.id

注意:第一次 必须需要手动刷新,才能查看到数据

1.3.2.4 创建增量刷新的物化视图

注意:前提是必须创建物化视图日志:基表发生了哪些变化,用这些记录去更新物化视图

第一步:创建物化视图日志

create materialized view log on t_address with rowid
create materialized view log on t_area with rowid

第二步:创建增量刷新的物化视图
注意:创建增量刷新的物化视图中的语句中,必须有基表的ROWID,通过ROWID查询关联

create materialized view mv_address4
refresh fast
as
select ad.rowid adrowid,ar.rowid arrowid,ad.id, ad.name, ar.name arname  from t_address ad, t_area ar
where ad.areaid = ar.id

1.3.2.5 执行物化视图的手动刷新

语法:

begin
  DBMS_MVIEW.refresh('视图','C');
end;

示例:

begin
  DBMS_MVIEW.refresh('mv_address1','c');
end;

1.4 查询视图

1.4.1 语法

select * from 视图名称 where 条件

1.4.2 示例

select * from view_owners1  where addressid = 1

1.5 修改视图数据

1.5.1 语法

update 视图 set 字段 =where 条件

1.5.2 示例

update view_owners1 set name = '范小冰' where id = 1

注意:1、只读视图不能修改;2、修改带检查约束的视图,检查约束不能修改;3、对于复杂视图,只能修改键保留表里面的数据,对于分组聚合统计的复杂视图不能修改,没有键保留表

-- 无法修改成功的语句,因为该视图的条件时 areaid = 2
update view_address2 set areaid = 3 where id =4

2 序列

2.1 语法

CREATE SEQUENCE sequence //创建序列名称
[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增如果是负数就递减 默
认是1
[START WITH n] 1/开始的值,递增默认是 minvalue 递减是 maxvalue
[MAXVALUE n|NOMAXVALUE)] //最大值
[(MINVALUE n|NOMINVALUE)//最小值
KCYCLE|NOCYCLE]] //循环/不循环(默认不循环)
[(CACHE n|NOCACHE)];//分配并存入到内存中(默认缓存20个)

2.2 创建序列

2.2.1 创建普通序列

create sequence seq_test

2.2.2 创建复杂序列

2.2.2.1 创建有最大值的非循环序列

create sequence seq_test1
maxvalue 20;

2.2.2.2 创建有开始值和最大值的非循环序列

create sequence seq_test2
increment by 10
start with 10
maxvalue 100

2.2.2.3 创建有开始值和最大值的循环序列

create sequence seq_test3
increment by 10
start with 10
minvalue 10
maxvalue 210
cycle 

2.3 修改序列

2.3.1 语法

ALTER SEQUENCE 序列名称 修改的需求参数

2.3.2 示例

ALTER SEQUENCE seq_test MAXVALUE 5000 CYCLE

2.4 删除序列

2.4.1 语法

drop SEQUENCE 序列名称

2.4.1 示例

drop sequence seq_test5

3 同义词

3.1 创建同义词

同义词相当于别名

3.1.1 语法

create [public] SYNONYM synooym for objec

解释:其中synonym表示要创建的同义词的名称,object表示表,视图,序列

3.1.1 创建示例

3.1.1.1 创建私有同义词

私有同义词只有此用户才能使用

create synonym owners for t_owners

3.1.1.1 创建共有同义词

共有同义词所有用户都能够使用

create public synonym owners2 for t_owners

4 索引

4.1 概述

1)索引是什么?
(1) 一种供服务器在表中快速查找一行的 ‘数据库结构’
(2) 可以理解为:一本书中的 ‘目录’
2)索引的优点
(1) 加快数据的 ‘检索速度’
(2) 可以保证列值的 ‘唯一性’(unique、主键)
(3) 实现表与表之间的 ‘参照完整性’(外键)
(4) 在使用 order by、group by 子句时,可以减少排序和分组的时间
3)索引的缺点
(1) 当对表数据进行 DML 操作的时候,索引自动维护,‘降低 DML 操作的速度’
(2) 索引需要占 ‘物理空间’,同数据表的 ‘表空间’ tablespace 一样
(3) 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
4)索引的使用原则
(1) ‘主键’ 和 ‘外键’ 会自动创建索引,无需人工操作
(2) 选择正确的表:经常检索包含大量数据的表中小于 15% 的行
(3) 选择正确的列:多个表之间的关联关系
(4) 合理安排索引列:(A,B,C) A 最常用,B 次之,C 最末

4.2 创建索引语法

4.2.1 创建普通索引

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

4.2.2 创建唯一索引

唯一索引:不能重复,主键索引自动创建的唯一索引

create unique index 索引名称 on 表明(列名)

4.2.3 创建复合索引

复合索引:顺序也有要求,按照查询习惯建复合索引

create  index 索引名称 on 表明(列名1, 列明2......)

4.2.4 创建反向键索引

反向键索引:(顺序)10进制 → 二进制 → 反向键 → 十进制(随机数)),层级更均衡
反向键索引优点:
1、使用传统的B-tree索引,当索引的列是按顺序产生时,相应的索引键值会基本分布在同一个叶块中。当用户对该列进行操作时,难免会发生索引块的争用
2、使用反向索引,将索引列的键值进行反转,实现顺序的键值分散到不同的叶块中,从而减少索引块的争用。

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

4.2.4 创建位图索引

使用场景:位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
优点:减少响应时间,节省空间占用
位图索引只在使用等于时生效,范围查询时位图索引不生效

create bitmap index 索引名称 on 表明(列名)

4.3 创建索引示例

4.3.1 创建普通索引

create index index_owners_name on t_owners(name);

4.3.2 创建唯一索引

create unique index index_owners_meter on t_owners(watermeter);

4.3.3 创建复合索引

create index index_owners_ah on t_owners(addressid,housenumber);

4.3.4 创建位图索引

create bitmap index index_owners_typeid on t_owners(ownertypeid)

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

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

相关文章

强化学习简介

1.强化学习简介 **强化学习(Reinforcement Learning,RL)**是机器学习中的一个领域,是学习“做什么(即如何把当前的情景映射成动作)才能使得数值化的收益信号最大化”。学习者不会被告知应该采取什么动作&a…

CDN(内容分发网络)技术原理

1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速…

认证 (authentication) 和授权 (authorization) 的区别

以前一直傻傻分不清各种网际应用中 authentication 和 authorization, 其实很简单: 这两个术语通常在安全性方面相互结合使用,尤其是在获得对系统的访问权限时。两者都是非常重要的主题,通常与网络相关联,作为其服务基础架构的关键部分。然而…

vite+vue3+pinia+vuex4动态路由解决刷新页面丢失

目录 了解如何添加动态路由 使用pinia持久化数据 解决方案 404找不页面问题 目前解决思路 完整路由配置 动态路由使用的数据 了解如何添加动态路由 vue官网-动态添加路由 使用pinia持久化数据 pinia的使用 解决方案 asyncRoutes()方法从pinia获取到动态菜单数据登陆成…

SpringMVC 01 -SpringMVC入门

高效学习习惯啊 坚持,比如这样经常更新博客,保持学习哈哈哈 SpringMVC-SpringMVC引入1 SpringMVC引入1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处1.2.3 执行流程【重点】2 快速入门2.1 导入依赖2.2 配置核心(前端)控制器2.3 springmvc核心配置文件2.4 创建…

开心档之C++ 修饰符类型

C 修饰符类型 目录 C 修饰符类型 实例 C 中的类型限定符 C 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。 下面列出了数据类型修饰符: signedunsignedlongshort 修饰符 signed、…

Gitlab中Pipeline语法六

Gitlab中Pipeline语法 needs/include/extends nodes 阶段并行 - 可以无序执行作业,无序按照阶段顺序运行某些作业,可以让多个阶段同时运行. - 如果nedds:设置为指向因only/except规则而未实例化的作业,或者不存在,则创建管道时会出现yaml错误. stages:- build- test- depl…

Moviepy模块之视频添加字幕(二)

文章目录前言一、素材1.1 原视频1.2 字幕文件二、视频添加字幕2.1 引入库2.2 加载视频文件2.3 设置字幕的字体、大小、颜色2.4 加载字幕文件2.5 设置字幕位置2.6 将字幕添加到视频中2.7 保存带有字幕的视频文件三、新视频效果总结前言 大家好,我是空空star&#xff…

2023蓝桥杯C++A组题解(第十四届)

面向爆零选手 水平有限,将就着看,有空再补充后5题 目录 🤯吐槽 😟A,2067: [蓝桥杯2023初赛] 幸运数 😟B,2068: [蓝桥杯2023初赛] 有奖问答 🌼AC DFS 🌼AC DP &a…

Apache 配置与应用

目录构建虚拟 Web 主机基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.加载独立的配置文件6.在客户机中访问虚拟 Web 主机基于IP地址的虚拟主机基于端口的虚拟主机Apache 连接保持构建Web虚拟目录与用户授权…

基于html+css的盒子展示3

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

[ 应急响应基础篇 ] 使用 Process Explorer 进程分析工具分析系统进程(附Process Explorer安装教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

《C Primer Plus》第17章复习题与编程练习

《C Primer Plus》第17章复习题与编程练习复习题1. 定义一种数据类型涉及哪些内容?2. 为什么程序清单17.2只能沿一个方向遍历链表?如何修改struct film定义才能沿两个方向遍历链表?3. 什么是ADT?4. QueueIsEmpty()函数接受一个指向…

OpenAI创始人:GPT-4的研究起源和构建心法

OneFlow编译 翻译|杨婷、贾川、徐佳渝 三十年前,互联网(Web 1.0)时代开启。人们只能在笨重的电脑上用鼠标点击由HTML编写的网页文本,随后开始支持插入图片,可以上传视频,于是有了网络新闻、搜索…

MapReduce之WordCount案例实操

目录 前期准备: 本机测试: mapper阶段: Reduce阶段: Driver类: 集群测试: 前期准备: 因为MapReduce中案例比较多,所以需要单独创建一个工程 准备工作 创建工程后先改maven仓…

ssh远程端口转发

ssh远程转发的原理:内网主机开了一个程序去连接外网的服务器,一直等待外网的服务器来连接。 应用场景 设备 IP 备注 系统 内网电脑C 192.168.10.129 内网,可访问外网。SSH登陆端口为22。 linux 个人电脑A 动态变化 无公网IP Linux…

Java的Idea怎么用ChatGpt,让些代码变丝滑?

发现两款idea的AI插件神器,和一个AI编辑器 1、tabnine https://zhuanlan.zhihu.com/p/343938113 当提示代码出现后,其中 按tab键就可以通用提示出的代码了,alt[ 是换提示代码,试用期限为14天。(注意标红的&#xff0…

获美国企业认可,中国大飞机取得重大突破,已具备挑战波音的实力

日前消息指美国通用电气资本航空服务公司订购了20架中国商飞C919客机,这是中国大飞机首次获得美国航空企业的认可,代表着中国大飞机的重大突破,证明中国的大飞机已达到国际先进水平。通用电气资本航空服务公司是全球最大的飞机租赁公司&#…

初学C++,坚决不能挂!

目录 1、C++相对于C语言的不同 2、类(class) 3、类与实例(对象)的关系 4、头文件 5、命名空间 6、输入输出 7、位运算 8、基本数据类型 9、结构体和三目运算符 10、for循环 11、const 12、类型别…

SEEM:微软基于 CV 大模型新作,分割“瞬息全宇宙”

文 | 智商掉了一地交互式视觉分割新作,具有语义感知的新模型~自从 Meta 发布了“分割一切”的 SAM 之后,各种二创如雨后春笋般冒出,昨天微软的一篇论文又在推特上引起讨论,虽然最开始吸引小编的是它的名字——分割“瞬息全宇宙”&…