char和varchar有什么区别

时间:2014-07-09 08:51:01

标签: mysql

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是固定长度。

3 个答案:

答案 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____”这里____是未使用的空间。