Oracle学习笔记3-数据方案对象管理

       1.视图管理

       一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表(virtual table)。视图可在使用表的许多地方使用。
        
由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义254列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行的全部操作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发器的限制。

视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据、视图只在数据字典中存储其定义。

引入视图有下列好处:

       。通过限制对表的行预定义集合的存取,为表提供附加的安全性

       。隐藏数据复杂性。

       。为用户简化命令

       。为基本表的数据提供另一种观点。
 
       。可将应用隔离基本表定义的修改

       。用于不用视图无法表示的查询。

       。可用于保存复杂查询

       创建视图的语法

       CREATE [OR REPLACE] [[NO] FORCE] VIEW [方案.]视图名

        AS查询语句

        [WITH READ ONLY] | [CHECK OPTION [CONSTRAINT约束语句]]

        AS:视图的查询SQL语句,这是一个SELECT语句

        OR REPLACE:如果视图存在,就覆盖这个已存在的视图

        FORCE:创建视图时,不论这个视图所访问的表或视图是否存在,都创建视图

        READ ONLY:设置视图为只读,不能对其进行插入、删除或更新操作

        CHECK OPTION:向视图插入新行或者更新行时,如果行插入或行更新后,

        视图访问不到这条记录,CHECK OPTION子句将不允许插入这行或更新这行

        CONSTRAINT:指定CHECK OPTION子句的约束名称,默认名称为

        SYS_Cn,n是数据库自动赋予的一个用于标识这个约束的独一无二的整数

       示例:CREATE OR REPLACE FORCE VIEW DEMO_VIEW3

                 AS

                 SELECT ID,NAME ,USERID FROM LIU.DEMO_TAB1  WHERE USERID=2

                 WITH CHECK OPTION CONSTRAINT DEMO_VIEW3_CNST

       2.索引管理

       索引是一个与表相关的可选结构

       使用索引能提高访问表的速度,可以在不影响基表情况下创建或删除索引

       对基表实行插入、更新和删除时,Oracle会自动维护索引

       索引在逻辑上和物理上都独立于基表,索引有多中类型

       创建索引

       使用CREATE INDEX命令创建索引时,如果用户在自己的模式下创建索引,必须考虑以下条件是否满足:

        被索引的表必须在用户自己的模式中

        用户必须具有被索引表上的INDEX权限

        用户必须具有CREATE ANDY INDEX系统权限

        CREATE [UNIQUE | BITMAP] INDEX [方案名.]索引名

        ON表名(列名1,列名2…)

       3. 序列管理

        用户要在自己的模式下创建序列,必须具有CREATE SEQUENCE系统权限,在其它用户模式下创建序列必须具有CREATE ANY  SEQUENCE系统权限

        模式:

          CREATE SEQUENCE [方案.]序列

          [INCREMENT BY整数]|

          [START WITH整数]|

          [MAXVALUE整数| NOMAXVALUE]|

          [MINVALUE整数| NOMINVALUE]|

          [CYCLE整数| NOCYCLE]|

         如何把建好的序列导入表中作为自增长列:

          示例:

         建立一个序列---

         create sequence my_seq increment by 1 start with 1 nomaxvalue nominvalue nocycle

         已存在一张表---student有三列(stu_Id自增长列,stu_Namestu_Age)-----

         insert into student values(my_seq.nextval,’**’,’**’)

       CURRVAL为列返回序列的当前值,NEXTVAL伪列返回序列的下一个值

        注意:在使用CURRVAL的时候必须先使用NEXTVAL不然会报错。

      4. 触发器

       触发器(Trigger)是存储在数据库中的过程,当数据库中的某个事件发生后,这个过程就会被触发执行,一般发生在表或视图的插入、删除或者修改处理中。

       功能:

      1、允许/限制对表的修改
      2、自动生成派生列,比如自增字段
      3、强制数据一致性
      4、提供审计和日志记录
      5、防止无效的事务处理
      6、启用复杂的业务逻辑

       模式:

       CREATE [OR REPLACE] TRIGGER [方案.]触发器名

             触发时间

             触发事件

             ON表名

             [FOR EACH ROW]

             Pl/sql语句

       注:

       触发器名:触发器名称

       触发时间:指明触发器何时执行,该值可取beforeafterbefore表示在数据库动作之前触发器执行after表示在数据库动作之后触发器执行

        FOR EACH ROW:对表的每一行触发器执行一次,如果没有这一行,对整个表执行一次

       示例:

              create or replace trigger my_trigger
              before insert or update
                        of stu_age on student
              for each row
 
              when (new.stu_age<18)
              begin
                      :new.stu_age := 18;
              end my_trigger;

 

 

       

 

 

     

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值