zoukankan      html  css  js  c++  java
  • oracle视图索引

    reate table fleet_header(
      day date,name varchar2(20),
      route_id number(5),fleet_id number(5)
    );

    create view fleet (day,route_id)
    as select day, route_id from fleet_header;

    insert into fleet values('10-10月-05',9);

    --修改视图定义

    create or replace view fleet as select * from fleet_header;

    --删除视图
    drop view fleet;

    --如何在fleet_header表的name 列上创建名为aud_index的索引
    create index aud_index on fleet_header(name);

    --创建唯一索引
    --如何在fleet_header表的route_id 列上创建名为aud_index的索引
    create unique index place_ind on fleet_header(route_id)

    --创建组合索引
    create index comp_index on fleet_header(route_id,fleet_id)

    --创建反向键索引
    --fleet_header表的route_id列值是一个顺序增长的序号,
    --需要在此列上创建索引以提高查询速度
    create index rev_ind on fleet_header(route_no) reverse;


    --创建位图索引
    create bitmap index bit_ind on fleet_header(cat._code);

    --创建位图索引
    create index ucase_name_ind on fleet_header (upper(name));
    --输入以下语句使用该索引
    select * from fleet_header where upper(name)='smith';


    --删除索引
    drop index emp_ind1;


    ----------------------------------------
    --使用条件控制
    ----------------------------------------
    create table salary_records
    (
                 deptcode varchar2(15),
                empcode varchar2(10),
                empsal  number
    )

    insert into salary_records
    values('DP04','A4',0)

    declare
       dptcode varchar2(15);
       emp_code varchar2(10);
       salary number;
    begin
       select deptcode,empcode,empsal into dptcode,emp_code,salary
       from salary_records where empcode='&empid'

       for update of empsal;

        IF dptcode ='DP01' then
          update salary_records set empsal=salary+2000
          where empcode=emp_code;
       elsif dptcode ='DP01' then
           update salary_records set empsal=salary+1700
          where empcode=emp_code;
       elsif dptcode='DP03' then
           update salary_records set empsal=salary+2000
          where empcode=emp_code;
       end if;
    commit;
    end;

    -----------------------------------------------
    --使用循环控制
    ---------------------------------------------
    declare
       courserec SALARY%rowtype;
       counter  number:=0;
      begin
        courserec.empsal:=&id;
        courserec.empcode:='&name';
      while counter <12
       loop
          insert into SALARY
          values(courserec.empsal,courserec.empcode);
          counter:=counter+1;
          courserec.empsal:=courserec.empsal+1;
        end loop;
      end;

    -----------------------------------------------
    使用顺序控制
    -------------------------------------------
    alter table salary_records add (working_days number);

    select * from salary_records

    declare
         workdays number;
         salary   number;
         bonus    number;
         dept     varchar2(10);
       begin
              select  working_days,empsal,deptcode into workdays,
          salary,dept from salary_records where empcode='&empid';
         IF workdays>=29 then
         
             goto calc_raise;
            else
           DBMS_OUTPUT.PUT_LINE('工作天数少于29天');
          end if;
    <<calc_raise>>
        if dept='DP01' then
               bonus :=salary*0.25;
               dbms_output.put_line(bonus);
         else
               bonus :=salary*0.10;
               dbms_output.put_line(bonus);
           end if;
       end;

     set serveroutput on
     /

  • 相关阅读:
    登录功能实现
    JavaScript中的apply()方法和call()方法使用介绍
    导致JSON无法解析的问题
    git
    Xcode 与 macOS 系统版本的兼容问题
    创建多个Target
    验证合法身份证
    Xcode 6创建预编译头文件.pch
    About In-App Purchase
    Xcode 6制作通用framework库
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3733476.html
Copyright © 2011-2022 走看看