CHAR(M)是固定長(zhǎng)度字符串,不指定長(zhǎng)度時(shí)默認(rèn)1,VARCHAR(M)是可變長(zhǎng)度字符串,定義該類型時(shí)必須指定長(zhǎng)度.當(dāng)VARCHAR(M)和CHAR(M)指定了相同長(zhǎng)度時(shí),輸入的字符長(zhǎng)度不一樣,二者所占空間也不一樣,可變長(zhǎng)度字符串會(huì)根據(jù)實(shí)際的字符串長(zhǎng)度調(diào)整所占空間,為固定長(zhǎng)度字符串類型,不論輸入的字符長(zhǎng)度是多少,都會(huì)占用最初設(shè)定長(zhǎng)度的空間
正確答案是:C:定義CHAR(M)時(shí),可以不指定長(zhǎng)度
分析:
A: 正確。CHAR(10)和VARCHAR(10)在存儲(chǔ)時(shí)的行為不同。CHAR(10)會(huì)固定分配10個(gè)字符的空間,剩余的空間用空格填充;而VARCHAR(10)只會(huì)分配實(shí)際存儲(chǔ)數(shù)據(jù)所需的空間,加上一個(gè)字節(jié)用于存儲(chǔ)長(zhǎng)度信息。因此,存儲(chǔ)相同的字符串時(shí),二者所占用的空間是不同的。
B: 正確。CHAR和VARCHAR都是用于存儲(chǔ)字符串的字符數(shù)據(jù)類型,但它們的存儲(chǔ)方式不同。CHAR是定長(zhǎng)的,而VARCHAR是變長(zhǎng)的。
C: 錯(cuò)誤。定義CHAR(M)時(shí),必須指定長(zhǎng)度M,因?yàn)镃HAR是定長(zhǎng)類型,需要知道固定的長(zhǎng)度是多少。
D: 錯(cuò)誤。定義VARCHAR(M)時(shí),必須指定最大長(zhǎng)度M,雖然VARCHAR是變長(zhǎng)的,但仍需要知道其最大可能長(zhǎng)度。
因此,選項(xiàng)C是錯(cuò)誤的。