Mysql常用数据类型

Mysql常用数据类型

Mysql数据类型

MySQL数据类型,可以被分为3类:数值类型、日期和时间类型以及字符串(字符)类型
方括号(“[”和“]”)指出可选的类型修饰符的部分

M
指出最大的显示尺寸。最大的合法的显示尺寸是 255 。

D
适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。

UNSIGNED
为“无符号”的意思, 即为非负数。是MYSQL自定义的类型,非标准SQL。unsigned 属性只针对整型,用途:
1.UNSIGNED 可用来约束数据的范围,例如有些年龄这种值一般能是负数,那么就可以设置一个 UNSIGNED ,这样可以不允许负数插入。
2.可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便移植。

ZEROFILL
填零,即在数字长度不够的数据前面填充0,以达到设定的长度,MySQL中字段设置为该属性时,将为该列自动地增加UNSIGNED属性。

数值型

  • 整数常用类型
类型字节
tinyint1
smallint2
mediumint3
int4
bigint8

取值范围根据是否有符号,用二进制去计算即可,
例如:tinyint
有符号:-128~127 无符号:0 ~ 255

tinyint [(M)] [UNSIGNED] [ZEROFILL]
  • 浮点常用类型
类型字节
float4
double8
real8
decimal4
numeric4

字符型

  • 字符常用类型
类型字节
char (M)[BINARY]4
varchar (M)[BINARY]4
tinytextL+1个字节,其中L < 28-1 (255)
textL+2个字节,其中L < 216-1 (65535)
mediumtextL+3个字节,其中L < 224-1
longtextL+4个字节,其中L < 2^32-1

日期型

  • 日期常用类型
类型字节格式
YEAR1YYYY (年份值)
DATE3YYYY-MM-DD( 日期值)
TIME3HH:MM:SS
DATETIME8YYYY-MM-DD HH:MM:SS
TIMESTAMP8YYYYMMDD HHMMSS(时间戳)

常见问题

  • int(10) int (11)的区别

首先,()中的数字并不是字段的长度,
看看int的定义:int[(M)] [UNSIGNED] [ZEROFILL]
这个M,是指定整数值的显示宽度,最大有效显示宽度是 255,且显示宽度与存储大小或类型包含的值的范围无关。如果不写M默认是10,这样说可能还不够清楚,下面看下两个例子

建表

CREATE TABLE `test_int` (
  `test_int` int unsigned zerofill DEFAULT NULL,
  `test_int_fill` int(10) unsigned zerofill DEFAULT NULL,
  `test_int_fill2` int(11) unsigned zerofill DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入一条数据

INSERT INTO test_int (test_int,test_int_fill,test_int_fill2) VALUES(123456789,123456789,123456789);
SELECT * FROM test_int ;
test_inttest_int_filltest_int_fill
0123456789012345678900123456789

现在明白了吧,int(M)这个M只是填充的时候在前面补0,如果不设置zerofill ,int(10)并不会比int(11)取值范围短

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值