中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL SERVER數據類型是怎樣的

發布時間:2021-10-13 14:25:26 來源:億速云 閱讀:131 作者:柒染 欄目:數據庫

本篇文章給大家分享的是有關SQL SERVER數據類型是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1.SQL SERVER的數據類型
 
  數據類型是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的種類和名稱都或多或少有些不同。SQLServer 提供了 25 種數據類型:
 
  ·Binary [(n)]
 
  ·Varbinary [(n)]
 
  ·Char [(n)]
 
  ·Varchar[(n)]
 
  ·Nchar[(n)]
 
  ·Nvarchar[(n)]
 
  ·Datetime
 
  ·Smalldatetime
 
  ·Decimal[(p[,s])]
 
  ·Numeric[(p[,s])]
 
  ·Float[(n)]
 
  ·Real
 
  ·Int
 
  ·Smallint
 
  ·Tinyint
 
  ·Money
 
  ·Smallmoney
 
  ·Bit
 
  ·Cursor
 
  ·Sysname
 
  ·Timestamp
 
  ·Uniqueidentifier
 
  ·Text
 
  ·Image
 
  ·Ntext
 
  (1)二進制數據類型
 
  二進制數據包括 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 數據類型中。
 
  (2)字符數據類型
 
  字符數據的類型包括 Char,Varchar 和 Text
 
  字符數據是由任何字母、符號和數字任意組合而成的數據。
 
  Varchar 是變長字符數據,其長度不超過 8KB。Char 是定長字符數據,其長度最多為 8KB。超過 8KB 的ASCII 數據可以使用Text數據類型存儲。例如,因為 Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數據類型存儲在SQL Server 中。
 
  (3)Unicode 數據類型
 
  Unicode 數據類型包括 Nchar,Nvarchar 和Ntext
 
  在 Microsoft SQL Server 中,傳統的非 Unicode 數據類型允許使用由特定字符集定義的字符。在 SQL Server安裝過程中,允許選擇一種字符集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode 標準中,包括了以各種字符集定義的全部字符。使用Unicode數據類型,所戰勝的窨是使用非 Unicode 數據類型所占用的窨大小的兩倍。
 
  在 SQL Server 中,Unicode 數據以 Nchar、Nvarchar 和 Ntext 數據類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用Nvarchar 字符類型,這時最多可以存儲 4000 個字符。當列的長度固定不變時,應該使用 Nchar 字符類型,同樣,這時最多可以存儲4000 個字符。當使用 Ntext 數據類型時,該列可以存儲多于 4000 個字符。
 
  (4)日期和時間數據類型
 
  日期和時間數據類型包括 Datetime 和 Smalldatetime兩種類型
 
  日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個數據類型是日期在前,時間在后一個數據類型是霎時間在前,日期在后。在 Microsoft SQL Server中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲字節)。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節)。
 
  日期的格式可以設定。設置日期格式的命令如下:
 
  Set DateFormat {format | @format _var|
 
  其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。
 
  例如,當執行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
 
  (5)數字數據類型
 
  數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數
 
  整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Microsoft SQL Server 中,整數存儲的數據類型是 Int,Smallint和 Tinyint。Int 數據類型存儲數據的范圍大于 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大于Tinyint 數據類型存儲數據的范圍。使用 Int 數據類型存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個字節存儲空間)。使用Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個字節存儲空間)。
 
  精確小數數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。
 
  在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。
 
  (6)貨幣數據表示正的或者負的貨幣數量 。
 
  在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 Smallmoney
 
  Money數據類型要求 8 個存儲字節,Smallmoney 數據類型要求 4 個存儲字節。
 
  (7)特殊數據類型
 
  特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。
 
  Timestamp 用于表示SQL Server 活動的先后順序,以二進投影的格式表示。Timestamp 數據與插入數據或者日期和時間沒有關系。
 
  Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。
 
  Uniqueidentifier 由 16 字節的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。
 
  2.用戶定義的數據類型
 
  用戶定義的數據類型基于在 Microsoft SQL Server 中提供的數據類型。當幾個表中必須存儲同一種數據類型時,并且為保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱為 postal_code 的數據類型,它基于 Char 數據類型。
 
  當創建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基于的系統數據類型和數據類型的可空性。
 
  (1)創建用戶定義的數據類型
 
  創建用戶定義的數據類型可以使用 Transact-SQL 語句。系統存儲過程 sp_addtype 可以來創建用戶定義的數據類型。其語法形式如下:
 
  sp_addtype {type},[,system_data_bype][,'null_type']
 
  其中,type 是用戶定義的數據類型的名稱。system_data_type 是系統提供的數據類型,例如 Decimal、Int、Char 等等。 null_type 表示該數據類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
 
  例子:
 
  Use cust
 
  Exec sp_addtype ssn,'Varchar(11)','Not Null'
 
  創建一個用戶定義的數據類型 ssn,其基于的系統數據類型是變長為11 的字符,不允許空。
 
  例子:
 
  Use cust
 
  Exec sp_addtype birthday,datetime,'Null'
 
  創建一個用戶定義的數據類型 birthday,其基于的系統數據類型是 DateTime,允許空。
 
  例子:
 
  Use master
 
  Exec sp_addtype telephone,'varchar(24)','Not Null'
 
  Eexc sp_addtype fax,'varchar(24)','Null'
 
  創建兩個數據類型,即 telephone 和 fax
 
  (2)刪除用戶定義的數據類型[1]
 
  當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是 sp_droptype {'type'}。
 
  例子:
 
  Use master
 
  Exec sp_droptype 'ssn'
 
  注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規則時,這種用戶定義的數據類型不能刪除。
 
  3.varchar和nvarchar的區別
 
  varchar(n)
 
  長度為 n 個字節的可變長度且非 Unicode 的字符數據。n 必須是一個介于 1 和 8,000 之間的數值。存儲大小為輸入數據的字節的實際長度,而不是 n 個字節(如varchar(6),當字段為qqq時,實際占用空間為3個字節,而不是6個字節,但只允許存儲6個字節,一般中文占兩個字節)。
 
  nvarchar(n)
 
  包含 n 個字符的可變長度 Unicode 字符數據。n 的值必須介于 1 與 4,000 之間。字節的存儲大小是所輸入字符個數的兩倍。
 
  兩字段分別有字段值:“我和coffee”。那么varchar字段占2×2+6=10個字節的存儲空間,而nvarchar字段占8×2=16個字節的存儲空間。如字段值只是英文可選擇varchar,而字段值存在較多的雙字節(中文、韓文等)字符時用nvarchar。
 
  SQL Server中,varchar和nvarchar如何選擇?
 
  varchar在SQL Server中是采用單字節來存儲數據的,nvarchar是使用Unico來存儲數據的.中文字符存儲到SQL Server中會保存為兩個字節(一般采用Unico編碼),英文字符保存到數據庫中,如果字段的類型為varchar,則只會占用一個字節,而如果字段的類型為nvarchar,則會占用兩個字節.
 
  正常情況下,我們使用varchar也可以存儲中文字符,但是如果遇到操作系統是英文操作系統并且對中文字體的支持不全面時, 在SQL Server存儲中文字符為varchar就會出現亂碼(顯示為??).而且正常情況下,主機都會支持中文的環境,所以如果使用varchar來存儲數據,在開發階段是發現不了的.多數情況下,在布署的時候也不會有問題.
 
  但是!如果布署的主機是英文操作系統,并且不支持中文環境,那問題就出來了.所有的varchar字段在存儲中文的時候都會變成亂碼(顯示為??).而且一般情況下你不會知道這是因為你采用了錯誤的數據類型來存儲所造成的,你會試著去裝中文字體,試著去設置操作系統的語言環境...這些都不能解決問題,唯一能解決問題的是把數據庫字段的類型個性為nvarchar(或者nchar).對項目管理比較熟悉的朋友應該都知道,到布署階段再來修改數據庫是一個很恐怖的事情.
 
  使用nvarchar的另一個非常好處就是在判斷字符串的時候可以不需要考慮中英文兩種字符的差別.
 
  當然,使用nvarchar存儲英文字符會增大一倍的存儲空間.但是在存儲代價已經很低廉的情況下,優先考慮兼容性會給你帶來更多好處的.
 
  所以在Design的時候應該盡量使用nvarchar來存儲數據.只有在你確保該字段不會保存中文的時候,才采用varchar來存儲.
 
  1、CHAR。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間。 2、VARCHAR。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用于保存實際使用了多大的長度。
 
  從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。 3、TEXT。text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。
 
  4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。
 
  所以一般來說,如果含有中文字符,用nchar/nvarchar,如果純英文和數字,用char/varchar。

以上就是SQL SERVER數據類型是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 当雄县| 刚察县| 新民市| 墨玉县| 睢宁县| 丽江市| 镇安县| 延津县| 大足县| 嘉峪关市| 恩平市| 永丰县| 喀什市| 大足县| 禹州市| 黄冈市| 江都市| 苗栗市| 江西省| 洮南市| 呼玛县| 恩平市| 吴桥县| 丘北县| 沁水县| 姜堰市| 普兰县| 龙海市| 辽阳县| 漯河市| 离岛区| 尉氏县| 阜平县| 壤塘县| 封丘县| 顺平县| 岱山县| 普兰县| 新沂市| 黔江区|