尚狐網絡解析MySQL數據類型CHAR(M), VARCHAR(M)區别
MYSQL使用最廣泛,裡(lǐ)面(miàn)的技巧知識也很多,今天尚狐網絡主編就(jiù)爲大家解析一下兩(liǎng)個類型的區别,char及varchar...
一、CHAR(M)
CHAR(M)定義的列的長(cháng)度爲固定的,M取值可以爲0~255之間,當保存CHAR值時(shí),在它們的右邊填充空格以達到指定的長(cháng)度。當檢索到CHAR值時(shí),尾部的空格被(bèi)删除掉。在存儲或檢索過(guò)程中不進(jìn)行大小寫轉換。
CHAR存儲定長(cháng)數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那麼(me)不論你存儲的數據是否達到了10個字節,都(dōu)要占去10個字節的空間,不足的自動用空格填充。
二、VARCHAR(M)
VARCHAR(M)定義的列的長(cháng)度爲可變長(cháng)字符串,M取值可以爲0~65535之間,(VARCHAR的最大有效長(cháng)度由最大行大小和使用的字符集确定。整體最大長(cháng)度是65,532字節)。
VARCHAR值保存時(shí)隻保存需要的字符數,另加一個字節來記錄長(cháng)度(如果列聲明的長(cháng)度超過(guò)255,則使用兩(liǎng)個字節)。
VARCHAR值保存時(shí)不進(jìn)行填充。當值保存和檢索時(shí)尾部的空格仍保留,符合标準SQL。varchar存儲變長(cháng)數據,但存儲效率沒(méi)有CHAR高。如果一個字段可能(néng)的值是不固定長(cháng)度的,我們隻知道(dào)它不可能(néng)超過(guò)10個字符,
把它定義爲 VARCHAR(10)是最合算的。VARCHAR類型的實際長(cháng)度是它的值的實際長(cháng)度+1。爲什麼(me)"+1"呢?這(zhè)一個字節用于保存實際使用了多大的長(cháng)度。從空間上考慮,用varchar合适;從效率上考慮,用char合适,關鍵是根據實際情況找到權衡點。
三、CHAR(M), VARCHAR(M)不同之處
CHAR和VARCHAR最大的不同就(jiù)是一個是固定長(cháng)度,一個是可變長(cháng)度。由于是可變長(cháng)度,因此實際存儲的時(shí)候是實際字符串再加上一個記錄字符串長(cháng)度的字節(如果超過(guò)255則需要兩(liǎng)個字節)。如果分配給CHAR或VARCHAR列的值超過(guò)列的最大長(cháng)度,則對(duì)值進(jìn)行裁剪以使其适合。如果被(bèi)裁掉的字符不是空格,則會(huì)産生一條警告。如果裁剪非空格字符,則會(huì)造成(chéng)錯誤(而不是警告)并通過(guò)使用嚴格SQL模式禁用值的插入。
下一篇:PHPExcel單元格換行踩坑
- 企業官網怎麼(me)就(jiù)成(chéng)了企業的擺設? (62202)
- 企業網站建設最常見誤區分析 (60390)
- 關于網站關鍵詞選擇的一些技巧 (60233)
- 論網站頁面(miàn)靜态化和僞靜态的區别 (58286)
- 熱烈祝賀香港保險網制作完成(chéng)并交付上線 (57764)