zoukankan      html  css  js  c++  java
  • ORACLE 数据库总结

    1.表和数据恢复

        1、从回收站里查询被删除的表

         select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;

        2.执行表的恢复语句

        flashback table tableName to before drop;  tableName需要恢复的表名

    2.数据库优化

      1.避免使用select *

      2、使用表的别名

      3、用Exists 替代 in

    --糟糕的查询
    SELECT column_name FROM table_name1 WHERE column_name IN( SELECT column_name FROM table_name2)
    ---较好的查询
    SELECT column_name FROM table_name1 outer WHERE EXISTS (SELECT 1 FROM table_name2 inner WHERE inner.column_name = outer.column_name)

    4、用not exists 替代 not in
    ---较好的查询
    select columnname,columnname1 from Table_Name1 t1,Table_Name2 t2 where t1.id=t2.id and t2.name<>'A'
    ---更好的查询
    select columnname,columnname1 from Table_Name1 t1 where not exists(select 1 from Table_Name2 t2 where t2.id=t1.id and t2.name='A')
    5、用exists替换distinct
    当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在select字句中使用distinct。一般可以考虑用Exists替换。Exists使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果。
    --糟糕的查询
    SELECT DISTINCT t1.column_name
    FROM table_name1 t1, table_name2 t2
    WHERE t1.column_name = t2.column_name;
    ---较好的查询
    SELECT column_name
    FROM table_name1 outer
    WHERE EXISTS
      (SELECT 1
      FROM table_name2 inner
      WHERE inner.column_name = outer.column_name)
    6、用>=替换>
    ---糟糕的查询
    
    select * from EMP where id>3;
    //较好的查询
    select * from EMP where id>=4;
    两者的区别在于,后者将直接跳转到第一个id等于4的记录而前者将首先定位到id=3的记录并且向前扫描到第一个id大于3的记录。

    3.on和where的执行方式解析:

    1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

    2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

    4.oracle认为 null 最大

        升序排列,默认情况下,null值排后面。

        降序排序,默认情况下,null值排前面。

    5.如果查询出comm查询出为空值就用0替代,不为零则使用comm值

    select ename,sal*13+nvl(comm,0)*13 "年工资" from emp;

    6.Oracle中语句 赋值和循环写法

    declare
    i int:=1; //初始化 赋值(:=)
    begin
    loop  //开始循环
    exit when i>10;
    DBMS_OUTPUT.PUT_LINE('编号为'||i);
    i:=i+1;//相当于i++
    end loop;//结束循环
    end;




















    
    
     
  • 相关阅读:
    break-continue
    函数定义
    函数类型
    为何要继承SpringBootServletInitializer,为何要实现configure这方法
    查询一个表中的两个字段值相同的数据
    数据库中查出来的时间多8小时&查询数据正常展示少8小时
    @JsonFormat与@DateTimeFormat注解的使用
    用js获取当前月份的天数
    js获取当前年,月,日,时,分,秒
    maven配置和安装
  • 原文地址:https://www.cnblogs.com/wangyuru/p/3714444.html
Copyright © 2011-2022 走看看