Mysql int(n),char(n),varchar(n),decimal中n的含义

 int(n),tinyint(n)n的含义

Tinyint(n):此处的n仅仅与显示有关,和底层存储实际占用空间大小无关

 tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符,但这里光设置m是没有意义,你还需要指定当数据少于长度m时用什么来填充,比如zerofill(表示有0填充)。设置tinyint(2) zerofill 你插入1时他会显示01。设置tinyint(4) zerofill 你插入1时他会显示0001。

tinyint占一个字节,有符号的范围是-128 - 127,无符号的范围是 从 0 到 255 的整型数据。int占4个字节。

int(n)中的n和tinyint(n)中n的含义完全一样。

char(N)与varchar(N)中n含义

char(N)和varchar(N)最大的区别在于存储需求空间上的区别上,前者为固定长度,存储需求为N字符长度,如果长度小于n,则用空格补齐,varchar为可变长度(“var”意为“variable”,可变的),存储需求为实际值的长度+1(如果N>255,则+2)。

中N,不管针对char还是varcahr均有最大字符长度不允许超过N的意思,超过部分则会被截掉不要。如将sql mode设置为TRADITIONAL模式,数据超过长度n是无法插入的,会在插入的时候报错

mysql> set @@sql_mode=TRADITIONAL;

char(N)的N取值范围为255。

mysql> create table t3 (c char(350),v varchar(5));

ERROR 1074 (42000): Column length too big for column 'c' (max = 255); use BLOB or TEXT instead

varchar(N)的N取值范围逻辑如下:

  4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个中文3字节)

   5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8中文(每个中文3字节),都可以存放50个

N取值范围为65535,超过了自动转换为text类型被强转成text类型

3、varchar(50)和varchar(100)是否一样?

硬盘存储需求一样,内存需求不一样。即对于VARCHAR数据类型来说,硬盘上的存储空间是根据实际字符长度来分配存储空间的,而对于内存来说,是使用N个字符空间的内存块来保存值,即varchar(50)占用50个字符内存空间,varchar(100)占用100个字符内存空间。

decimal

DECIMAL(P,D)表示列可以存储D位小数的P位数;即D是小数位数,P是总位数,整数位数=P-D

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值