六、数据类型介绍

介绍

常见数据类型

数值型

  • 整形

  • 小数

  • 定点数

  • 浮点数

字符型

  • 较短的文本

    • char
    • varchar
  • 较长的文本

    • text
    • blob(较长的二进制数据)

日期型

数值型-整型

整数类型 字节 范围
Tinyint 1 有符号:-128127无符号:0255
Smallint 2 有符号:-3276832767无符号:065535
Mediumint 3 有符号:-83886088388607无符号:01677215
Int、Integer 4 有符号:-21474836482147483647无符号:04294967295
Bigint 8 有符号:-92233720368547758089223372036854775807无符号:018446744073709551615

特点

  1. 如果不设置长度,会有默认长度,长度代表了显示的最大宽度,如果不够用0在左边填充,但必须搭配 zerofill 使用,只用了 zerofill ,默认会修改为无符号
  2. 如果插入的数值超出了整型的范围,会报 out of range异常,并插入临界值
  3. 不设置无符号或有符号,默认是有符号,设置无符号关键字:unsigned

术语解释

整型中的长度代表的是插入数据的宽度,而不是通俗理解的数据位数的限制。

举例:

​ create table demo(id int(2)); 这里的 id 的长度为2,意思不是id最大到 99 ,而是 id

的宽度 为 2,满足正常显示,不满足2为会在前面补“0”,为了体现这一效果,必须加

zerofill 关键字,如:create table demo(id int(2) zerofill); 注意,加了此关键字,默认该

字段就改为无符号的。

操作如图:
在这里插入图片描述
如不加 zerofill 关键字:
在这里插入图片描述

数值型-小数

浮点数 字节 范围
float(M, D) 4 ±1.75494351E-38~±3.402823466E+38
double(M, D) 8 ±2.2250738585072014E-308~±1.7976931348623157E+308
定点数 字节 范围
DEC(M, D)DECIMAL(M, D) M+2 最大取值范围与 double 相同,给定 decimal 的有效取值范围由 M 和 D 决定

特点

  1. M:代表的整数部位+小数部位。D:代表的是小数部位,如果超过范围,则插入临界值
  2. M和D都可以省略,如果类型是 decimal ,则 M 默认是10,D默认是0,如果是 float 或 double,则会根据插入的数值的精度,来决定精度
  3. 定点型的精度度较高,如果要求插入的数值的精度较高(如:货币运算等)则考虑使用

浮点型

1、float

2、double

3、decimal

字符型

较短的文本

字符串类型 最多字符数 写法 M的意思 特点 描述及存储需求 效率
char(M) M char(M) 最大的字符数,可省略,默认为 1 固定长度的字符,较浪费空间。 M为0~255之间的整数 较高
varchar(M) M varchar(M) 最大的字符数,长度不可省略 可变长度的字符,较节约空间。 M为0~65535之间的整数 较低

除了char、varchar的文本类型:

  1. binary、varbinary类型,类似于char和varchar,不同的是它们包含二进制字符串而不包含非二进制字符串。
  2. Enum类型,又称为枚举类型,要求插入的值必须是列表中指定的值之一。
  3. Set类型,和Enum类型类似,里面可以保存0~64个成员。和 Enum 类型最大的区别是:Set类型一次可以选取多个成员,而 Enum 只能选一个根据成员个数不同,存储所占字节也不同

Set类型所占字节表:

成员数 字节数
1~8 1
9~16 2
17~24 3
25~32 4
33~64 8

较长的文本

1、text

系统中提供的四种text:

  1. Tinytext:系统使用一个字节来保存,实际能够存储的数据为:2 ^ 8 + 1
  2. Text:使用两个字节保存,实际存储为:2 ^ 16 + 2
  3. Mediumtext:使用三个字节保存,实际存储为:2 ^ 24 + 3
  4. Longtext:使用四个字节保存,实际存储为:2 ^ 32 + 4

2、blob(保存较大的二进制)

存储二进制文本(图片,文件),一般都不会使用blob来存储文件本身,通常是使

用一个链接来指向对应的文件本身。

日期型

日期和时间类型 字节 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 19700101080001 2038年的某个时刻
time 3 -838:59:59 838:59:59
year 1 1904 2155

datetime 和 timestamp的区别

  1. Timestamp支持的时间范围较小,取值范围 197001010800012038年的某个时刻,Datetime的取值范围:1000-01-019999-12-31
  2. timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
  3. timestamp的属性受Mysql版本和SqlMode(Mysql的环境变量)的影响很大。
posted @ 2019-09-03 00:57  achnly  阅读(436)  评论(0编辑  收藏  举报