char 和 varchar 的區別
char 和 varchar 的區別
固定長度 (char) 或可變長度 (varchar) 字符數據類型。
char[(n)]
長度為 n 個字節的固定長度且非 Unicode 的字符數據。n 必須是一個介于 1 和 8,000 之間的數值。存儲大小為 n 個字節。char 在 SQL-92 中的同義詞為 character。
varchar[(n)]
長度為 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介于 1 和 8,000 之間的數值。存儲大小為輸入數據的字節的實際長度,而不是 n 個字節。所輸入的數據字符長度可以為零。varchar 在 SQL-92 中的同義詞為 char varying 或 character varying。
注釋
如果沒有在數據定義或變量聲明語句中指定 n,則默認長度為 1。如果沒有使用 CAST 函數指定 n,則默認長度為 30。
將為使用 char 或 varchar 的對象被指派數據庫的默認排序規則,除非用 COLLATE 子句另外指派了特定的排序規則。該排序規則控制用于存儲字符數據的代碼頁。
支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數據類型以盡量減少字符轉換問題。如果使用 char 或 varchar:
如果希望列中的數據值大小接近一致,請使用 char。
如果希望列中的數據值大小顯著不同,請使用 varchar。
如果執行 CREATE TABLE 或 ALTER TABLE 時 SET ANSI_PADDING 為 OFF,則一個定義為 NULL 的 char 列將被作為 varchar 處理。
當排序規則代碼頁使用雙字節字符時,存儲大小仍然為 n 個字節。根據字符串的不同,n 個字節的存儲大小可能小于 n 個字符。
文章出處:DIY部落(http://www.diybl.com/course/7_databases/mysql/Mysqljs/2008531/118400.html)