首页 > 数据库 >ORACLE对象-高级(视图、序列、索引)

ORACLE对象-高级(视图、序列、索引)

时间:2023-01-14 10:03:07浏览次数:64  
标签:name -- 视图 索引 序列 ORACLE where


ORACLE对象-高级

一、视图

(一)什么是视图

ORACLE对象-高级(视图、序列、索引)_SQL


视图和表的区别:

视图是实体表的映射,视图和实体表区别就是于视图中没有真实的数据存在。

视图中存储的是SQL语句

什么时候使用视图:

1.为了安全,通过视图,可以异常敏感数据,不对外开放,(你可以隐藏表中不想给别人看的数据)

2.保存复杂sql的查询结果,方便人员调用

注意:在企业中,你查询的对象(表)他可能不是一张的表,可能是视图;你看到的视图的字段可能也不是真实的字段。

(二)案例

1.视图的创建与使用
需求:创建视图 :业主类型为1的业主信息
语句:

create or replace view view_owners1 as
select * from T_OWNERS where ownertypeid=1

利用该视图进行查询

select * from view_owners1 where addressid=1;

删除视图

drop view name

使用视图就跟使用表一样。

二、序列

(一)什么是序列

序列是ORACLE提供的用于产生一系列唯一数字的数据库对象。

ORACLE对象-高级(视图、序列、索引)_数据_02

(二)创建与使用序列

创建序列语法:

CREATE  SEQUENCE  序列名
[START WITH 起始数]
[INCREMENT BY 增长量]
[MAXVALUE 最大值]
[MINVALUE 最小值]

通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值
CURRVAL 返回序列的当前值
注意:我们在刚建立序列后,无法提取当前值,只有先提取下一个值时才能再次提取当前值。
提取下一个值

select 序列名称.nextval from dual

提取当前值

select 序列名称.currval from dual

(三)删除序列

DROP SEQUENCE 序列名称;
--创建序列:自增长策略
create sequence seq_stuno --从1开始,每次递增1,一直到number的最大值
start with 2 --起始值
increment by 2 --步长
minvalue 2 --最小值
maxvalue 9999999 --最大值

--获取序列
--获取序列的下一个值
select seq_stuno.nextval from dual;
--获取序列的当前值
--序列不连续的
select seq_stuno.currval from dual;--6

--作为主键如何使用呢?
insert into t_temp values(seq_stuno.nextval,null);

select * from t_temp;

--删除序列
drop sequence seq_stuno;

三、索引(重要)

(一)什么是索引

索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o 次数,从而提高数据访问性能。
索引是需要占据存储空间的,也可以理解为是一种特殊的数据。形式类似于下图的一棵“树”,而树的节点存储的就是每条记录的物理地址,也就是我们提到的伪列(ROWID)

为什么要使用索引?索引好处是什么?

原理

ORACLE对象-高级(视图、序列、索引)_视图序列索引_03

(二)普通索引

语法:

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

需求:我们经常要根据业主名称搜索业主信息,所以我们基于业主表的name字段来建立索引。语句如下:

create index index_owners_name on T_OWNERS(name)

索引性能测试:
创建一个两个字段的表

create table T_INDEXTEST (
ID NUMBER,
NAME VARCHAR2(30)
);

编写PL/SQL 插入100万条记录( 大概800Mb,你的表空间要有自增,时间5分钟左右看电脑性能)这只是测试查询性能 选择性做 不做也行 知道结果就好

BEGIN
FOR i in 1..1000000
loop
INSERT INTO T_INDEXTEST VALUES(i,'AA'||i);
end loop;
commit;
END;

创建完数据后,根据name列创建索引

CREATE INDEX INDEX_TESTINDEX on T_INDEXTEST(name)

执行下面两句SQL执行

SELECT * from T_INDEXTEST where ID=765432;
SELECT * from T_INDEXTEST where NAME='AA765432';

我们会发现根据name查询所用的时间会比根据id查询所用的时间要短

--查
--建立索引前的时间:
select * from t_temp where name='A789456';--31

select * from t_temp where id='789456';--31

select * from t_temp where rowid='AAADhPAAIAAAAkYAAf';--0

--建立索引
create index index_temp_name on t_temp(name);

select * from t_temp where name='A789456';--0

select * from t_temp where id='789456';--31

select * from t_temp where rowid='AAADhPAAIAAAAkYAAf';--0

祝你幸福

送你一首歌:《In the eyes》江映东​​

附图:1月11日,在北京航天飞行控制中心大屏幕上拍摄的着陆器(右)和巡视器互拍画面。新华社图

ORACLE对象-高级(视图、序列、索引)_数据_04


标签:name,--,视图,索引,序列,ORACLE,where
From: https://blog.51cto.com/u_15939406/6007230

相关文章

  • Idea更新本地仓库maven构建索引
    前言因为有些jar包不能直接下载至本地仓库,导致依赖不上,所以我们需要反向安装​​idea反向安装jar包到仓库​​但是有个问题,安装成功后,照常设置,本地仓库有了jar包,但是idea并......
  • 【LeeCode】199.二叉树的右视图
    【题目描述】给定一个二叉树的 根节点 ​​​​root​​​​,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值​​​​https://leetcode.cn/proble......
  • ClickHouse系列--一级索引原理解读
    MergeTree的主键使用PRIMARYKEY定义,主键定义好后,根据index_granularity间隔,为数据生成一级索引保存在primary.idx文件中,索引数据按照PRIMARYKEY排序。1.稀疏索引primary.i......
  • CloudCanal实战-Oracle数据迁移同步到PostgreSQL
    简述本篇文章主要介绍如何使用CloudCanal构建一条Oracle到PostgreSQL的数据同步链路技术要点缩小的数据库权限要求CloudCanal对Oracle数据库的高权限要求,主要......
  • 【服务器数据恢复】断电导致linux服务器数据目录项被破坏,数据区索引被清除的数据恢复
    服务器数据恢复环境&故障:某品牌730服务器,linux操作系统。机房意外断电导致服务器部分文件丢失。服务器数据备份&故障分析:1、将linux服务器连接到准备好的数据恢复服务器......
  • docker安装oracle
    我参考了 https://blog.csdn.net/u010148813/article/details/1261527341、我用的虚拟机(宿主机)是Ubunturoot@jin-virtual-machine:/etc/docker#lsb_release-aNoLSB......
  • 【学习日志】MongoDB为什么选择B树,而MySQL选择B+树实现索引
    先说B树和B+树的区别B树:非叶子节点也存储数据B+树:只有叶子节点存储数据,且所有叶子节点通过指针相连接。为什么MongoDB选择B树而,MySQL选择B+树呢?两种数据结构的区别摆在......
  • Mysql索引失效场景
    Mysql索引失效场景 序言 众所周知在Mysql中,通过使用索引的方式可以加快查询速度,从而避免全文搜索;而索引本身就像图书馆中所有书籍目录,通过查询关键字就能快速找......
  • 界面控件DevExpress WPF中文指南 - 用主题设计器的后台视图升级主题
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • 重复、冗余和不可见索引
    如何找出重复的索引?pt-duplicate-key-checker可以找出数据库中的表是否有重复的索引或主键。对于每个重复的索引,pt-duplicate-key-checker会给出dropindex语句。比如:......