阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 序列 视图 索引 同义词

392次阅读
没有评论

共计 2935 个字符,预计需要花费 8 分钟才能阅读完成。

序列

Oracle 12C 之后,Oracle 之中提供的是一种手工的自动增长列控制,而这样的控制在 Oracle 之中使用序列(对象)完成。

序列的创建:

CREATE SEQUENCE 序列名称
[INCREMENT BY 步长] [START WITH 开始值]
[MAXVALUE 最大值 | NOMAXVALUE]
[MINVALUE 最小值 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE 缓存大小 | NOCACHE]

在此数据字典之中主要包含如下列的数据信息:
· SEQUENCE_NAME:表示的序列名称;
· MIN_VALUE:表示序列的最小值,默认的序列最小值是 1;
· MAX_VALUE:表示序列的最大值,默认序列是没有最大值,1028 已经很大了。
· INCREMENT_BY:步长,每次增长的数据,默认的是 1;
· CYCLE:是否为循环序列,如果是 N 表示非循环,如果是 Y 表示循环;
· ORDER:表示序列是否排序;
· CACHE_SIZE:序列的缓存数据;
· LAST_NUMBER:序列最后一次的增长值(缓存中最大的值)。

当一个序列对象已经创建完成之后,可以采用如下的两个伪列来进行序列的控制:
· 取得序列下一个增长数据(每次调用序列值都增长指定的步长):序列.nextval;
· 取得序列的当前数据(每次调用序列都不增长):序列.currval;
· 在使用 currval 之前一定要首先使用 nextval,否则会出现“ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义”。

可是该如何实现行的自动编号呢?

DROP TABLE mytab PURGE ;
CREATE TABLE mytab(
mid NUMBER ,
title VARCHAR2(50) ,
CONSTRAINT pk_mid PRIMARY KEY(mid)
) ;
INSERT INTO mytab(mid,title) VALUES (myseq.nextval,’JAVA’) ;

循环序列:

1、3、5、7、9 五个数据之间循环显示
1. 序列的最大值是 9;
2. 序列的最小值是 1;
3. 步长应该为 2;

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq
INCREMENT BY 2
START WITH 1
MAXVALUE 9 MINVALUE 1
CYCLE NOCACHE;

Oracle 12c 新特性

 CREATE TABLE test1 (
id int GENERATED ALWAYS AS IDENTITY
 );

自增列会自动加上 not null 约束。

新增时不能向自增列插入值。

视图

视图就是包装了一条复杂的 SQL 语句。

创建视图:

CREATE [OR REPLACE] VIEW 视图名称 AS 子查询
[WITH CHECK OPTIONI] [WITH READ ONLY] ;

注意:从 Oracle 10g R2 版本之后出现了一个创建视图的权限问题,在这之前,scott 用户本身是具备有创建视图权限的,但是之后就没有了,那么下面首先执行如下的语句,来实现权限的分配:GRANT CREATE VIEW TO scott ;

查看所有视图对象。
SELECT * FROM user_views ;

当使用“CREATE OR REPLACE”创建视图的时候表示的是如果视图不存在则创建一个新的视图,如果视图存在则直接使用新的子查询,替换掉旧的子查询。

实际工作之中,一定要本着一个原则:“视图只能够用于查询,而不要用于任何更新”。

1、避免视图创建条件更新:WITH CHECK OPTION

2、设置只读视图:WITH READ ONLY

索引

Oracle 的索引相当复杂,有几十种索引。索引的主要功能是进行数据查询优化的,提升数据库操作性能的。

为了更好的观察出性能问题,那么下面首先针对于一些查询做一个分析。
范例:查询所有工资高于 3000 的雇员工资
SELECT * FROM emp WHERE sal>3000 ;
但是现在这个代码严格来讲性能是很差的,如果要想观察出性能(提示信息)问题,那么需要打开查询分析器。
CONN sys/change_on_install AS SYSDBA ;
SET AUTOTRACE ON ;
SELECT * FROM myemp WHERE sal>3000 ;
此时为了观察出问题只能够在 sys 用户下观察查询的情况,可以发现此时的查询采用的是“TABLE ACCESS FULL”
(全表扫描,逐行扫描)。那么这样的查询有可能出现这样一个问题。
假设现在 emp 表之中存在有 50W 条记录,而在第 20W 条记录之后就不会再有满足条件的数据了(sal>3000),但是如果是全表扫描,意味着,要继续查询后面的 30W 行记录,而且都是逐行扫描(逐行判断),那么性能一定不能高。
此时,如果要想解决此问题,那么唯一的途径就是数据排序,按照工资排序,但是这个时候的排序不是简单的由高到低的排序。那么现在唯一的方式是按照“树”的形式保存排序数据。
现在假设数据表之中所包含的数据顺序如下:“1500、1250、2850、3000、2450、2975、1100、950、800、1600、5000”。
数据检索的时候一定是查询工资数据,而后由工资数据找到对应的数据记录
那么此时如果存在了这样树的结构,在进行数据查询的时候就不再需要进行全表扫描的操作了,只需要查询部分数据即可,而这样的操作就可以称为索引

在 Oracle 数据库里面如果要想创建索引有两种方式:
1. 当一个列上设置了主键约束或者是唯一约束的时候会自动的创建索引;
2. 用户可以自己通过语法在指定的列上创建索引。

CREATE INDEX emp_sal_ind ON emp(sal)

此时索引创建完成。随后再次进行 sal 查询的时候显示的不再是全表扫描,而是根据一个基数扫描。那么通过索引的

查询可以明显的提升查询性能,而索引实现的关键是这棵树的维护(树是由 Oracle 内部自行维护的)。

那么继续以本程序为例,如果说此时修改了某些雇员的工资呢?那么这棵树一定要发生变化,所有的数据都需要重新排列。

那么此时配置的索引不仅没有提升性能,反而降低了性能,所以索引是一种相对的手段,而且永恒都要记住,没有绝对的性能提升途径。

同义词

果要想创建属于自己的同义词,则必须由管理员完成,而创建的语法如下:
CREATE [PUBLIC] SYNONYM 同义词的名称 FOR 用户名. 表名称;
范例:将 scott.emp 表定义一个 myemp 的同义词(由 sys 完成)
CONN sys/change_on_install AS SYSDBA ;
CREATE SYNONYM myemp FOR scott.emp ;
创建完同义词之后,下面就可以直接通过 myemp 来访问 scott.emp 数据表了。
SELECT * FROM myemp ;
那么现在创建的同义词 myemp 存在一个小问题。因为此时的同义词只能够在 sys 下使用,它并不是一个公共的同义词,所以要想让所有用户都访问,则必须创建公共同义词。
范例:修改同义词的创建
CONN sys/change_on_install AS SYSDBA ;
DROP SYNONYM myemp ;
CREATE PUBLIC SYNONYM myemp FOR scott.emp ;
在实际的工作之中,同义词本身只属于 Oracle 自己的概念定义,所以此处只需要了解下基本概念即可。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2935字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7899398
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...