建表的数据类型比如性别char(2),姓名varchar (20)里边的这个(2)和(20)是根据什么进行填写的?

比如这个姓名有十个,我就写varchar(10)吗,这个里边的(10)可以随便填吗,那个性别(2)是根据只有男女吗,还是都根据什么,什么字符长度,怎么根据

①char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。
②varchar[(n)]长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
③从定义可以看出char的话你插入超过n的就会被截断,语句终止,如果插入小于n的也会被截断,语句终止。如果插入小于n个字节,存储空间大小问实际插入的字节数。
④官方参考资料:
当指定了 NOT NULL 子句时,char 数据类型是固定长度数据类型。如果一个比列的长度小的值被插入到 char NOT NULL 列中,则值的右边以空格填补剩余的位置。例如,如果一个列被定义为 char(10) 并且要存储的数据是"music",则 SQL
Server 将这个数据存储为"music_____",这里"_"表示空格。
当创建一个 char NULL 列时,如果 ANSI_PADDING 是ON,它的表现就如同一个 char NOT
NULL列:值的右边按照列的大小进行填补。当创建一个 char NULL 列时,如果 ANSI_PADDING 是 OFF,它的表现就如同一个将
ANSI_PADDING 设置为 OFF 的 varchar 列:尾随空格将被截断。
varchar 是可变长度的数据类型。比列的长度小的值,不会按照列的长度在其右边填补。当创建列时,如果 ANSI_PADDING 选项设为 OFF,则所有存储在列中的字符值的尾随空格都将被截断。当创建列时,如果 ANSI_PADDING 设为 ON,则尾随空格不被截断。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
varchar(10)是十个字节,相当于5个汉字,20相当于10个汉字,性别只要varchar(2)就够用本回答被提问者采纳
第2个回答  2013-03-30
不是,数字表示字符的长度,varchar(10)表示姓名这个字段最多可以写10个字符的数据追问

有点抽象,那比如姓名有15个人,每个名字有的2个字,有的3个字,和这个字符长度有关吗,应该根据什么选择写多少长度

第3个回答  2013-03-30
字符长度,就是在英文的情况下,不要超过这个字符段长度,负责你插入数据的话,会报错。(SQL语句)