视图和索引

视图

视图的作用

  • 控制数据访问、简化查询、避免重复访问相同的数据

视图的优点

  • 限制用户只能通过视图检索数据,用户看不到底层基表

注意事项

  • 视图可以理解为临时表,会随着真实表的数据变化而自动变化
  • 视图的名字以V_开头,表明是视图;
  • 视图不提高任何效率
  • 视图不占用空间
  • 不是所有的视图都能更改(若改动能对应的原来的表,则可以,否则不可以,比如用了聚合函数的,或者group by而来的)

简单视图

语法

create or replace view 视图名 as select 语句;

create or replace:关键字,创建或者替换(若原来没有,则创建,若已经有,则替换原来的)

范例

SQL> create or replace view v_emp as
2 select empno, ename, job from emp; 视图已创建。
SQL> select * from v_emp;

     EMPNO ENAME                JOB
---------- -------------------- ------------------
7777 S_HH%GGH CLERK
7369 SMITH CLERK
7499 ALLEN SALESMAN
...

只读视图

语法

create or replace view 视图名
as select 语句
with read only;

范例

SQL> create or replace view v_emp2 as
2 select empno,ename,job from emp
3 with read only;
视图已创建。
SQL> delete from v_emp2;
delete from v_emp2
*
第 1 行出现错误:
ORA-42399: 无法对只读视图执行 DML 操作

视图管理

查看

查看指定用户下的所有视图

SQL> select view_name from dba_views where owner='SCOTT';

VIEW_NAME
------------------------------------------------------------
V_DEPT
V_DEPT_EMP
V_EMP
V_EMP2
  • dba_views查看数据库下所有视图
  • owner='SCOTT'指定用户
  • view_name显示视图的名称
删除
SQL> drop view v_emp;
视图已删除。 SQL> drop view v_emp2;
视图已删除。 SQL> select view_name from dba_views where owner='SCOTT';
VIEW_NAME
------------------------------------------------------------
V_DEPT
V_DEPT_EMP

索引

索引的作用

  • 提高查询效率

索引的注意事项

  • 限制索引的个数。索引只要提升查询速度,但会降低 DML 操作的速度
  • 索引名字唯一,长度不超过32位
  • 索引列可以不止一列(组合索引或者复合索引),但唯一性高的在第一位(即重复数据少)
  • 给表初始化时,须先将索引drop或者unusable(先插入数据,后建索引)
  • 索引名称以IND或者IDX开头;

普通索引

语法

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

范例

SQL> create index IND_emp_deptno on emp(deptno);
索引已创建。

唯一索引

语法

create unique index 索引名字 on 表名(列名);

范例

SQL> create unique index ind_indtest_id on ind_test(id);

索引已创建。

管理索引

查看

SQL> select index_name from user_ind_columns where table_name='EMP';

INDEX_NAME
------------------------------------------------------------
UNIQUE_EMP_ENAME
PK_EMP
SQL> select index_name from user_ind_columns where table_name='IND_TEST';

INDEX_NAME
------------------------------------------------------------
IND_INDTEST_ID

删除索引

SQL> drop index IND_emp_deptno;

索引已删除。
SQL> drop index IND_INDTEST_ID;

索引已删除。

oracle视图和索引的更多相关文章

  1. Oracle视图,索引,序列

    什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...

  2. Oracle 视图和索引

    一.视图 1.什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表 (3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起 ...

  3. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

  4. Oracle数据库对象,同义词、序列、视图、索引

    数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...

  5. java:Oracle(视图,索引,序列)

    1.索引:索引一共分为4种 -- 在oracle中, -- normal:普通索引 -- unique:唯一索引 -- bitmap:位图索引 -- B 树索引:默认:如果不建立索引的情况下,orac ...

  6. Oracle视图分类及各种操作讲解(超级好文)

    目录:一.视图的定义: 二.视图的作用: 三.创建视图: 1.权限 2.语法 3.1  创建简单视图   3.2  创建连接视图  3.2.1 连接视图定义  3.2.2 创建连接视图  3.2.3 ...

  7. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  8. oracle视图总结

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

  9. oracle视图总结(转)

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

随机推荐

  1. iconv转换

    /////////////////////////////////////////////////////// #include <iconv.h> #include <stdlib ...

  2. 将vue项目部署在Linux的Nginx下,并设置为局域网内访问

    1. 下载 wget http://nginx.org/download/nginx-1.12.2.tar.gz 2. 解压缩 tar -zxvf linux-nginx-1.12.2.tar.gz ...

  3. Charles 使用笔记

     一.介绍 Charles 属于抓包软件. Charles 多平台支持,mac.windows.linux. Charles 是收费软件,可以免费试用 30 天.试用期过后,未付费的用户仍然可以继续使 ...

  4. vue安装遇到的5个报错小结

    前言 这篇博文不会教你怎么安装vue,但会告知安装过程中可能遇到的5个问题 2017年我写过一篇安装vue的博客,详情:https://www.cnblogs.com/tu-0718/p/752109 ...

  5. 【Java基础】Java中你必须知道的知识点

    目录 Java中面向对象的基础知识 1. 什么是面向对象  2. 三大基本特征和五项基本原则 3. Java的平台无关性 4. 值传递和引用传递 5. 方法重载和重写 6. 基本数据类型 7. 包装类 ...

  6. synchronized&volatile

    synchronized(JVM实现的锁) 通过这两个关键字,我们可以很容易的实现同步多个任务的行为,可以实现同一时刻,只能有一条线程去访问共享资源 一: 修饰普通方法 多个线程,共同去竞争访问,方法 ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(2)- RT1052DVL6性能实测(CoreMark)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的性能. 在前面的文章 i.MXRTyyyy微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2 ...

  8. SpringCloud的入门学习之概念理解、Ribbon负载均衡入门

    1.Ribbon负载均衡,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端.负载均衡的工具. 答:简单的说,Ribbon是Netflix发布的开源项目,主要功能 ...

  9. Ruby中星号打包解包操作

    Ruby中可以使用一个星号*和两个星号**完成一些打包.解包操作,它们称为splat操作符: 一个星号:以数组为依据进行打包解包(参考文章) 两个星号:以hash为依据进行打包解包(参考文章) 两个星 ...

  10. JavaScript的概念,引入,基本数据类型

    08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...