CREATE TABLE IF NOT EXISTS `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`country` varchar(5) NOT NULL,
`state` char(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
我尝试了以下查询来插入数据
INSERT INTO `test`.`test` (`id` ,`country` ,`state`)
VALUES (NULL , 'south-india', 'Gujarat');
当我执行上述查询时,它将显示以下警告
Warning: #1265 Data truncated for column 'country' at row 1
Warning: #1265 Data truncated for column 'state' at row 1
我发现Reference VARCHAR是可变长度的.CHAR是固定长度。
然后是什么意思
VARCHAR是可变长度的。
CHAR是固定长度。
答案 0 :(得分:2)
VARCHAR(5)将使用最多 5个字符的存储空间,而CHAR(5)将始终使用完全 5。
例如,对于持有某个人姓名的字段,您想要使用VARCHAR,因为虽然某些人的姓名通常很短,但您仍然希望应对很少有名字很长的人,而不必浪费大部分数据库行浪费的空间。
答案 1 :(得分:1)
正如你所说,varchar是可变长度的,而char是固定的。但主要区别在于它使用的字节。
实施例
列:用户名 类型:char(10)
如果你有关于列用户名的数据是' test',它将使用10个字节。它会有空间。
'测试______'
因此varchar列将仅使用您使用的字节。为了测试'它只会使用4个字节。你的数据将是
'测试'
感谢。
答案 2 :(得分:0)
如前所述,VARCHAR是可变长度的。 CHAR是固定长度。
当你说
时另一方面Varchar(5),如果您存储的数据长度为1,则为 其他人将使用剩余的4字节存储空间。例如:“t”
Char(5),如果您存储的数据长度为1,则剩余 不能使用4字节的存储空间。 4字节最终不会被使用 任何其他数据。例如:“t____”这里____是未使用的空间。