MySql学习(四)-MySql的数据类型介绍

                                  MySql的数据类型介绍

一、整数类型

类型名称存储需求有符号范围无符号范围
TINYINT1字节-128~127(2的8次方/2)0~255
SMALLINT

  2字节

-32768~32767(2的16次方/2)0~65535
MEDIUMINT3字节-8388608~8388607(2的24次方/2)0~16777215
INT(INTEGER)4字节-2147483648~2147483647(2的32次方/2)0~4294967295
BIGINT8字节

-9223372036854775808~9223372036854775807

(2的64次方/2)

0~18446744073709551616

 

 

 

 

 

 

 

 

备注:在数据库中设计字段时的,如:year INT(4)表示的是该数据类型的显示宽度,显示宽度只是指明MySql最大可能显示的数字个数,当数值的位数小于指定的宽度时会由空格填充。特别注意:显示宽度与其存储的数据没有任何关系。

二、浮点类型和定点数类型

类型名称存储需求有符号范围无符号范围
FLOAT4字节浮点表示法和Ing类型不一样,后期单独补这一块 
DOUBLE

      8字节

  
DECIMAL(M,D)M+2个字节  

 

 

 

 

 

备注:

1、Float和Double在存储的过程中经常会出现精度丢失的情况,这个需要多加注意,同时如果小数位超过设定会进行四舍五入。

2、Decimal 这个类型,可以说是我们用到的最多的类型,因为他在数据库中是以字符串的形式存储的,精度是最高的(用于存储货币、科学数据),同时不会出现四舍五入的情况,如果超出的精度设置直接会被截断。

三、日期类型

类型名称存储需求日期范围
YEAR1字节1901~2155
TIME

               3字节

-838:59:59~838:59:59
DATE3字节1000-01-01~9999-12-3
DATETIME8字节1000-01-01 00:00:00~9999-12-31 59:59:59
TIMESTAMP4字节1970-01-01 00:00:01~2038-01-19 03:14:07 UTC

 

 

 

 

 

 

 

备注:

 1、DateTime和Timestamp在用法上基本相同,TimeStamp的存储范围有限制,其中UTC(世界标准时间)。

2、DateTime存储时按照实际输入格式存储,即输入什么就存储什么。TimeStamp存储的是UTC(世界标准时间)格式保存,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时根据当前时区的不同,显示的时间值是不同的。

3、当插入一条记录没有制定TimeStamp这个列的值的时候,会默认设置为当前时间。

4、TimeStamp在空间上比DateTime更高效(4字节:8字节)

 

四、文本字符串类型

类型名称存储需求备注
CHAR(M)M字节(1<M<255)固定长度
VARCHAR(M)

         L+1字         (L<M;1<M<65535)

可变长度(MySql5.0.3版本之前是255,5.0.3版本之后最大长度变成了65535)
TINYTEXT

L+1字节(L<2的8次方)

 
TEXTL+2字节(L<2的16次方) 
MEDINUMTEXTL+3字节(L<2的24次方) 
LONGTEXTL+4字节(L<2的32次方) 
ENUM1或2字节(最大65535) 
SET

1,2,3,4或8字节,取决于集合数量(最多64个成员)

 

 

 

 

 

 

 

 

 

 

 

备注:

1、char(M)为固定长度字符串,在保存时右侧填充空格以到达指定长度。M的范围是0~255

2、varchar(M)为可变长度字符串,M的长度为0~65535。

char是固定长度,所以处理char的速度比varchar要快,但是char比较浪费空间,同时存储引擎对于char和varchar也有影响。

  • MyIsam存储引擎,使用固定长度的char比varchar要好,可以使整个表静态化,检索数据更快,用控件换时间
  • InnoDB存储引擎,建议使用varchar,因为InnoDB数据表的存储格式不分固定长度和可变长度,所以使用char和varchar是一样,但是varchar是可变长度的,更加节省空间。所以对磁盘IO和存储数据总量较好

 

3、enum表示为枚举类型,最多可枚举65535个类型,在数据库存储的是其枚举值和每个值的索引。

4、set类型就是一个不重复的字符串对象,内容以逗号间隔。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值