Oracle中常用的数据类型:

常用的数据类型有:
一.数值类型
number:
    在Oracle中取消了在mysql中的int类型,使用number代替,如果你在创建
数据库表的时候使用了int类型会自动转换成number类型,并且Oracle没有
这个”auto_increment”属性,所以它没法像MySQL般在表内定义自增主键。
但是,Oracle里的序列(SEQUENCE),可间接实现自增主键的作用;
number有两个参数:
number(m,n):m用来表示有几位有效数字最大是38位,n表示小数点以后可以
有几位,多出来的位数要四舍五入。

二:字符类型
char:
    用于存储固定长度的字符串,一个空间占用1个字节,最多存储2000个字节,
并且在存数据的时候,给的数据占不满给定的空间也会自动用空格补满空间,如果长
度超出了就会报错;

varchar2:
    是Oracle特有的数据类型,Oracle中不提倡使用varchar; varchar2用于存储可
变长度的字符串。最大长度是char的两倍,也就是4000个字节,在存数据的时候,
给的数据占不满给定的空间会自动截断,省空间,如果长度超出了会补长,不会报
错;并且它将原本varchar可以存储空字符串的特性转换成了可以存储null值,提供
了向后兼容的能力;

但是为什么不直接全部使用varchar2呢?
    1.VARCHAR2虽然比CHAR节省空间,但是假如一个VARCHAR2列经常被修改,而且每次
被修改的数据的长度不同,这会引起‘行迁移’(RowMigration)现象,而这会造成多
余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会
更好一些;
    2.还有就是当我们存储已知固定长度的数据时,比如:手机号(11位)、身
份证号码(18位)等,可以考虑使用 char。因为,在查询数据时,对于 char 类型
字段,是全字符整体匹配;而 varchar2 是一个字符一个字符的进行匹配;
    3.并且char的效率要比varchar2高一些,为了提高效率就必须牺牲一些空间。

nchar:
    用于存储固定长度的字符串,一个空间占用2个字节,最多存储2000个字节,并且
在nchar中存储字符,数字和文字都是占用两个字节;

nvarchar2:
    用于存储可变长度的字符串,一个空间占用2个字节,最大长度是 NCHAR 的两倍,
也就是4000个字节。

三:日期类型
Oracle日期类型主要使用 date 和 timestamp 数据类型。

date:
   用于存储日期和时间类型,date 类型的默认格式为:DD-MM-YYYY。

timestamp:
   时间戳类型,与 date相比较,timestamp类型具有小数位毫秒数,比 DATE 的精
度更高。

四:大数据类型与二进制类型

long:
 用于存储可变长度的超长字符串,最大长度为2G,通常用于存储备注字段,或者 
varchar2 和 nvarchar2 不够存储时。

lob:
lob又分为三个:
clob :是一种字符型大型对象(Character Large Object),最大长度为4G,
存储与字符集相关。

nclob:根据字符集而定的字符数据,最大长度为4G。

blog:是一种二进制大型对象(Binary Large Object),最大长度为4G,适用于
存储非文本的字节流数据,如:视频、音频等。

raw:固定长度的二进制数据,最大长度 2000个字节,可存储多媒体视频、音频格式等。

long raw:可变长度的二进制数据,最大长度2G,与 RAW 类似。

bfile:存储在数据库之外的二进制数据,最大长度4G。

rowid:
    行地址,十六进制串,表示行在所在的表中唯一的行地址,该数据类型主要用于返回
ROWID伪列,常用在可以将表中的每一条记录都加以唯一标识的场合。数据表中记录的
唯一行号,占10个字节。

nrowid:
    二进制数据表中记录的唯一行号,最大长度4000个字节。

  MySql中常用的数据类型:

1.mysql常用数据类型

(1)整型:

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_数据类型

 


(2)浮点型:

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_数据_02

 

 (3)定点数:

  浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 

  decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

(4)字符串

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_数据_03

 

 (5)二进制数据(_Blob)

1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。

2._BLOB存储的数据只能整体读出。 

3._TEXT可以指定字符集,_BLO不用指定字符集。

(6)日期时间类型

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_字符串_04

 

 (7)数据类型的属性

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_数据_05

2. MySQL中int类型有哪些?

整型字段类型包含 tinyintsmallintmediumintintbigint 五种,存储字节越小,占用空间越小。。

数据库字段类型是NVARCHAR2对应hive 数据库字段类型number(1,2)_字符串_06

 

  • 根据存储范围选择合适的类型,比如人的年龄用 unsigned tinyint(范围 0~255,人的寿命不会超过 255 岁);海龟就必须是smallint,但如果是太阳的年龄,就必须是int。
  • 若存储的数据为非负数值,建议使用 UNSIGNED 标识,可以扩大正数的存储范围。
  • 短数据使用 TINYINT 或 SMALLINT,比如:人类年龄,城市代码。
  • 存储状态变量的字段用 TINYINT ,比如:是否删除,0代表未删除 1代表已删除。
  • 主键列,无负数,建议使用 INT UNSIGNED 或者 BIGINT UNSIGNED;预估字段数字取值会超过 42 亿,使用 BIGINT 类型。 
CREATE TABLE  `tb_int` (
  `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `stu_age` tinyint unsigned NOT NULL COMMENT '学生年龄',
  `is_deleted` tinyint unsigned DEFAULT '0' COMMENT '0:未删除 1:删除',
  `col1` bigint NOT NULL COMMENT 'bigint字段',
  PRIMARY KEY (`increment_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='int测试表';