數據庫中char、nvarchar和varchar區別
char 爲固定長度字節
varchar[(n)]
長度爲 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介於 1 和 8,000 之間的數值。存儲大小爲輸入數據的字節的實際長度,而不是 n 個字節。所輸入的數據字符長度可以爲零。varchar 在 SQL-92 中的同義詞爲 char varying 或 character varying。
nvarchar(n)
包含 n 個字符的可變長度 Unicode 字符數據。n 的值必須介於 1 與 4,000 之間。字節的存儲大小是所輸入字符個數的兩倍。所輸入的數據字符長度可以爲零。nvarchar 在 SQL-92 中的同義詞爲 national char varying 和 national character varying。
n 表示字符個數
nvarchar:
不管是一個字符還是一個漢字,都存爲2個字節
varchar:
漢字是2個字節,其他字符存爲1個字節
通俗一點就是varchar適合輸入英文和數字,nvarchar一般用做中文或其它語言的輸入,這樣到別的語系不會出現亂碼:))
2.
N表示Unicode常量,可以解決多語言字符集之間的轉換問題,見聯機幫助
姓名,和房間通常都是用varchar這個數據類型
解釋一下:
drop proc a
varchar(n):變長型字符數據類型,存儲最長長度爲8,000 個字符。
舉個例子:
create table a (name1 varchar(8))
insert a select '張紅a'
--- 存儲長度爲5個字節,餘下的3個字節全部釋放
insert a select '王一南'
----存儲長度爲6個字節,餘下的2個字節全部釋放
---意思是varchar變長字符數據類型與存儲數據的實際長度是一致的
nvarchar(n):可變長度 Unicode 數據,其最大長度爲 4,000 字符。
字節的存儲大小是所輸入字符個數的兩倍,
就是說它是雙字節來存儲數據的。
如果存儲數據如果存在單字節時,它也是以雙字節來佔用存儲空間的。
舉個例子:
create table aa (name1 nvarchar(8))
insert aa select '張紅a'
---存儲長度爲6個字節,餘下的2個字節全部釋放