创建数据库时,字段类型的选择,长度的确定参考(数据库表设计)

1.无符号数,有符号数,无符号char,有符号char的范围

计算机以二进制补码的存储数值,当一个具有符号位的数据值存储在计算机中的时候,计算机会以最高位为符号位,其余位取绝对值的二进制补码来存储。
有符号char的范围[-128,127],-128即-2^7
创建数据库时,字段类型的选择,长度的确定参考(数据库表设计)_第1张图片https://blog.csdn.net/sophia__yu/article/details/81143145 -----详细地址

2.宽度指示器

mysql以一个可选的现实宽度指示器的形式对SQL标准进行扩展(如INT(6),6即是其宽度指示器,该宽度指示器并不会影响int列存储字段的大小,也就是说,超过6位的部分不会自动截取,依然会存储,只有超过它本身的存储范围(4个字节)才会被截取;此处宽度指示器的作用在于该字段是否有zerofill,如果有就会在位满足6位的部分就会用0来填充),使用一个宽度指示器不会影响字段的大小和他可以存储的值得范围。
一个英文字符 占用一个字节(8位)
一个汉字若为gbk,每个字符最多占用2个字节(16位)
一个汉字若为utf8,每个字符最多占用3个字节(24位)

CHAR类型用于定长字符串,并且必须在圆括号内用一个代销修饰符来定义,这个大小修饰符的范围从0-255.比指定长度达的值将被截短,而比指定长度小的值将被用空格做填补。
CHAR类型的一个变体是VARCHAR类型,它是一种可变长的字符串类型,并且也必须有一个范围指示器; VARCHAR最大长度不能超过65536.;
创建数据库时,字段类型的选择,长度的确定参考(数据库表设计)_第2张图片

3.varchar指定的现实长度到底是字符还是字节

无论是char(n) 还是 varchar(n) n表示的都是字符数(这个和mysql版本有关系,往下看
https://blog.csdn.net/zyz511919766/article/details/51682407 (实验测试)

	4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 
	5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 
	剩下的类型,比如:int,char,bit,显示长度指的都是位数

https://segmentfault.com/a/1190000010012140   ----详情地址

4.Mysql 里CHAR和VARCHAR的最大长度及一些注意事项(参考)

https://blog.csdn.net/gulingeagle/article/details/17186581
https://www.cnblogs.com/donghang/p/9233801.html
https://blog.csdn.net/weixin_41588181/article/details/83929611

你可能感兴趣的:(Mysql)