zoukankan      html  css  js  c++  java
  • Oracle学习笔记1

    oracle数据库的市场份额大,属于大中型数据库,安全性强,稳定性强,多用户,分布式支持力度大,可以移植,兼容性好;

    oracle数据库是一个关系型数据库,它与mysql数据库有很多不同的地方。

    在oracle数据库中,数据类型,常用的有:

    1.字符串型

      定长字符串:char(长度)最多存储2000字符

      可变字符串:varchar2() 最多存储4000字符

    2.数字类型

      Number(M,N)M:总长度,N:小数位数

    3.日期类型

      Date:日期类型:世纪,年月日时分秒 7字节

      Timestamp:精确秒具体到6位

    4.大对象

      CLOB:c:字符;4G

      BLOB:B:二进制

    --1. 在mysql中,我们可以使用select 1;这句sql语句时可以查到结果的,但是在oracle中,这是一个不完整的sql语句,不能被执行,
    select 1 from dual; --因此有一个虚拟的表用来补充代码的完整性
    
    --2. 在mysql中,建表时可以设置主键自增,但是在oracle中,没有这个功能,但是相对的oracle有序列,可以通过序列实现mysql中的自增效果
    create sequence seq1 --创建一个名为seq1的序列
      start with 1  --起始值为1
      increment by 1 --每次自增数字为1
      maxvalue 100 --最大值
      cycle; --循环
    -- 正常情况新建序列只写前两条就够了, 其他的都是用默认的值就可以,查询序列的值
    select seq1.nextval from dual; --查询下一个值
    select seq1.currval from dual; --查询序列当前的值
    --序列的具体用法
    insert into emp (empno, ename) VALUES (seq1.nextval,'张三');
    
    -- 3.在mysql中分页查询使用的时limit来查询,但是在oracle中没有limit,在oracle中使用分页查询需要用到伪列rownum
    select rownum,e.* from emp e where rownum <=10;
    --可以看到每一行前都有个行号,但是这个行号是变化的,当读取到一个数据时,就给这个数据的行号赋值,因此不能同通过>来取值
    --接下来的这句语句是错误的,因为执行时,会判断条件,如果条件满足,搜索到数据,就给数据行号,因此rownum初始值为0,0>1,条件不满足,找不到数据
    select rownum,e.* from emp e where rownum>1 and rownum <=10; --错误的sql语句
    --在oracle中正确的分页要好好的利用伪列,既然伪列是虚拟的,那么就把它实例化了,正确的分页语句如下
    select * from (select rownum r,e.* from emp e where rownum<=10) e where e.r>5;
    --上面语句的解释为先查询一个有位列的表,然后给位列起个别名,将这个有位列的表作为数据表来根据r的值做判断
    
    --不相关子查询,在之前的语句中,都是先查询条件中的sql语句,然后在执行父类的sql语句,即子类的sql语句单独拿出来也能运行,
    --这种sql语句叫做不相关子查询,执行顺序是先子后父,如下
    select * from emp where empno in (select mgr from emp);
    --相关子查询,是先执行父查询,再执行子查询,单独执行子查询是错误的,如下
    select * from emp e where exists(select * from emp e2 where e.empno=e2.mgr);
  • 相关阅读:
    [网络] 第五章 运输层
    pubwin
    R语言
    我的微博开通啦
    迅雷使用积分制的真正作用和目的 [揭密迅雷]
    求数组里面第二大的数
    xp环境下安装vmware workstation 7出错
    一道大学c语言作业题
    写在断网的那些日子里
    mysql里奇怪的日期201627 14:28:15
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11209929.html
Copyright © 2011-2022 走看看