前言

前面幾篇文章我們講解了索引有關(guān)知識,這一節(jié)我們再繼續(xù)我們下面內(nèi)容講解,簡短的內(nèi)容,深入的理解。

數(shù)據(jù)類型

SQL Server支持兩種字符數(shù)據(jù)類型,一種是常規(guī),另外一種則是Unicode。常規(guī)數(shù)據(jù)類型包括CHAR和VARCHAR,Unicode數(shù)據(jù)類型包括NCAHR和NVARCHAR。常規(guī)字符的每個字符使用1個字節(jié)存儲,而Unicode數(shù)據(jù)的每個字符要求2個字節(jié)。常規(guī)字符列限制為僅僅只針對于英語,而Unicode則是針對于多種語言。兩種字符數(shù)據(jù)類型的文本表示方式也不相同,在表示常規(guī)字符文本時,只需要使用單引號,比如'Hello,my name is JeffckyWang,I'm from cnblogs',而對于Unicode字符文本時,需要指定字符N作為前綴,即N‘Hello,my name is JeffckyWang,I'm from cnblogs’。

名稱中沒有VAR元素的任何數(shù)據(jù)類型(CHAR、NCHAR)具有固定長度,即SQL Server按照列定義大小保留行空間,而不是按照字符中的實際字符保留空間。比如某列定義大小為CHAR(25),則SQL Server在該行保留25個字符的空間,而不管存儲字符串的長度。

名稱中含有VAR元素的數(shù)據(jù)類型(VARCHAR、NVARCHAR)具有可變長度,即SQL Server根據(jù)存儲需要,在行中使用盡可能多的存儲空間存儲字符串,同時外加兩個額外的字節(jié)偏移數(shù)據(jù)。例如,如果將某列定義為VARCHAR(25),此時支持的最大字符數(shù)為25,但實際上按照字符串中實際字符確定存儲量。-摘抄自SQL Server 2012 T-SQL基礎(chǔ)教程。

這里關(guān)于Unicode字符數(shù)據(jù)類型我們需要重點理解下。我們現(xiàn)在一個表,如下:

CREATE TABLE UnicodeType
(
 firstname VARCHAR(5) NOT NULL,
 lastname NVARCHAR(5) NOT NULL
);

此時我們手動插入數(shù)據(jù),正常插入,如下:

INSERT dbo.UnicodeType
        ( firstname, lastname )
VALUES  ( '11111', -- firstname - varchar(5)
          N'啊的發(fā)個好'  -- lastname - nvarchar(5)
          )

字符都完全插入表中,如下:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

此時我們將firstname,插入五個中文