zoukankan      html  css  js  c++  java
  • Oracle学习(一)

    ORACLE常用数据类型

    类型名称 ORACLE类型 描述
    整型 Number(n) N表示数字的长度,默认值number-相当于number(11),范围为-1038到1038
    小数 Number(n,m) N表示总长度,m小数位,number(5,2)
    字符串(固定长度) Char(n) N表示长度,最大2000个字节,
    字符串(可变长度) Varchar2(n) N表示长度 最大4000字节
    字符串(可变长度) nvarchar2(n) N表示长度 最大4000个字节
    日期 date ORACLE日期格式是固定。日期在存储时有一个本地化操作
    时间 timestamp TIMESTAMP数据类型要比DATE数据类型更确切,粒度更细
    大文本类型 Clob 存储海量文本数据。最大值可达4G
    大量二进制类型 blob 存储二进制数据,最大4g

    varchar2(byte):就是默认的表示方式,比如我们写成:varchar2(100),就相当于varchar2(100 byte),表示最大字节数是100,该字段最多能容纳100个字节,强调空间大小。
    varchar2(char):表示最大字符数是100,该字段最多能容纳100个字符,强调个数。假设我们写成varchar2(100 char),那么无论是数字、字母、汉字,都看成一个字符,最多写100个
    nvarchar2():没有byte、char之分,类似于varchar2(char),只不过nvarchar2()屏蔽了数据库编码,无论是何种编码,nvarchar2()中一个汉字都占两个字节。


    char varchar2 nvarchar2

    http://www.cnblogs.com/iyangyuan/p/3491215.html

    常见的Oracle数据类型了解:

    Char类型:定义长度时,如果存储的数据小于长度,空位补空格。固定长度的类型
    缺点:浪费存储空间 char(3) m 空格空格m
    Char类型中存在空格,那么在程序取值比较时容易出错
    在ORACLE中使用trim()函数,会造成char类型字段上的索引失效
    优点:char类型在效率上比着其它字符类型的会快一点

    Varchar2类型: 可变长度。存储时如果数据小于长度,varchar的长度按实际存储长度计算
    优点:节省存储空间 varchar2(3) 你好 你好
    缺点:效率比char类型低
    注意:varchar2只有Oracle才有的。带2的是Oracle自己增强的数据类型,不是sql99规范中的。

    Clob是longtext类型的代替品,存储超大量的字符串。如果varchar存储不了,可以用这个。但效率很低下,而且不能使用上索引。这玩意的存储大小不是按长度存储,按字节数存储的。

    Blob 存储海量二进制类型。例:电影、音乐、高清图片。
    缺点:每次存储时都需要转换为二进制进行存储
    获取时把二进制转为数据,通常存储电影、音乐时存储的是文件的路径

    date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”

    timestamp是DATE类型的扩展,可以精确到小数秒(fractional_seconds_precision),可以是0 to9,缺省是6。两个timestamp相减的话,不能直接的得到天书,而是得到,
    多少天,多少小时,多少秒等
    两者转换:
    to_char来转换timestamp——>date:

    select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
    

    date ——>timestamp:

    select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual
    

    Oracle与mysql 比较

    https://blog.csdn.net/baidu_37107022/article/details/77043959

    区别 mysql oracle
    并发性 mysql以表级锁为主,对资源锁定的粒度很大;虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。 oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。
    一致性 mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别
    一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。
    oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。
    oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
    事务 mysql在innodb存储引擎的行级锁的情况下才支持事务 oracle很早就完全支持事务
    数据持久性 默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。 保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
    提交方式 默认是自动提交 默认不自动提交,需要用户手动提交
    逻辑备份 mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的DML使用 oracle逻辑备份时不锁定数据,且备份的数据是一致的
    热备份 myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响DML操作;
    innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的;
    innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。
    oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
    sql语句的扩展和灵活性 mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。 oracle在这方面感觉更加稳重传统一些
    复制 复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。 既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
    分区表和分区索引 mysql的分区表还不太成熟稳定 oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验
    类型 中小型数据库 大型数据库

    mysql与Oracle操作上的区别:

    操作上的区别 mysql Oracle
    主键 Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长 Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可
    单引号的处理 MYSQL里可以用双引号包起字符串 ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
    翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数 ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80
    字符串的模糊比较 MYSQL里用 字段名 like ‘%字符串%’, ORACLE里也可以用 字段名 like ‘%字符串%’ 但这种方法不能使用索引, 速度不快。
    空字符的处理 MYSQL的非空字段也有空的内容 ORACLE里定义了非空字段就不容许有空的内容

    更多:
    https://wenku.baidu.com/view/d3a39630376baf1ffc4fad72.html?sxts=1543050295726
    https://wenku.baidu.com/view/108b843658fb770bf78a55d2.html?sxts=1543050304259
    http://www.cnblogs.com/iyangyuan/p/3491215.html

  • 相关阅读:
    MYSQL的FOUND_ROWS()函数
    mysql连表查询
    mysql事务
    js正则表达式
    mysql关键字执行顺序
    spring aop xml中配置实例
    spring注入bean的五种方式
    【CSS】之选择器性能和规范
    【视频】之H.264
    【Javascript】之eval()
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12544837.html
Copyright © 2011-2022 走看看