zoukankan      html  css  js  c++  java
  • ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引

        WHEN子句说明触发约束条件。Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数。WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行触发器中,不能用在INSTEAD OF行触发器和其它类型的触发器中。

    -- 创建记录操作事件的表

    CREATE TABLE event_table(

       event VARCHAR2(50),

       time DATE

    );

    -- 创建触发器

    CREATE OR REPLACE TRIGGER tr_startup

       AFTER STARTUP

       ON DATABASE

    BEGIN

       INSERT INTO event_table(event, time)

        VALUES(ora_sysevent, SYSDATE);

    END;

     

     

    1. 不能对rownum使用>(大于1的数值)、>=(大于1的数值)、=(大于1的数值),否则无结果。 

         2.在使用rownum时,只有当Order By的字段是主键时,查询结果才会先排序再计算rownum,但是,对非主键字段(如:name)进行排序时,结果可能

    就混乱了。出现混乱的原因是:oracle先按物理存储位置(rowid)顺序取出满足rownum条件的记录,即物理位置上的前5条数据,然后在对这些数据按照Order By的字段进行排序,而不是我们所期望的先排序、再取特定记录数。

     

     

    通常有三种执行不同类型的动态SQL方法:

      1. 使用EXECUTE IMMEDIATE语句。 
        除不能处理多行查询语句,其他的动态SQL包括DDL语句,DCL语句以及单行的SELECT查询都可以。
      2. REF CURSOR动态游标,使用OPEN-FOR,FETCH,CLOSE。 
        能处理动态的多行查询操作,必须要使用OPEN-FOR语句打开游标,使用FETCH语句循环提取数据,最终使用CLOSE语句关闭游标。
      3. 使用批量BULK COLLECT执行动态SQL。 
        通过使用批量动态SQL语句,可以加快SQL语句处理,进而提高PL/SQL的性能。

     

     

    1. 视图简介

    视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。

    2. 创建视图

    3. 视图的优点

    4. 索引

    为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。

     

  • 相关阅读:
    人生几宝
    sleep() 和 wait() 有什么区别?
    abstract class和interface有什么区别?
    谈谈final, finally, finalize的区别
    字符串转码【String.getBytes()和new String()】
    Redis中文API地址
    java之ibatis数据缓存
    ibatis的缓存机制
    mysql|表row_format的静态与动态,Compact
    Tesseract ocr 3.02学习记录一
  • 原文地址:https://www.cnblogs.com/zzwx/p/4604200.html
Copyright © 2011-2022 走看看