• Oracle 学习SQL


    开始记录最近学习了一些基础的SQL知识。

    说起数据库,想到当时学习数据库概论这本书的时候,就学了一些基本的SQL语句以及数据库理论知识,记得最当时考试的数据库范式的知识,不知当时是怎么过来的,到现在对这些知识也模模糊糊,但是想研究一下这些内容。

    其实,目前来说,对于数据库体系结构,SQL执行的原理不是特别的清楚,仅仅是搜集一些最佳的SQL书写的优化进行,有空可以研究一下数据库底层的一些东西。

    刚开始吧,先回顾一下SQL语句吧,因为自己开发最多的还是SQL语句较多,其他的暂时用的不太多。

    SQL:

      1.in ( select )   = 是其中的一种

      2.exists select null 这种模式 子查询  1:n的全表扫面  

      3.group by  having  模式 (AVG   SUM COUNT  MAX )  

      4. from  (select  .......   )  a  where  .....  模式  

          5. like  ,% ,between ....and....

      注意:下面是一些统计仅仅对于Oracle 10g

        a.开窗函数SUM(C) OVER (PARTITION BY B)   数据不少 列所在的类     与Group BY  一组数据 少了一些数据  类中的统计。

      6.少用distinct,union,效率不高

      7.with nolock用在Select里面,提高效率

      8.for update对查询进行加锁,保证不会发生不可重复多机制

          =======================

          一些报表采取存储过程,这样就涉及到一些临时表,有临时表主要是为了提高检索的速度,负责大量的表关联导致查询的效率很慢。他仅仅存储一些临时的数据,仅      仅对当前会  话或者当前的事物有效,不会占用表空间,几乎都在内存里面进行。

         ======================= 

    补充几个常见的关键字:

      case when  then  end 的报表的查询。

      left out join   on

      right out join  on

      inner join = 常见的表连接

      case when (搜素函数) 、union  (常见的行转列)

      交叉连接(两个表的列综合)  select ta.*,tb.* from ta,tb (ta*tb的行数)

      为了是oracle的子查询的语句执行的效率更高,可以使用with as语法(connect by)

      推荐尽量使用表连接,减少使用子查询,因为子查询会产生全表扫描(本质就是IO的次数太多,导致效率低下,IO瓶颈就是速度不匹配) 

      SQL编写基本时间久了,写的多了也就熟悉了(记得当时开发时,一些SQL感觉比价难,不会写,但是开发也就是SQL),但是如何提高SQL执行的效率,这才是提高SQL的难       处所在,所以觉得有时间了解一下SQL执行的原理。

  • 相关阅读:
    JS数组分页
    UI框架
    mongodb
    koa2 router中间件的三种写法
    Float浮点数转二进制串和十六进制串
    Iterator和for...of循环
    mysql相关故障
    lsof
    iostat测试磁盘性能
    dd测试磁盘
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3480922.html
Copyright © 2020-2023  润新知