【SQL基礎】T-SQL資料類型

來源:互聯網
上載者:User

      主要學習T-SQL的資料類型:數值型資料類型,字元型資料類型,臨時資料類型,混合型資料類型,附帶有VARDECIMAL的DECIMAL儲存類型。

     1、數值資料類型

       數值資料類型用於代表資料。具體看下錶:

資料類型

詳細說明

INTEGER

表示能夠用4個位元組儲存的整數值,範圍包括-2,147,483,648(-2~31)至2,147,483,647(2~31-1)。INT是INTEGER的縮寫形式。

SMALLINT

表示能夠用2個位元組儲存的整數值,範圍從-32768(-2~16)至32767(2~16- 1)。

TINYINT

表示能夠用1個位元組儲存的,零以上的整數值,範圍為0至255

BIGINT

表示能夠用8個位元組儲存的整數值。範圍為-2~63至2~63-1

DECIMAL(p,[s])

描述定點直。p(精確度)指定數字個數和假定的小數點s(刻度)數字。DECIMAL值可以用5-17個位元組儲存,由p值決定位元組個數。DEC為DECIMAL的縮寫。

NUMERIC(p,[s])

和DECIMAL相同。

REAL

適用於浮點值。包括正數值和負數值。正數值範圍大約為2.23E-308至1..79E+308,負數值為-1.18E-38至-1.18E+38。

FLOAT[(p)]

表示浮點值,如REAL。p定義精確度,即p<25表示單精確度(4個位元組),p >=25為雙倍精密度(8個位元組)。

MONEY

表示幣值。MONEY值和8位元組的DECIMAL值一樣。都是小數點後4個數字。

SMALLMONEY

和MONEY資料類型一樣,只是用4個位元組儲存。

 

      2、字元型資料類型

      字元型資料類型用兩種普通形式。它們可以是單位元組的字串,還可以使Unicode字串。此外,字串有固定或可變長度。具體看下錶:

資料類型

說明

CHAR[(n)]

表示單位元組,有固定長度的字元創,其中n為字串內的字元個數。n的最大值為8000。如果省略了n,那麼字串的長度就假定為1。

VARCHAR[(n)]

表示單位元組的字元可變長度的字串(0<n<=8000)。和CHAR資料類型相反,VARCHAR資料值能夠在它的實際長度中儲存。

NCHAR[(n)]

儲存固定長度的Unicode字元。CHAR和NCHAR資料類型之間最主要的區別為NCHAR資料類型的每個字元都可以用2個位元組儲存。而CHAR資料類型的每個字元只用1個位元組的儲存空間。因此,NCHAR列中字元的個數最多維4000。

NVARCHAR[(n)]

儲存具有可變長度的Unicode字串。VARCHAR和NVARCHAR資料類型之間的最主要區別為每個NVARCHAR字元都能用2個位元組儲存。而VARCHAR字元只用1個位元組的儲存空間。NVARCHAR列中的字元個數最多為4000。

 

      註:VARCHAR資料類型和CHAR資料類型基本一樣,只有一點不同,如果一個CHAR(n)字串比n個字元要短,那麼其餘的字串就會用空格來填充。VARCHAR資料類型經常用資料長度儲存。

 

      3、臨時資料類型

      T-SQL支援的臨時資料類型有:DATETIME、SMALLDATETIME、DATE、TIME、DATETIME2和DETETINEOFFSET。

      DATETIME和SMALLDATETIME資料類型指定日期和時間,每個值都為整數並分別用4個位元組或2個位元組儲存。 DATETIME和SMALLDATETIME的值是作為兩個單獨的數值儲存的。DATETIME日期值的範圍為01/01/1900至12/31/9999。SMALLDATETIME相應的值為01/01/1900至06/06/2079。時間部分能夠再用4個位元組或2個位元組儲存。它表示午夜過後的一秒的三百分之一(DATETIME)或分鐘(SMALLDATETIME)。

      如果只想儲存日期或時間部分,那麼使用DATETIME和SMALLDATETIME非常不方便。SQL SERVER 2008新增新的資料類型:DATE和TIME,這兩種資料類型只能分別儲存DATATIME資料的DATA或TIME部分。DATE資料類型用3個位元組的儲存並且範圍為01/01/0001至12/31/9999。TIME資料類型用3-5個位元組儲存,且精確到100ns。

     DATETIME2資料類型也是一種新的資料類型,用於儲存精度度很高的日期和時間資料。這種資料類型能夠根據要求定義可變長度。儲存大小為6-8個位元組。時間部分的精確度為100ns。

 

     4、混合型資料類型

     T-SQL的混合資料類型有:Binary,BIT,大對象資料類型,CURSOR,UNIQUEIDENTIFIER,SQL_VARTANT,TABLE,XML,Spatial,HIERARCHYID,TIMESTAMP和自訂資料類型。

     4.1 BINARY和BIT

     BINARY和VARBINARY資料類型是兩種二進位的資料類型。它們表示系統內部格式的資料對象。它們用來儲存位串,因此這些值都是十六進位的數字。

