Mysql 总结 - 数据类型

Mysql的数据类型主要包括以下五大类:

整数类型:BIT、BOOL、TINYINT、SMALLINT、MEDIUMINT、 INT、 BIGINT

浮点数类型:FLOAT、DOUBLE、DECIMAL

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINYBLOB、BLOB、MEDIUM BLOB、LONG BLOB二进制

日期类型:Date、DateTime、TimeStamp、Time、Year

其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

A.数字类型

注意点  1.如果设置字段为unsigned,那么范围翻倍,如tinyint 的取值范围将会变成0~256

           2.整型设置的长度M,并不是指数据类型长度,而是现实长度 如 int(5)=1 则会显示00001,若大于99999,则前面不补0

           3.decimal一般用来表示货币,不存在浮点数计算四舍五入的问题 定义为unsignned后不会翻倍,只会砍掉负数部分 M默认10的取值范围1~65,D默认0为0~30且不超过m

           4.浮点类型的unsigned,同样不会扩大范围,浮点类型的取值范围M:1~155,D:0~30,

           5.bit类型存放位域值,M取值范围1~64默认1

           6.zerofill会填充除了bit以为的所有的数值为0,并把列转换为unsigned

MySQL数据类型              取值范围                存储空间            
tinyint(m)  范围(-128~127)1个字节
smallint(m)  范围(-32768~32767)2个字节
mediumint(m)  范围(-8388608~8388607)3个字节
int(m)  范围(-2147483648~2147483647)4个字节
bigint(m)  范围(+-9.22*10的18次方)           8个字节
float(m,d)  单精度浮点型    8位精度(4字节)     m总个数,d小数位4
double(m,d)  双精度浮点型    16位精度(8字节)    m总个数,d小数位8
decimal(m,d) (近义词:number、fixed)  由m,d决定每侧每9位占4个字节,剩下的占1~4个字节
bit(m)0~2的m次方-1        1≤m≤64(m+7)/8

B.字符串类型

MySQL数据类型                最大长度大小                        
binary(m)固定长度m字节
varbinary(m)可变长度l+1、l+2字节
char(m)固定长度,最多255个字符m*w符w表示字符集占用的字节数
varchar(m)可变长度,最多65535个字符l+1、l+2字节
tinyblob,tinytext2的8次方-1个字节l+1
blob,text2的16次方-1个字节l+2
mediumblob,mediumtext2的24次方-1个字节l+3
longblob,longtext2的32次方-1个字节l+4
enum('value1','value2')65535个成员1,2个字节
set('value1','value2')64个成员1,2,4,8个字节

注意点

1.非二进制串类型都可以指定字符集和排序(set,enum除外,实际上底层他们是用数字进行保存的),二进制串没有字符集和排序规则

2.char,binary都是固定长度的,分配的空间也是固定的,会给多余部分自动补全  char为空格,binary为0x00

3.char可以定义为char(0),此时值只能为null或者空字符串

4.varchar的最大可取值为65535,但是实际上可以存储的字符小于这个数,varchar需要两个字节存放长度,表里的其他列也会减少其长度

  如果varchar(m)与char(m)占用的空间大小不同,varchar需要额外的字节记录长度

5.blob指的是二进制大对象,最大支持4G

6.text族与blob族的最大长度都是一样的,因为他们都是以字节衡量最大长度,只有InnoDB,MyISAM支持这两个类型的索引,而且必须指定器追长度

7.enum,set实际是数值形式存储的,enum只能是单选,set支持多选,排序顺序为定义值的先后顺序    

选取具体类型主要参考点

a.值是需要二进制还是字符数九

b.比较操作是否需要区分大消息

c.对占用空间是否有要求

d.尾部填充需求   

C. 日期类型

MySQL数据类型                最大长度大小                        
date1000-01-01 ~ 9999-12-31    3个字节
time-838:59:59[.000000] ~ 838:59:59[.000000]3个字节+fsp存储要求
datetime1000-01-01 00:00:00[.000000] ~ 9999-12-31 23:59:59 [.000000]   5个字节+fsp存储要求
timestamp                    1970-01-01 00:00:01[.000000] ~ 2038-01-19 03:14:07[.000000]4个字节+fsp存储要求
year1901  ~ 2155                                                                                 1个字节

如果需要精确到小数秒 则使用类似 date(0~6)

时间类型拥有两种属性,1插入更新,2.随着update更新

转载于:https://my.oschina.net/u/3857854/blog/3032200

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值