六、数据类型介绍

介绍

常见数据类型

数值型
  • 整形

  • 小数

  • 定点数

  • 浮点数

字符型
  • 较短的文本

    • char
    • varchar
  • 较长的文本

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

数值型-整型

整数类型字节范围
Tinyint1有符号:-128127无符号:0255
Smallint2有符号:-3276832767无符号:065535
Mediumint3有符号:-83886088388607无符号:01677215
Int、Integer4有符号:-21474836482147483647无符号:04294967295
Bigint8有符号:-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)Mchar(M)最大的字符数,可省略,默认为 1固定长度的字符,较浪费空间。M为0~255之间的整数较高
varchar(M)Mvarchar(M)最大的字符数,长度不可省略可变长度的字符,较节约空间。M为0~65535之间的整数较低

除了char、varchar的文本类型:

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

Set类型所占字节表:

成员数字节数
1~81
9~162
17~243
25~324
33~648

较长的文本

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来存储文件本身,通常是使

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

日期型

日期和时间类型字节最小值最大值
date41000-01-019999-12-31
datetime81000-01-01 00:00:009999-12-31 23:59:59
timestamp4197001010800012038年的某个时刻
time3-838:59:59838:59:59
year119042155

datetime 和 timestamp的区别

  1. Timestamp支持的时间范围较小,取值范围 197001010800012038年的某个时刻,Datetime的取值范围:1000-01-019999-12-31
  2. timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区
  3. timestamp的属性受Mysql版本和SqlMode(Mysql的环境变量)的影响很大。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值