CHAR(M)是固定长度字符串,不指定长度时默认1,VARCHAR(M)是可变长度字符串,定义该类型时必须指定长度.当VARCHAR(M)和CHAR(M)指定了相同长度时,输入的字符长度不一样,二者所占空间也不一样,可变长度字符串会根据实际的字符串长度调整所占空间,为固定长度字符串类型,不论输入的字符长度是多少,都会占用最初设定长度的空间
正确答案是:C:定义CHAR(M)时,可以不指定长度
分析:
A: 正确。CHAR(10)和VARCHAR(10)在存储时的行为不同。CHAR(10)会固定分配10个字符的空间,剩余的空间用空格填充;而VARCHAR(10)只会分配实际存储数据所需的空间,加上一个字节用于存储长度信息。因此,存储相同的字符串时,二者所占用的空间是不同的。
B: 正确。CHAR和VARCHAR都是用于存储字符串的字符数据类型,但它们的存储方式不同。CHAR是定长的,而VARCHAR是变长的。
C: 错误。定义CHAR(M)时,必须指定长度M,因为CHAR是定长类型,需要知道固定的长度是多少。
D: 错误。定义VARCHAR(M)时,必须指定最大长度M,虽然VARCHAR是变长的,但仍需要知道其最大可能长度。
因此,选项C是错误的。