『MySQL』数据类型
MySQL数据类型
数据类型用于以下目的:
数据类型允许限制可存储在列中的数据。例如,数值数据类型列只能接受数值。
数据类型允许在内部更有效的存储数据。
可以用一种比文本串更简洁的格式存储数值和日期时间值。
数据类型允许变换排序顺序。如果所有数据都作为串处理,则1位于10之前,而10又位于2之前(串以字典顺序排序,从左边开始比较,一次一个字符)。作为数值数据类型,数值才能正确排序。
串数据类型
- 最常用的数据类型是串数据类型。
- 有两种基本的串类型,分别为定长串和变长串。
- 定长串接受长度固定的字符串,其长度是在创建表时指定的。
- 变长串存储可变长度的文本。有些变长数据类型具有最大的定长,而有些则是完全变长的。
串数据类型 | 说明 |
---|---|
CHAR | 1 ~`255个字符的定长串。它的长度必须在创建时指定,否则MySQL假定为 CHAR(1)` |
ENUM | 接受最多64K 个串组成的一个预定义集合的某个串 |
LONGTEXT | 与TEXT 相同,但最大长度为4GB |
MEDIUMTEXT | 与TEXT 相同,但最大长度为16K |
SET | 接受最多64个串组成的一个预定义集合的零个或多个串 |
TEXT | 最大长度为64K 的变长文本 |
TINYTEXT | 与TEXT 相同,但最大长度为255 字节 |
VARCHAR | 长度可变,最多不超过255 字节。如果在创建时指定为VARCHAR(n) ,则可存储0到n个字符的变长串(n≤255 ) |
使用引号:不管使用何种形式的串数据类型,串值都必须括在引号内(通常单引号更好)。
当数值不是数值时:你可能认为电话号码和邮政编码应该存储在数值字段中(数值字段只存储数值数据),但是这样做却是不可取的。如果在数值字段中存储邮政编码01234,则保存的将是数值1234,实际上丢失了一位数字。
需要遵守的基本规则是:如果数值是计算(求和、平均等)中使用的数值,则应该存储在数值数据类型列中。如果作为字符串(可能只包含数字)使用,则应该保存在串数据类型中列。
数值数据类型
数值数据类型存储数值。
支持的取值范围越大,所需存储空间越多。
有符号或无符号:所有数值数据类型(除
BIT
和BOOLEAN
外)都可以有符号或无符号。有符号数值列可以存储正或负的数值,无符号数值列只能存储正数。默认情况为有符号,但如果你知道自己不需要存储负值,可以使用
UNSIGNED
关键字,这样做允许你存储两倍大小的值。
数值数据类型 | 说明 |
---|---|
BIT | 位字段,1 ~ 64 位。(在MySQL 5之前,BIT 在功能上等价于TINYINT ) |
BIGINT | 整数值,支持-9223372036854775808 ~ 9223372036854775807 (如果是UNSIGNED ,为0 ~ 18446744073709551615 )的数 |
BOOLEAN (或BOOL ) | 布尔标志,或者为0 或者为1 ,主要用于开/关(on / off )标志 |
DECIMAL (或DEC ) | 精度可变的浮点值 |
DOUBLE | 双精度浮点值 |
FLOAT | 单精度浮点值 |
INT (或INTEGER ) | 整数值,支持-2147483648 ~ 2147483647 (如果是UNSIGNED ,为0 ~ 4294967295 )的数 |
MEDIUMINT | 整数值,支持-8388608 ~ 8388607 (如果是UNSIGNED ,为0 ~ 16777215 )的数 |
REAL | 4 字节的浮点值 |
SMALLINT | 整数值,支持-32768 ~ 32767 (如果是UNSIGNED ,为0 ~ 65535 )的数 |
TINYINT | 整数值,支持-128 ~ 127 (如果是UNSIGNED ,为0 ~ 255 )的数 |
- 不使用引号:与串不一样,数值不应该括在引号内。
- 存储货币数据类型:MySQL中没有专门存储货币的数据类型,一般情况下使用
DECIMAL(8, 2)
。
日期和时间数据类型
- MySQL使用专门的数据类型来存储日期和时间值。
日期和时间数据类型 | 说明 |
---|---|
DATE | 表示1000-01-01 ~ 9999-12-31 的日期,格式为YYYY-MM-DD |
DATETIME | DATE 和TIME 的组合 |
TIMESTAMP | 功能和DATETIME 相同(但范围较小) |
TIME | 格式为HH:MM:SS |
YEAR | 用2 位数字表示,范围是70 (1970 年)~ 69 (2069 年);用4 位数字表示,范围是1901 年 ~ 2155 年 |
二进制数据类型
- 二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等。
二进制数据类型 | 说明 |
---|---|
BLOG | Blog最大长度为64KB |
MEDIUMBLOG | Blog最大长度为16MB |
LONGBLOG | Blog最大长度为4GB |
TINYBLOG | Blog最大长度为255字节 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KissSheep's Blog!
评论