zoukankan      html  css  js  c++  java
  • oracle

    1. oracle常用基本数据类型:
      • 字符型
        • Char:固定长度字符串,占2000个字节
        • Varchar2:可变长度字符串,占4000个字节
        • Nvarchar2:占2000个字符
      • 大对象型(lob)
        • Blob:二进制数据,最大长度4G,用于存图片,视频,文件
        • Clob:字符数据,这大长度4G
      • 数值型
        • Integer:整数类型
        • Float:浮点数类型
        • Real:实数类型
        • Number(p,s):包含小数位的数值类型。p表示精度,s表示小数后的位数
      • 日期类型
        • Date:DD-MM-YY(HH-MI-SS)
        • Timestamp:精确到微秒,精确范围0~9,默认6
    2. id,rowid,rownum区别
      rowid物理位置的唯一标识。
      而id是逻辑上的唯一标识,所以rowid查找速度要快于id,是目前最快的定位一条记录的方式。
      rowid和rownum都是"伪数列",所谓“伪数列”也就是默认隐藏的一个数列。
      rownum用于标记结果集中结果顺序的一个字段,它的特点是按顺序标记,而且是连续的,换句话说就是只有有rownum=1的记录,才可能有rownum=2的记录。
      rownum关键字只能和<或者<=直接关联,如果是>或者=则需要给他起个别名
    3. 主键和唯一索引的区别
      在创建主键的同时会生成对应的唯一索引,主键在保证数据唯一性的同时不允许为空,而唯一可以有一个为空数据项。
      一个表中只能有一个主键,但是一个主键可以有多个字段,一个表中可以有多个唯一索引。
    4. 存储过程
      • 概述:可以包含逻辑判断的sql语句集合,经过预编译存在于数据库中,通过调用指定存储过程的名字(可有参,可无参)来执行
      • 优点:
        • 简化了复杂的业务逻辑,根据需要可重复执行
        • 屏蔽底层细节,不需要暴露表信息即可完成操作
        • 降低网络通信量,多条语句可封装到一个存储过程来执行
        • 设置访问权限来提到安全性
        • 提到执行效率,因为它是预编译以及存储在数据库中
      • 缺点
        • 可移植性差,相同的存储过程并不能跨多个数据库操作
        • 大量使用存储过程,会使服务器压力增大,维护难度增加
      • oracle中存储过程语法
          --下面是在oracle数据库下最基本的语法
          --仅创建一个名为testProcedure 的无参的存储过程
          --IS也可以是AS
          --如果已经存在名为 testProcedure 的存储过程,下面的语法会出现 名称已被使用的错误
          --解决办法:
          --第一句可以写成 create or replace procedure testProcedure
          --这样会替换原有的存储过程
          --NULL表示任何可以正确执行的sql 语句,但至少一句
          
          create procedure testProcedure 
          IS
          BEGIN
          
          NULL
          
          END;
          
          存储过程的参数的分类:
          IN
          OUT
          INOUT
          
          注意:
            存储过程之间可相互调用
            存储过程一般修改后,立即生效。
    5. oracle分页
      select * from
      (
          select A.* rownum rn 
          from(select * from t_name) A 
          where rowmum<10
      ) 
      where rn >=5
    6. 表数据复制到另一张表
      • 另一张表不存在时
        create table t2 as select * from t1
        
      • 另一张表存在
        insert into t2 select 字段 from t1 
    7. inner join
      select 查找信息 from 表名 1 inner join 表名2 on 表名1.列名 = 表名2.列名
    8. left join
      select 查找信息 from 表名1 left join 表名2 on 表名1.列名 = 表名2.列名
    9. right join
      select 查找信息 from 表名1 right join 表名2 on 表名1.列名 = 表名2.列名
    10. 查询树形遍历结构
      select * from extmenu
           start with pid=1
        connect by prior id = pid

      快速删除父节点以及父节点下的所有节点:

      Delete from extmenu where id in (

      select * from extmenu

              start with pid=1

      connect by prior id = pid

      )

    11. exists替换in---进行联表查询
      select * from dept where exists
      (select * from emp where emp.deptno=dept.deptno)
      
      或
      select  *  from  dept  d  inner  join  emp  e  on  d.deptno = e.deptno(只查询出两表共同拥有的字段数据)
    12. 删除表中重复数据
      delete from xin a where a.rowid != ( 
        select max(b.rowid) from xin b 
        where a.name = b.name
      )
    13. row_number()rank() over dense_rank() over 按工资排序

      select sal,
           row_number() over(order by sal desc) rank1,
           rank() over(order by sal desc) rank,
           dense_rank() over(order by sal desc) drank
      from emp

       

    14. select * from (select emp.* from(
        dense_rank() over(partition by departNo order by sal desc)
        rk from emp ) 
      Where rk=4
      

    作者:idanyang

    出处:http://www.cnblogs.com/idanyang/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/idanyang/p/6431477.html
Copyright © 2011-2022 走看看