`
Luob.
  • 浏览: 1592545 次
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 序列 和 视图

阅读更多
      
 -----------------------------------------序列------------------------------------
--序列(sequence)的作用
      --1.主外键的应用需求
      --2.流水号应用需求
      --3.序列的生成与定义的内容

--1.创建序列 (要有 create sequence 或者 create Any sequence 权限)
     create sequence sequence_name   --新建的sequence 的名字
     [start with n1]            --指定要生成的第一个序列号  
     [increment by n2]          --序列之间的间隔 默认为 “1” 如果 n2 >0 则是升序  n2<0  则是降序 
     [{maxvalue n3 | nomaxvalue}]  --maxvalue:指定可以生成的最大值 (n3>=n1 && n3> n4); nomaxvalue:没有最大上线  最大可达 10……27(……表示幂)
     [{minvalue n4 | nominvalue}]  --minvalue:指定序列生成的最小值 (n4>=n1 && n4<n3);nominvalue:没有序列最下线
     [{cache n5| nocache}]      --cache:指定在高速缓冲区预先分配的序列号个数,默认为 “20” nocache:指定在高速缓冲区中不预先分配序列号 (即,序列生成器每次生成一个序列号,该好就是默认值)
     [{cycle| nocycle}]  --cycle:用于指定序列号达到最大上线或者最小下线的时候 再循环 ,nocycle 表示不再循环;
     [order];     --用于指定按顺序生成序列号
     
     --示例
     conn sys/admin@scce;
     grant create sequence to scott;
     grant create any sequence to scott;    --获取权限 
    
     ---表示创建一个序列seq_id 从300开始  每次增长1  每次生成10序列号, 最大值为99999999 达到最大上线后不再循环
     conn scott/tiger@scce;
     crate sequence seq_id
     increment by 1
     start with 300
     maxvalue 99999999
     cache 10
     nocycle;
     
--2.使用序列
     --1. nextVal :返回序列生成的下一个值
     --2. currVal : 返回序列生成的但前值  (在第一次使用时候,必须要使用nextVal对序列进行初始化 否则报错)
     --3.示例
     insert into tb_shop values(seq_id.nextVal,''....);
     
--3.更改序列  (更改自己的 要有 alter sequence 权限 要修改别人的 要有 alter any sequence)
     --1:不能修改起始值  要修改就必须 删除旧的在新建一个
     --2:可以修改 maxvalue | minvalue  值
     --3: 可以修改 increment 值
     --4:可以修改高速缓冲值  cache
     
    --示例
     conn sys/admin@scce;
     grant alter sequence to scott;
     grant alter any sequence to scott;
     
--4.删除序列  (要有 Drop sequence 或drop any sequence 权限)
    --语法:Drop SEQUENCE sequence_name;
    --示例:Drop sequence seq_id;








--____________________________________________________视图_________________________________________
--1创建视图 (要有create View 或者 Create any View 的权限) 
   /*语法:  Create [Or replace] [force] View view_name         -- Or replace :表示视图如果存在就覆盖   force: 无论视图是否存在都将要创建视图  view_name:视图名称
              [(alias1,alias2....]                              --alias:指定由视图查询所选择的表达式的别名,数目必须与视图所选择的表达式的数目相同
		as select_sataement                             --创建视图时使用的select 语句
	      [with vheck option [constraint contraint]]        --在使用视图时,检查涉及的数据是否通过select子查询的where条件 ,否则不允许操作返回错误
     	       [with read only];                                --该视图只能用于查询,不能更改数据  不能与Order By子句同时纯在
  */
   --示例1
     conn sys/admin@orcl;
     grant create view to scott;
     
     conn scott/tiger@orcl;
     create view v_scott_1 as select empNo,ename,job from soctt.emp wehre scott.emp.deptno=30;

   --示例2
     create view v_scott_2 (员工,姓名,职位) as  select empno,ename,job from scott.emp where scott.emp.deptno=20;
     
   --示例3  (创建视图后只能查询  不能 insert update delete)
     create view v_scott_3 as select empno, ename,job from emp where deptno =20 with read only;  
   
   --示例4 (视图创建后 能 insert update delete  但是 条件是 sal>2000)
     create view v_scott_4 as select empno,ename,job,sal from emp where sal>2000 with check option;
     insert itno v_soctt_4 values(7960,'jack','Clerk',1200); -- 报错    如果把1200  改为  sal>2000  就可以了


--2.强制创建视图 
     /*(正常情况下 如果基本表不存在 视图会创建失败。如果视图的语句没有错误,则使用Force 就可以创建视图 这种视图被称为:"带有编译错误的视图" 
     此时是处于失效状态  不能执行, 如果 之后基本表被创建了 该视图就可以正常使用) */
   --示例1
     create force view v_force_test as select c1,c2 from tb_force_test;
     select * from v_force_test;  -- 会报错  (表或试图不存在)
     create table tb_force_test
     (
      id number(20) primary key,
      c1 varchar2(20) not null,
      c2 varchar2(20) not null
     );
     insert into tb_force_test values(1,'aaa','aaa');
     select * from v_force_test;  --能成功执行!
     
--3.可更新的连接视图
   /*创建连接视图的select子句要满足一下条件
     1. 不要集中运算符 union ,union all ,intersect ,minus
     2.不包含 distinct 关键字
     3.不包含 group by,order by,connect by start with
     4.不包含子查询
     5.不包含分组函数
     6.需要定义的列不是列 表达式定义的
     7.表中所有 not null 均属于该视图
     8.只能对键值保存表 进行更改 (一般有父子关系组成的连接视图中,子表就是键值保存)
   */
   --示例 1 (deptno 是emp 的父表 ,所以  emp 是键值保存表,只能更新这个表 而且 这个表中的主键 唯一键 都在这个视图中)
   create or replace view v_dept_emp_1
   as
   select b.empno,b.ename,a.deptno,a.loc from dept a ,emp b,where a.deptno=b.deptno and a.deptno in (10,30);
   update v_dept_emp_1 set ename='JACK' where empno=7521;  --可以成功执行
   update v_dept_emp_1 set loc='BEIJIN' where deptno=30;   --错误  不能修改非键值保存表 对应的列
   
  
--4.查询视图的可更新列 (使用User_UpdateTable_Columns 数据库字典:查询当前用户方案中所有的表和视图可修改的列)
   select a.column_name,a.updatable,a.insertable,a.insertable,a.deletable from user_updatable_columns a where a.table_name=upper('v_dept_emp_1');

--5.查询视图的定义信息 (使用User_views 数据库字典 :查询当前方案中视图的定义信息。)
  column view_name format a16
  column text format a63
  select c.view_name,c.text from user_views c  where c.view_name=upper('v_dept_emp_1');
 
--6.删除视图  (要权限 drop any view)
   conn sys/admin@orcl;
   grant drop any view to scott;
   
   drop view v_dept_emp_1;
   
分享到:
评论

相关推荐

    常用的oracle表和视图

    ### 常用的Oracle表和视图知识点详解 #### 一、查询某个表在哪些存储过程中被使用 为了高效地了解某个特定表在哪些存储过程中被引用,可以...以上提供的视图和表可以帮助数据库管理员有效地管理和监控Oracle数据库。

    oracle实验9-10-索引与视图-序列和同义词的创建.doc

    本实验中,我们将创建简单视图、可更新视图和只读视图,并演示如何通过视图对数据源表执行增删改操作。 三、序列和同义词的概念和作用 序列是数据库中的一种自动编号机制,用于生成唯一的数字标识符。同义词是...

    oracle第13讲使用视图、索引、序列和同义词[定义].pdf

    在第13讲中,我们重点关注了四个核心概念:视图、索引、序列和同义词,这些都是数据库管理和优化的重要工具。 1. 视图(View) 视图是数据库中的一个虚拟表,它是由SQL SELECT语句定义的,基于一个或多个实际表(或...

    ORACLE主要的系统表和系统视图

    ### Oracle主要的系统表和系统视图 Oracle数据库作为一款广泛使用的数据库管理系统,在其内部...这些视图和表是Oracle数据库管理和优化的重要工具。理解它们的功能和用途可以帮助DBA更好地维护数据库性能和稳定性。

    Oracle数据库视图管理

    在Oracle数据库中,数据对象主要包括表和视图,此外还有约束、序列、函数、存储过程、包、触发器等多种类型。这些数据对象构成了Oracle数据库的核心组成部分,并且它们之间相互作用,共同实现了复杂的数据管理和业务...

    oracle培训笔记

    通过以上内容,我们可以了解到 Oracle 序列和视图的基本用法及特性,同时了解了 SQL Server 中的身份字段的概念及其与 Oracle 序列的区别。这些知识点对于理解数据库管理和应用开发具有重要意义。

    oracle系统视图作用大全

    9. **DBA_CATALOG**: 列出了所有数据库对象,包括表、视图、同义词和序列,是理解数据库全局结构的起点。 10. **DBA_CLU_COLUMNS/DBA_CLUSTER_HASH_EXPRESSIONS/DBA_CLUSTERS**: 这些视图提供了关于数据库中簇的...

    oracle 同义词和序列

    本文将详细探讨四个关键概念:索引、视图、同义词和序列。 首先,索引是提升查询性能的关键工具。它们为表的特定列提供额外的数据结构,允许数据库更快地定位和检索数据。创建索引分为两种主要方式:企业管理器和...

    Oracle-视图&序列和同义词.ppt

    本篇内容主要围绕Oracle中的三个关键概念:视图、序列和同义词展开,这些都是数据库管理和应用开发中的重要组成部分。 **视图**是Oracle数据库中一种虚拟表,它并不存储实际数据,而是根据用户定义的SQL查询逻辑从...

    ORACLE数据字典与视图

    - 描述:包含用户可以访问的所有表、视图和序列的信息。 - 用途:用于查询数据库中用户可访问的所有对象列表。 2. **ALL_COL_COMMENTS** - 描述:提供用户可以访问的表和视图列上的注释信息。 - 用途:帮助理解...

    Oracle实验3:视图、序列、同义词和索引.docx

    在Oracle数据库管理中,实验3涉及到了几个关键的数据库对象:视图、序列、同义词和索引。这些元素是构建和管理高效数据库系统的重要组成部分。以下是它们的详细解释和示例: 1. **视图(View)**: 视图是从一个或...

    Oracle创建视图(View)

    视图分为简单视图和复杂视图: 1、简单视图只从单表里获取数据,复杂视图从多表; 2、简单视图不包含函数和数据组,复杂视图包含; 3、简单视图可以实现DML操作,复杂视图不可以。 语法结构:创建视图 ...

    oracle查看用户、权限、角色的命令和视图

    以下是对给定文件中提到的命令和视图的详细解析,旨在深入理解Oracle中用户、权限和角色的管理。 ### 1. 查看所有用户 在Oracle中,有三种主要的视图用于查看数据库中的用户: - `DBA_USERS`:此视图包含了数据库...

    oracle同义词和序列

    Oracle 同义词和序列 Oracle 数据库中同义词和序列是两个重要概念,然而同义词的概念往往被人忽略。这篇文章将详细讲解同义词和序列的概念,并对其进行详细的介绍。 同义词是指表、视图、序列、过程、函数和包的...

    Oracle 删除所有表,视图,序列,函数,存储过程等SQL

    ### Oracle删除所有表、视图、序列、函数、存储过程等SQL知识点详解 #### 一、概述 在Oracle数据库管理中,有时会遇到需要彻底清除某个模式下的所有对象的情况,如表、视图、序列、函数、存储过程或包等。这种需求...

    oracle讲解(表分区,视图,序列,游标,触发器等等)

    Oracle 提供了多种视图类型,包括简单视图、复杂视图、物化视图等。 序列 序列是一个自动递增的数字序列,用于生成唯一的标识符。序列可以用来生成表的主键、自动编号等。Oracle 提供了多种序列类型,包括整数序列...

    oracle 购物系统(包括表,视图,序列,索引,触发器,程序包,等等)

    3. **序列**:Oracle序列是用来生成唯一标识符的数据库对象,通常用于主键生成。在购物系统中,序列可能被用于生成订单号、用户ID等,确保这些关键字段的唯一性。 4. **触发器**:触发器是一种数据库级别的存储过程...

    oracle数据字典与视图

    Oracle 数据字典与视图是Oracle数据库管理系统中的核心组成部分,对于数据库管理员(DBA)以及开发人员来说,理解和掌握它们是进行日常管理工作的基础。Oracle数据字典存储了关于数据库对象、权限、状态等所有重要...

    oracle数据字典及视图

    在Oracle中,数据字典是由一组特殊的系统表和视图组成的,这些表和视图由Oracle数据库自身维护,用于提供对数据库元数据的访问。 数据字典视图是用户查询数据库信息的主要接口,它们由DBA视图(供数据库管理员使用...

Global site tag (gtag.js) - Google Analytics