【发布时间】:2014-08-30 05:08:22
【问题描述】:
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 是固定长度的。
【问题讨论】:
-
你是问变长和定长有什么区别吗?
-
是的,因为两个字段都返回相同的警告。那有什么区别呢。
-
它们在数据库中占用的空间不同。
-
VARCHAR is variable-length.并不意味着它会即时增加数据大小,如果长度设置为 100 并且您要添加长度为 60 字符的内容,则不会分配 40 的剩余空间,因此它节省空间。在 char 中,如果您说 char(10) 并添加一个 len 1 的 char,则将使用整个空间。 -
@bartdude - 还有最低要求!
标签: mysql