一. 数值类型

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 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。