MySQL中的列类型

  • 1.数值型
  • 2.字符串列类型
  • 3. enum:枚举类型,列可赋予某个枚举成员
  • 4. set:集合类型,列可赋予多个集合成员
  • 5.日期和时间列类型
  • 6.布尔bit
  • 总结:


1.数值型

数值列类型

类型名

说明

tinyint(小整型)

1B,非常小的整数,取值范围[-128,127]

smallint(微整型)

2B,较小的整数,取值范围[-32768,32767]

mediumint

3B,中等大小的整数,取值范围[-8388608,8388607]

int

4B,标准整数,取值范围 2147483647

bigint

8B,大整数,取值范围9223372036854775807

float

4B,单精度浮点数,取值范围3.4E+38

double

8B,双精度浮点数,取值范围1.79E+308

decimal/numeric(实际上是用字符串存放)

定点的浮点数,依赖于M和D值

create table t3(
   id bigint primary key auto_increment,   //对应java中的long/Long类型
   age int, //对应的java中的int/Integer类型
  salary decimal(总位宽,小数位数)//另外名称numeric,一般要求总位宽>=小数位数
);

Int和numeric

  • int类型不能保存小数位
  • numeric可以保存小数位。如numeric(4,2)则可以表示最大数据为:99.99。注意4是总位数,2是小数位数

2.字符串列类型

类型名

参数

说明

char

0-255

定长字符串,默认长度为1

varchar

0-65535

可变长字符串

tinyblob

0-255

不超过255个字符的二进制字符串

tinytext

0-255

短文本字符串

blob (大对象型)

0-65535

二进制形式的长文本数据

text(文本大对象型)

0-65535

长文本字符串

mediumblob

16M

二进制的中等长度文本数据

mediumtext

16M

中等长度文本数据

longblob

4G

二进制形式的极大文本数据

longtext

4G

极大文本数据

char与varchar的区别

  • char(n)定长字符串,当插入数据时,如果长度不足,自动添加空格凑够指定的长度
  • varchar(n)变长字符串,当插入数据长度不足时,实际有多少个字符则插入多少个字符,不会添加空格进行处理
  • 定长串支持快速定位,查询定位效率高;变长串节约空间,但是定位效率低

大对象类型

  • BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
  • 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求
  • TINYTEXT可变长度最多 255 个字符;TEXT可变长度最多 65535 个字符;MEDIUMTEXT可变长度最多 16M个字符;LONGTEXT可变长度,最多4G个字符

3. enum:枚举类型,列可赋予某个枚举成员

4. set:集合类型,列可赋予多个集合成员

5.日期和时间列类型

类型名

说明

date

1000-9999年,日期

3B,yyyy-MM-dd

time

-838到838小时,时间值或者持续时间

3B,HH:mm:ss

year

1901-2155年份值

1B,yyyy

datetime

1000-9999年,日期时间值

8B,yyyy-MM-dd HH:mm:ss

timestamp

1970-2038年,时间戳,精确到秒

4B,yyyyMMddhhmmss

6.布尔bit

bit 表示1个二进制的位
bit(8) 表示8个二进制的位

使用的boolean实际可以理解为bit的别名,实际上是tinyint类型

总结:

  • 定义数据类型就是定义列,数据类型决定数据的特性
  • 数据类型主要分为字符串类型,浮点书类型和定点数类型,日期类型以及二进制类型
  • 数据类型在不同的存储引擎上表现不同
  • 根据所采用的数据类型,需求和数据特性选择数据类型