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);
  • 相关阅读:
    Python命名空间的本质
    Jetty架构解析及应用示例
    PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)
    PRML读书会第三章 Linear Models for Regression(线性基函数模型、正则化方法、贝叶斯线性回归等)
    PRML读书会第二章 Probability Distributions(贝塔二项式、狄利克雷多项式共轭、高斯分布、指数族等)
    PRML读书会第四章 Linear Models for Classification(贝叶斯marginalization、Fisher线性判别、感知机、概率生成和判别模型、逻辑回归)
    Mac技巧合集第二期
    Mac技巧合集第三期
    C/Java/Python/ObjectiveC在OS X上的性能实验
    程序猿崛起——Growth Hacker
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11209929.html
Copyright © 2011-2022 走看看