oracle视图和索引

视图和索引

视图

视图的作用

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

视图的优点

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

注意事项

  • 视图可以理解为临时表,会随着真实表的数据变化而自动变化
  • 视图的名字以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;

索引已删除。

原文地址:https://www.cnblogs.com/inmeditation/p/11967328.html

时间: 2024-11-09 07:58:04

oracle视图和索引的相关文章

oracle视图与索引

实验目的:    1.理解索引和位图索引的基本概念    2.掌握索引和位图索引的创建方法,并使用索引对查询过程产生的影响进行分析    3.理解视图的基本概念    4.掌握视图的创建方法,并对视图中数据查询与更新进行操作,明确其使用的注意事项. 实验步骤: 1.创建有特点的大数据表.为了保证索引产生前后,查询效果的正确比对,应建立一个存在大量数据的测试表.这个测试表的数据来源于SYS模式下的all_objects视图,其中包括本数据库实例中的全部对象的基本描述,具体包括对象的所有者.对象名称

Oracle实践--PL/SQL基础之视图和索引

PL/SQL基础入门之视图和索引         PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. -----------------------------------

Oracle学习(十):视图,索引,序列号,同义词

1.知识点:可以对照下面的录屏进行阅读 视图,序列,索引,同义词 SQL> --视图:虚表 SQL> --视图的优点:简化复杂查询,限制数据访问(银行用的多),提供数据的相互独立,同样的数据可以有不同的显示方式 SQL> --第一个视图: 员工号 姓名 月薪 年薪 SQL> create view view1 2 as 3 select empno,ename,sal,sal*12 annlsal from emp; SQL> --如果显示没有权限,则需要授权,见下图1-1

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

1.索引:索引一共分为4种 -- 在oracle中, -- normal:普通索引 -- unique:唯一索引 -- bitmap:位图索引 -- B 树索引:默认:如果不建立索引的情况下,oracle就自动给每一列都加一个B 树索引 -- index(下标,索引):作为索引,在oracle如果自带索引能满足当前查询需求,就只需要建立索引,oracle自带机制会帮你使用 -- 如果当前查询oracle自带的索引满足不了,就要自己编写索引 (不学) -- 索引就可以直接理解为一个目录 -- 二叉

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

数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 同义词共有两种类型: CREATE USER test IDENTIFIED BY test; GRANT CONNECT , CREATE SYNONYM TO test; GRANT SELECT ON SCOTT.EMP TO test; GRANT DELETE ON S

oracle创建序列&索引&视图

---oracle学习 --oracle的管理系统学习 --oracle的数据管理学习 --oracle的用户管理 --oracle二维表管理 --oracle的其他知识 --oracle的序列,视图,索引 --oracle的分页查询 --oracle的数据库备份 --oracle的图形化界面操作 序列 1 --oracle的序列的学习 2 --创建序列 3 --使用 create sequence 序列名 4 --特点1:默认开始是没有值的,也就是指针指在了没有值的位置. 5 --特点2:序列

Oracle笔记 目录索引

Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Oracle笔记 五.创建表.约束.视图.索引.序列.同义词.表空间 Oracle笔记 六.PL/SQL简单语句块.变量定义 Oracle笔记 七.PL/SQL 异常处理 Oracle笔记 八.PL/SQL跳转/判断/循环语句块 Oracle笔记 九.PL/SQL 游标的使用 Oracle笔记 十.PL

PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. 它具有面向对象程序设计语言的特点,是对这些PL/SQL 程序设计元素的封装.包类似于JAVA语言中的类,其中变量相当于类中的成员变量,过程和函数相当于类方法. create or replace package stuinfo as type stucur is ref cursor; proce

物化视图,索引视图,函数索引,创建索引时使用DESC

老板交给的一个任务,搜了一下资料,觉得还是总结一下比较好.假如以后用到了呢?围绕两个主题:一是视图上能够建索引,二是在创建索引时是否可以使用DESC关键字. 一.能否在视图上创建索引 因为普通的视图并没有存储实际的信息,它所操作的数据来自于基本表,所以在普通视图上不可以创建索引. 在oracle中执行如下的语句,会报"视图不适用于此处"的错误 create view test_car as select license from cars; create index index_vew