zoukankan      html  css  js  c++  java
  • oracle 5:索引,plsq编程,语法分支

    索引:提升查找数据的效率

        用于提升数据查找效率的一个数据库对象

    索引的创建对应着表中的列

    --手动创建索引,给ename创建。说明:经常使用enmae做条件
    create index emp_name
    on emp(ename)

    创建索引的原则:

    (1)经常用于where字句或作为连接条件的列

    (2)所含数值范围比较大的列

    (3)含有大量空值得列

    (4)表比较大,但大部分查询返回的结果集小于总记录的2-4%

    不需要创建索引:

    (1)表很小

    (2)很少在查询中出现的列

    (3)查询结果大于表的2-4%

    (4)频繁更新的表

    plsq 编程:

    例如:删除表中的数据,有条件删除。有两种方式

      (1)在java程序中编写delete语句,把删除语句发送到数据库执行

      (2)数据库直接写删除语句——函数deleteEmp

          在java程序中,调用删除函数即可

    例:

    --plsq函数
    declare
    v_ename varchar2(10) := '皮皮虾';
    v_eno number(5,0);
    begin
      v_eno := 7878;
      dbms_output.put_line(v_ename || '的编号是:' || v_eno);
    end;

    NVL(列,0),当指定的列为空时,用0替代

    通过查询的方式赋值

    --查询赋值
    declare 
    emp_id emp.empno%type;
    emp_name emp.ename%type;
    emp_wage emp.sal%type;
    begin
      emp_id := 7788;
      select ename,nvl(sal,0)+nvl(emp.comm,0) into emp_name,emp_wage
      from emp
      where empno=emp_id;
      dbms_output.put_line('姓名是: '||emp_name ||' '||'总薪资是: '||emp_wage);
      end;
    输出、
    姓名是: SCOTT 总薪资是: 3000

    根据提示框插入数据

    --提示框插入数据
    declare
    v_deptno dept1.deptno%type;
    v_dname dept1.dname%type;
    v_local dept1.loc%type;
    begin
      v_deptno := &deno;
      v_dname := '&name';
      v_local := '&loc';
      insert into dept1 values(v_deptno,v_dname,v_local);
      end;

    复制一条或多条数据到另一个表

    --赋值一条数据到另一个表
    declare
    emp_no emp.empno%type := &eno;
    begin
      insert into emp1 select * from emp
      where emp.empno = emp_no;
    end;

    ---恢复内容结束---

    ---恢复内容开始---

    索引:提升查找数据的效率

        用于提升数据查找效率的一个数据库对象

    索引的创建对应着表中的列

    --手动创建索引,给ename创建。说明:经常使用enmae做条件
    create index emp_name
    on emp(ename)

    创建索引的原则:

    (1)经常用于where字句或作为连接条件的列

    (2)所含数值范围比较大的列

    (3)含有大量空值得列

    (4)表比较大,但大部分查询返回的结果集小于总记录的2-4%

    不需要创建索引:

    (1)表很小

    (2)很少在查询中出现的列

    (3)查询结果大于表的2-4%

    (4)频繁更新的表

    plsq 编程:

    例如:删除表中的数据,有条件删除。有两种方式

      (1)在java程序中编写delete语句,把删除语句发送到数据库执行

      (2)数据库直接写删除语句——函数deleteEmp

          在java程序中,调用删除函数即可

    例:

    --plsq函数
    declare
    v_ename varchar2(10) := '皮皮虾';
    v_eno number(5,0);
    begin
      v_eno := 7878;
      dbms_output.put_line(v_ename || '的编号是:' || v_eno);
    end;

    NVL(列,0),当指定的列为空时,用0替代

    通过查询的方式赋值

    --查询赋值
    declare 
    emp_id emp.empno%type;
    emp_name emp.ename%type;
    emp_wage emp.sal%type;
    begin
      emp_id := 7788;
      select ename,nvl(sal,0)+nvl(emp.comm,0) into emp_name,emp_wage
      from emp
      where empno=emp_id;
      dbms_output.put_line('姓名是: '||emp_name ||' '||'总薪资是: '||emp_wage);
      end;
    输出、
    姓名是: SCOTT 总薪资是: 3000

    根据提示框插入数据

    --提示框插入数据
    declare
    v_deptno dept1.deptno%type;
    v_dname dept1.dname%type;
    v_local dept1.loc%type;
    begin
      v_deptno := &deno;
      v_dname := '&name';
      v_local := '&loc';
      insert into dept1 values(v_deptno,v_dname,v_local);
      end;

    复制一条或多条数据到另一个表

    --赋值一条数据到另一个表
    declare
    emp_no emp.empno%type := &eno;
    begin
      insert into emp1 select * from emp
      where emp.empno = emp_no;
    end;

    if分支判断

    语法1:

                IF   条件  THEN 语句1;

           语句2;

           END IF;

    语法2:

                IF  条件  THEN  语句序列1;  

           ELSE   语句序列 2

           END   IF

    语法3:

    IF   条件  THEN 语句;

    ELSIF  语句  THEN  语句;

    ELSE  语句;

    END  IF;

    --输入员工编号,输出此人的薪资,与平均工资的比较结果
    declare
    emp2_no emp2.empno%type := &eno;
    emp2_avgsal emp2.sal%type;
    emp2_sal emp2.sal%type;
    begin
      --得到平均工资
      select avg(sal) into emp2_avgsal
      from emp2;
      --得到这个人的工资
      select sal into emp2_sal
      from emp2
      where emp2.empno  = emp2_no;
      if emp2_avgsal < emp2_sal then
        dbms_output.put_line('低于平均工资');
      else
        dbms_output.put_line('高于平均工资');
        end if;
      end;

     case then 语法

    --输出每个人的名字。薪资,薪资级别   查询语句
    select emp.ename,emp.sal,
      case
        when emp.sal < 1500 then ''
        when emp.sal >1500 and emp.sal < 3000  then ''
        when emp.sal > 3000 then ''
      end case  
    from emp;
    --输入一个人的编号,输出薪资级别
    declare
    emp_no emp.empno%type := &empno;
    emp_sal emp.sal%type;
    begin
      --查询这个人的工资
      select sal into emp_sal
      from emp
      where emp.empno = emp_no;
      case
        when emp_sal < 1500 then
          dbms_output.put_line('');
        when emp_sal > 1500 and emp_sal < 3000 then
          dbms_output.put_line('');
        else
          dbms_output.put_line('');
      end case;
    end;

    Loop 语法

    语法1:

    --loop循环
    declare
     var_sal emp.sal%type;
     begin
       var_sal := 1;
       loop
         if var_sal > 200 then exit;
         end if;
         var_sal := var_sal +5;
         end loop;
         dbms_output.put_line(var_sal);
         end;
           

    语法2:

    输出1——100的和

    declare 
    var_num number := 1;
    var_sum number := 0;
    begin
      while var_num <= 100 loop
        var_sum := var_sum + var_num;
        var_num := var_num+1;
        end loop;
        dbms_output.put_line(var_sum);
    end;

    语法3:for循环

    declare
     var_sum number := 0;
    begin
      for i in 1..100 loop
        var_sum := var_sum + i;
        end loop;
        dbms_output.put_line(var_sum);
        end;
  • 相关阅读:
    flume+kafka+storm打通过程
    kafka入门
    hive执行更新和删除操作
    redis存储对象与对象序列化详解
    语音常识--语音信号的数字模型
    声源测向: TDOA-GCC-PATH方法
    【面试】如何比较一个类型【模板使用】【sizeof用法】
    【概括】C++11/14特性
    【面试】编译器为我们实现了几个类成员函数?(c++)
    语音信号处理常识【摘抄|自用】
  • 原文地址:https://www.cnblogs.com/miaomeng/p/8919587.html
Copyright © 2011-2022 走看看