引言:在Mysql的学习中,我们需要定义变量,但是变量括号里的数字的具体作用,书上几乎没有提到,几经查询之下,有了下面这篇文章
数据库版本:5.7
1.例子
create table if not exists test(
id int(2),
`name` varchar(20),
sex char(1)
);
上述语句中,有三个字段,分别是id、name、sex,它们长度分别为2,20,1。
但是当我们执行以下插入语句时
insert into test values(11111,'张三','男女');
我们会发现:插入失败,“男女” 超出 sex 的字段长度,但是并没有说 “11111” 超出了 id 字段的长度。那么定义字段时,类型后面的数字的具体作用是什么?
2.解释
2.1字符型
字符型后面的数字表示 字符长度,简单来说,就是有多少个字。
例如:“好好学习”,这个四个字符。当然,“abcd”也是四个字符。
所以
`sex` char(1)则表示的是,sex字段只能输入一个字符。
例如:汉字“男”,或者英文字母“N”;
假若我们输入两个汉字,或者两个英文字母,则会报错。
同理可知:
`name` varchar(20)则表示的是,name字段只能输入二十个字符;
2.2数字型
而数字型后面的数字表示 位宽,简单来说就是一个数字算一位,但字段的长度跟它没什么关系,也并不影响使用。
例如:”9999“ 这个数是四位,”3“ 这个数是一位。
id int(2) 则表示,设置id的位宽为2。
不过,其真正无符号存储范围是0~42亿多。
int类型的单位是4字节,而一个字节是八位,那么就是32位。
二进制中,一个位 能用可以用 1 或者 0 填充,那么无符号的范围就是0~2^32。
因此,即使定义 id int(2) ,我们也可以把 ”567345627“ 存入到 id 字段中。
随便一提:这篇文章写得比我详细些,大家可以点进去看看