資料類型

詳細說明

BINARY[(n)]

指定有固定長度和n個位元組的位串(0<n<=8000)

VARBINARY[(n)]

指定一個為串的可變長度,最高值為n個位元組(0<n<=8000)

BIT

用於指定Boolean資料類型,它包含三個值:TRUE,FALSE和NULL。

 

      4.2 大對象資料類型

      大對象就是最大長度為2GB的資料對象。這些資料對象一般用來儲存大型的文本資料、載入模組和音頻/視頻檔案。T-SQL支援兩種不同的指定和訪問方式:使用VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)的資料類型;使用所謂的文本和映像資料類型。

      TEXT、NTEXT和IMAGE資料類型組成了所謂的文本/映像資料類型。IMAGE類型的資料對象包含所有的資料(下載模組、音頻/視頻),而TEXT和NTEXT資料類型的資料對象包含文本資料。

      文本/映像資料類型和資料庫的其他值區別儲存預設值,儲存方式為使用指向該資料欄位的B-樹型結構。而對於含有文本/映像資料類型的列來說,在資料行中儲存了16位元組的指標,指定能找到資料的地方。

      如果文本/映像資料小於32KB,指標就指向了B-樹型結構中的根部節點,該節點長度約為84位元組。根部節點指向資料的物理模組。如果資料總量大於32KB,Database Engine就會在資料模組和根部節點建立中間節點。由於每個表都包含一個以上的有這種資料的列,列中的所有值都儲存在一起。然而,一個物理頁面能只包含單個表中的文本/映像資料。

      文本/映像資料類型有很多局限性。不能把他們當作本地變數。它們也不能作為索引的一部分,不能用在WHERE、ORDER BY和GROUP BY的子句中。有些時候可以使用VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)來代替文本/映像資料類型。

      4.3  CURSOR   

      4.4  UNIQUEIDENTIFIER

      UNIQUEIDENTIFIER資料類型值是唯一辨別數字,它是用16個位元組儲存的二機制字串,和全球唯一識別碼密切相關,保證了在世界範圍內的唯一性。因此,通過運用資料類型,可以在分布式的電腦中識別資料和對象。使用NEWID和NEWSEQUUENTIALID函數可以進行列或UNIQUEIDENTIFIER類型的變數初始化,並且字串常量是用十六進位數字和連字號這種特殊格式書寫的。

      4.5  SQL_VARTANT

      SQL_VARIANT資料類型用於同時儲存各種資料類型,如數值、字串已經日期值等。只有TIMESTAMP類型值不能儲存。SQL_VARIANT列中的每個值都有兩個部分:日期值和描述值的資訊。這些資訊包含資料類型的所有屬性,如長度、範圍和精確度。

      4.6  TABLE

      4.7  XML

      4.8  Spatial

      4.9  HIERARCHYID

      UNIQUEIDENTIFIER資料類型用於儲存整個層面,它是作為CLR自訂資料安裝的,包括一些層級節點上的建立和操作的系統函數:GetAncestor(),GetDescendant(),Read()和Wriite().

      4.10 TIMESTAMP

      TIMESTAMP資料類型指定其中的一欄為VARBINARY(8)和BINARY(8),這是由列中的無效值決定的。系統包含每個資料庫的當前值(不是日期或時間),這樣在插入或更新含有TIMESTAMP列這樣的行就會自動增加。

      4.11 自訂資料類型

 

      5 附帶有VARDECIMAL的DECIMAL儲存類型

      Vardecimal 是一種儲存格式,而不是資料類型。

      vardecimal 儲存格式可以大大減少資料的儲存大小,但確實增加了少量 CPU 開銷。vardecimal 儲存格式應用於表層級。也就是說,不能只將表中的某些 decimal 列儲存為 vardecimal 儲存格式而不將其他列儲存為該格式。decimal 資料將保持為本身的資料類型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.