SqlServer数据类型
SqlServer數據類型
? ? ? ? ? 數據類型的定義,這里就不再說了,具體百度百科里都有詳細的說明,數據類型的作用就是幫助我們處理各種各樣數據的。
? ? ? ? ??SqlServer定義了25中數據類型,每一種類型都有自己特定的用途,我們在使用的時候,就需要知道到底應該選擇使用哪一種數據類型,使用哪一種類型更好,如下圖:
? ? ? ? ??我們在設計每一個數據表的時候,都要考慮到其中每一個列數據類型的設計,這個是以后再設計數據庫的時候,要經常用到的,所以,有必要知道和掌握這些基礎的知識。
? ? ? ? ??這里簡單的分為了二進制類型、字符類型、Unicode類型、日期和時間類型、數字類型、貨幣類型、邏輯類型、文本和圖像類型,特殊類型等等,下面是詳細的說明:
? ? ? ? ??二進制類型:包括Binary、Varbinary和 Image
? ? ? ? ??Binary數據類型既可以是固定長度的(Binary),也可以是變長度的。常用來存放圖像等數據。
? ? ? ? ??Binary[(n)]是 n 位固定的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲容量的大小是 n + 4 個字節。常用來存放圖像等數據。
? ? ? ? ??Varbinary[(n)]是 n 位變長度的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲容量的大小是 n + 4個字節,不是n 個字節。
? ? ? ? ??Image用于存放照片,目錄圖片或圖畫。存儲的數據是以位字符串存儲的,不是由SQL SERVER 解釋的,必須由應用程序來解釋。例如,應用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image數據類型中。
? ? ? ? ??字符類型:包括Char,Varchar和 Text
?? ? ? ? ?Char 是定長字符數據,其長度最多為 8KB。超過 8KB 的ASCII 數據可以使用Text數據類型存儲。
? ? ? ? ??Varchar是變長字符數據,其長度不超過 8KB。
? ? ? ? ??區別:由于Char數據類型長度固定,因此它比Varchar類型的處理速度快。
? ? ? ? ??NTEXT數據類型與TEXT.類型相似,不同的是NTEXT 類型采用UNICODE 標準字符集(Character Set), 因此其理論容量為230-1(1, 073, 741, 823)個字節,Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text數據類型存儲在SQL SERVER 中。
? ? ? ? ??Unicode類型:包括Nchar,Nvarchar 和Ntext
? ? ? ? ??當列的長度固定不變時,應該使用 Nchar 字符類型,這時最多可以存儲4000 個字符。
? ? ? ? ??當列的長度變化時,應該使用Nvarchar 字符類型,同樣,這時最多可以存儲 4000 個字符。
? ? ? ? ??當使用Ntext數據類型時,該列可以存儲多于 4000 個字符。
? ? ? ? ??說明:在 Microsoft SQL SERVER 中,傳統的非 Unicode數據類型允許使用由特定字符集定義的字符。在 SQL SERVER安裝過程中,允許選擇一種字符集。
? ? ? ? ??使用Unicode數據類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode 標準中,包括了以各種字符集定義的全部字符。使用Unicode數據類型,所占用空間是使用非 Unicode數據類型所占用的空間大小的兩倍。
? ? ? ? ??日期和時間類型:包括Datetime 和 Smalldatetime兩種類型。
? ? ? ? ??Datetime所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲字節)。
? ? ? ? ??Smalldatetime所存儲的日期范圍是 1900年 1 月 1日開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節)。
? ? ? ? ??日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM8/17/98”。前一個數據類型是日期在前,時間在后,后一個數據類型是時間在前,日期在后。
? ? ? ? ??日期的格式可以設定。設置日期格式的命令如下:
? ? ? ? ??SetDateFormat {format | @format _var|
? ? ? ? ??其中,format| @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。
? ? ? ? ??例如,當執行 Set DateFormat YMD 之后,日期的格式為年月日 形式;當執行 SetDateFormat DMY 之后,日期的格式為日月年形式。
? ? ? ? ??數字類型:包括包括正數和負數、小數(浮點數)和整數。
? ? ? ? ??整數由正整數和負整數組成,在 Micrsoft SQL SERVER 中,整數存儲的數據類型是 Int,Smallint和 Tinyint。
? ? ? ? ??Int數據類型存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節存儲空間)。
? ? ? ? ??Smallint數據類型存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個字節存儲空間)。
? ? ? ? ??Tinyint數據類型存儲數據的范圍是從0 到255(每一個值要求1個字節存儲空間)。
? ? ? ? ??說明:Int數據類型存儲數據的范圍大于 Smallint數據類型存儲數據的范圍,而Smallint 據類型存儲數據的范圍大于Tinyint數據類型存儲數據的范圍。
? ? ? ? ??浮點數據類型用于存儲十進制小數。浮點數值的數據在SQL Server 中采用上舍入(Round up 或稱為只入不舍)方式進行存儲。
? ? ? ? ??所謂上舍入是指,當(且僅當)要舍入的數是一個非零數時,對其保留數字部分的最低有效位上的數值加1 ,并進行必要的進位。若一個數是上舍入數,其絕對值不會減少。如:對3.14159265358979分別進行2 位和12位舍入,結果為3.15 和3.141592653590。
? ? ? ? ??Real數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。每個Real類型的數據占用4 個字節的存儲空間。
? ? ? ? ??Float數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據占用8 個字節的存儲空間。
? ? ? ? ??Float數據類型可寫為Float[ n ]的形式。n 指定Float數據的精度。n 為1到15 之間的整數值。當n 取1 到7 時,實際上是定義了一個Real類型的數據,系統用4 個字節存儲它;當n 取8 到15 時,系統認為其是Float 類型,用8 個字節存儲它。
? ? ? ? ??Decimal數據類型可以提供小數所需要的實際存儲空間,但也有一定的限制,您可以用2 到17 個字節來存儲從-10的38次方-1 到10的38次方-1 之間的數值??蓪⑵鋵憺镈ecimal[ p [s] ]的形式,p 和s 確定了精確的比例和數位。其中p 表示可供存儲的值的總位數(不包括小數點),缺省值為18; s 表示小數點后的位數,缺省值為0。 例如:decimal (15, 5),表示共有15位數,其中整數10 位,小數5,總位數不包括小數點。
NUMERIC數據類型與DECIMAL數據類型完全相同。分為兩種,是為了保持與ANSI標準兼容。
? ? ? ? ??貨幣類型:包括Money 和 Smallmoney
? ? ? ? ??Money數據類型要求 8 個存儲字節,Smallmoney數據類型要求 4 個存儲字節。
? ? ? ? ??邏輯類型:只有一種bit型
? ? ? ? ??bit數據類型只占用1個字節的存儲空間,其值為0和1。只要輸入的值為非0,系統都會當作1處理。注意:bit型不能定義為null值。
? ? ? ? ??文本和圖形類型:包括text型、ntext型和image型
? ? ? ? ??文本和圖形數據類型是用于存儲大量的非Unicode和Unicode字符以及二進制數據的固定長度和可變長度數據類型。
? ? ? ? ??text型是用于存儲大量非Unicode文本數據的可變長度數據類型,其容量理論上為231-1(2 147 483647)個字節。
? ? ? ? ??ntext型是用于存儲大量Unicode文本數據的可變長度數據類型,其理論容量為230-1(1 073 741823)個字節。ntext型的其他用法與text型基本一樣。
? ? ? ? ??image型是用于存儲大量二進制數據的可變長度數據類型,其理論容量為231-1? (2 147 483 647)個字節。Image型數據的存儲模式與text型數據相同,通常用來存儲圖形等OLE對象。在輸入數據時,與輸入二進制數據一樣,必須在數據前加上起始符號“0X”作為二進制標識。
? ? ? ? ??特殊類型:
? ? ? ? ??Timestamp用于表示SQL SERVER 活動的先后順序,以二進制的格式存放。Timestamp 數據與插入數據或者日期和時間沒有關系。主要用于在數據表中記錄其數據的修改時間。它提供數據庫范圍內的唯一值,反映數據庫中數據修改的相對順序,相當于一個單調上升的計數器。當用該類型定義的列在更新或者插入數據行時,此列的值會自動更新,一個計數值將自動地添加到此數據列中。
? ? ? ? ??Uniqueidentifier稱做唯一標識符數據類型。它是SQL SERVER根據計算機網絡適配器地址和CPU時鐘產生的全局唯一標識符代碼(Globally Unique Identifier,簡寫為GUID),因此,該數據類型可以保證在全球范圍內不同的計算機所產生的標識符是唯一的。由 16 位的二進制數字組成。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。
? ? ? ? ??Cursor在實際應用中,應用程序有時只需要每次處理一條或一部分記錄。在這種情況下,就需要使用游標在服務器內部處理結果集。游標可視為一種特殊的指針,它不但可以定位在結果集的特定記錄上,還可以從結果集的當前位置查詢一條或多條記錄并對讀取到的數據進行處理。
? ? ? ? ??Sql_variant數據類型可以存儲除文本、圖形數據(TEXT、NTEXT、IMAGE)和TIMESTAMP類型數據外的其它任何合法的SQL Server數據。此數據類型大大方便了SQL Server的開發工作。
? ? ? ? ??table數據類型用于存儲對表或視圖處理后的結果集。這一新類型使得變量可以存儲一個表,從而使函數或過程返回查詢結果更加方便快捷。
? ? ? ? ??此外,還有用戶自定義數據類型,這里就不再具體的說明了,以上數據類型先了解了,等到用的時候,可以再根據具體的情況去查。
總結
以上是生活随笔為你收集整理的SqlServer数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重构之SqlHelper
- 下一篇: 重构简介