一. 数值类型
Mysql支持所有标准SQL中的数值类型,其中包括
严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC);
近似值数据类型(FLOAT,REAL,DOUBLE PRESISION);
扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形;
并增加了BIT类型,用来存放位数据。
(一)INT 类型:
在
MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度(前边补充空格)。
例如,指定一个字段的类型为
需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。
万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。
UNSIGNED 修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。从而增大这个字段可以存储的值的范围。
ZEROFILL 修饰符规定 0(不是空格)可以用来填补输出的值。使用这个修饰符可以阻止
(二)FLOAT、DOUBLE 和 DECIMAL 类型
MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。
FLOAT和DOUBLE 也带有附加参数:一个显示宽度指示器和一个小数点指示器。比如语句
DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。
精度在这里指为这个值保存的有效数字的总个数,
而计数方法表示小数点后数字的位数。比如语句
忽略
UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。
二. 字符串类型
字符串类型字节大小
CHAR 0-255字节 定长字符串
VARCHAR 0-255字节 变长字符串
TINYBLOB 0-255字节 不超过
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65535字节 二进制形式的长文本数据
TEXT 0-65535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
VARBINARY(M) 允许长度0-M个字节的定长字节符串,值的长度+1个字节
BINARY(M) M 允许长度0-M个字节的定长字节符串
(一)CHAR 和 VARCHAR 类型
CHAR 用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。
CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。
CHAR 类型的一个变体是 VARCHAR 类型。它是一种可变长度的字符串类型,并且也必须带有一个范围在 0-255 之间的指示器。
CHAR和VARCHAR区别在于数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,长度不足的情况下就用空格补足。而 VARCHAR 类型把它视为最大值并且只存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)。所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。
因为
(二)TEXT 和 BLOB 类型
对于字段长度要求超过
三. 日期和时间类型
类型
DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
(一)DATE、TIME 和 YEAR 类型
MySQL 用 DATE 和 YEAR 类型存储简单的日期值,使用 TIME 存储时间值。这些类型可以描述为字符串或不带分隔符的整数序列.
如果描述为字符串,DATE 类型的值应使用(-)作为分隔符分开,而
MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 YEAR 类型输入的两个数字进行最大限度的通译。因为所有 YEAR 类型的值必须用 4个数字存储。
MySQL 试图将 2 个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。
如果
(二)DATETIME 和 TIMESTAMP 类型
MySQL 还支持 DATETIME 和 TIMESTAMP 这两种混合类型。
这两种类型通常用于自动存储包含当前日期和时间的时间戳.
如果我们对
四. 复合类型
MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。