Oracle和MySQL的数据类型

Oracle的数据类型

ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。

字符类型

字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型 VARCHAR2/NVARCHAR2)两种。

CHAR 类型
CHAR 类型,定长字符串,会用空格填充来达到其最大长度。非NULL 的CHAR(12)总是包含12 字节信息。CHAR 字段最多可以存储2,000 字节的信息。如果创建表时,不 指定CHAR 长度,则默认为1。

VARCHAR2 类型
VARCHAR2 类型,可变长字符串,可以存储4,000 字节的信息。与CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多以存储4,000 字节的信息。

NVARCHAR2 类型
这是一个包含UNICODE 格式数据的变长字符串。NVARCHAR2 最多可以存储4,000字节的信息。

数字类型

NUMBER 类型
NUMBER(P,S)是最常见的数字类型。P 是Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38 个有效数字。S 是Scale 的英文缩写,表示小数点后的数字的位数。

INTEGER 类型
INTEGER 是NUMBER 的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

浮点数

BINARY_FLOAT 类型
BINARY_FLOAT 是32 位、单精度浮点数字数据类型。可以支持至少6 位精度,每个BINARY_FLOAT 的值需要5 个字节,包括长度字节。

BINARY_DOUBLE
BINARY_DOUBLE 是为64 位,双精度浮点数字数据类型。每个BINARY_DOUBLE的值需要9 个字节,包括长度字节。

日期类型

DATE 类型
DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle存储以下信息: 世纪、年、月、日期、小时、分钟和秒。一般占用7 个字节的存储空间。

TIMESTAMP 类型
这是一个7 字节或12 字节的定宽日期/时间数据类型。它与DATE 数据类型不同,因TIMESTAMP 可以包含小数秒,带小数秒的TIMESTAMP 在小数点右边最多可以保留9 位。

TIMESTAMP WITH TIME ZONE 类型
这是TIMESTAMP 类型的变种,它包含了时区偏移量的值。

TIMESTAMP WITH LOCAL TIME ZONE 类型
将时间数据以数据库时区进行规范化后进行存储

LOB 类型

CLOB 类型(Character Large Object)
二进制数据,存储单字节和多字节字符数据。最大长度4G。

BLOB 类型(Binary Large Object)
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一是图像、声音、视频等文件。最大长度4G。

NCLOB 数据类型
存储UNICODE 类型的数据,最大长度4G。

LONG & RAW & LONG RAW 类型

LONG 类型
它存储变长字符串(超长字符串),最多达2G 的字符数据(2GB 是指2 千兆字节, 而不是2 千兆字符)。

LONG RAW 类型
能存储2GB 的原始二进制数据,可存放多媒体图象声音等。

RAW 类型
用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字符集转换。可存放多媒体图象声音等。

MySQL的数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
在这里插入图片描述

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。TIMESTAMP类型有专有的自动更新特性,将在后面描述。
在这里插入图片描述

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
在这里插入图片描述
注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
注意:MySQL 5.0 以上的版本:1、一个汉字占多少长度与编码有关:UTF-8:一个汉字=3个字节,GBK:一个汉字=2个字节。2、varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别。3、MySQL 检查长度,可用 SQL 语言来查看:select LENGTH(fieldname) from tablename
注意:关于 char、varchar 与 text 平时没有太在意,一般来说,可能现在大家都是用 varchar。但是当要存储的内容比较大时,究竟是选择 varchar 还是 text 呢?这三种类型比较:(1)char: char 不用多说了,它是定长格式的,但是长度范围是 0~255. 当你想要储存一个长度不足 255 的字符时,Mysql 会用空格来填充剩下的字符。在读取数据时,MySQL会对char 类型的数据进行处理,使查询得到的char类型数据后面没有空格。(2)varchar: 关于 varchar,有的说最大长度是 255,也有的说是 65535,查阅很多资料后发现是这样的:varchar 类型在 5.0.3 以下的版本中的最大长度限制为 255,而在 5.0.3 及以上的版本中,varchar 数据类型的长度支持到了 65535,也就是说可以存放 65532 个字节(注意是字节而不是字符!!!)的数据(起始位和结束位占去了3个字节),也就是说,在 5.0.3 以下版本中需要使用固定的 TEXT 或 BLOB 格式存放的数据可以在高版本中使用可变长的 varchar 来存放,这样就能有效的减少数据库文件的大小。 (3)text: 与 char 和 varchar 不同的是,text 不可以有默认值,其最大长度是 2 的 16 次方-1。总结起来,有几点:(1)经常变化的字段用 varchar,(2)知道固定长度的用 char,(3)尽量用 varchar,(3)超过 255 字符的只能用 varchar 或者 text,(4)能用 varchar 的地方不用 text。

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值