MySQL学习系列三----数据类型

来源:互联网 发布:mac os最新版本下载 编辑:程序博客网 时间:2024/06/05 14:10

当我们创建表时,要声明列的类型。整理一下MySQL的三大基本类型:数值、字符串和日期类型。

数值数据类型

这里写图片描述

MySQL官方文档上的表格,显示了每种类型对应的数值范围和存储时所用的字节。

对于所有的数值类型来说,可以使用UNSIGNED和ZEROFILL修饰符。
如果省略UNSIGNED,则默认是SIGNED,也就是有符号,即可以存储负数,它们也会有不同的数值范围。浮点和定点类型也可以为UNSIGNED。同数类型,该属性防止负值保存到列中。然而,与整数类型不同的是,列值的上范围保持不变。

使用ZEROFILL时,默认补充的空格用零代替,例如:

id INT(4) ZEROFILL当id5时显示:0005

如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。

MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。当某一列是ZEROFILL时,才可以为该列考虑显示宽度。

注意:1 显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。2 请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。

BIT(width)
用来保存位字段值,存储二进制的数据(比如:由0和1组成),width为1到64,不指定宽带,默认为1。

TINYINT[width] [UNSIGNED] [ZEROFILL]
存储很小的整数值,有符号的范围为-128到127,无符号为0到255。如果没有指定width,默认为4。该列对简单的逻辑列十分有用,比如TINYINT(1)用在0或1这样的列中。

BOOL,BOOLEAN
是TINYINT(1)的同义词。zero值被视为假,非zero值视为真。也是只能存数字。

SMALLINT[width] [UNSIGNED] [ZEROFILL]
小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。width默认为6。

INT[(width)] [UNSIGNED] [ZEROFILL]
普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。width默认为11。

BIGINT[width] [UNSIGNED] [ZEROFILL]
大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。width默认为20。

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
小(单精度)浮点数。占4个字节。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。M是总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。M对于数值有限制,如:float(4,2)则最大到99.99

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
普通大小(双精度)浮点数。占8个字节。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到 1.7976931348623157E+308。这些是理论限制,基于IEEE标准。实际的范围根据硬件或操作系统的不同可能稍微小些。

M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。双精度浮点数精确到大约15位小数位。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
压缩的“严格”定点数。M是小数位数(精度)的总数,D是小数点(标度)后面的位数。小数点和(负数)的‘-’符号不包括在M中。如果D是0,则值没有小数点或分数部分。DECIMAL整数最大位数(M)为65。支持的十进制数的最大位数(D)是30。如果D被省略, 默认是0。如果M被省略, 默认是10。MySQL把DECIMAL存储为字符串。

字符串类型

CHAR(width) [BINARY| ASCII | UNICODE]
固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。width默认为1。若长度超过width,则会在右边截断。

VARCHAR(M) [BINARY]
变长字符串。M 表示最大列长度。M的范围是0到65,535
(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。这里的65535指的是字节,而不是字符。width默认为1。它会用额外的字节来存储自身的长度,如果列的长度大于或等于255,使用1个字节,否则就用两个字节。

TINYBLOB
最大长度为255(28–1)字节的BLOB列。允许存储二进制数据。

TINYTEXT
最大长度为255(28–1)字符的TEXT列。允许存储文本数据。

BLOB[(M)]
最大长度为65,535(216–1)字节的BLOB列。可以给出该类型的可选长度M。如果给出,则MySQL将列创建为最小的但足以容纳M字节长的值的BLOB类型。

TEXT[(M)]
最大长度为65,535(216–1)字符的TEXT列。可以给出可选长度M。则MySQL将列创建为最小的但足以容纳M字符长的值的TEXT类型。

日期和时间数据类型

表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

这里写图片描述

存储需求

这里写图片描述

0 0
原创粉丝点击