程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Sql Server數據類型詳細解析

Sql Server數據類型詳細解析

編輯:關於SqlServer
這是早期版本的sql server數據庫的數據類型。

數據類型是一種屬性,用於指定對象可保存的數據的類型,SQL Server中支持多種數據類型,包括字符類型、數值類型以及日期類型等。數據類型相當於一個容器,容器的大小決定了裝的東西的多少,將數據分為不同的類型可以節省磁盤空間和資源。

Sql Server 還能自動限制每個數據類型的取值范圍,例如定義了一個類型為int的字段,如果插入數據時插入的值的大小在smallint或者tinyint范圍之內, Sql Server 會自動將類型轉換為smallint 或者tinyint,這樣一來,在存儲數據時,占用的存儲空間只有int的1/2或則1/4.
Sql Server數據庫管理系統中的數據類型可以分為兩類,分別是:系統默認的數據類型和用戶自定義的數據類型。下面分別介紹這兩大類數據類型的內容.

一:系統數據類型
Sql Server 提供的系統數據類型有一下幾大類,共25種。 Sql Server會自動限制每個系統數據類型的取值范圍,當插入數據庫中的值 超過了數據允許的范圍時, Sql Server 就會報錯。

1.整數數據類型
整數數據類型是常用的數據類型之一,主要用於存儲數值,可以直接進行數據運算而不必使用函數轉換.
(1).bigint
每個bigint存儲在8個字節中,其中一個二進制位表示符號位,其它63個二進制位表示長度和大小,可以表示-263~263-1范圍內的所有整數。
(2).int
int或者integer,每個int存儲在4個字節中,其中一個二進制位表示符號位,其它31個二進制位表示長度和大小,,可以表示-231~231-1范圍內的所有整數。
(3).smallint
每個smallint類型的數據占用了兩個字節的存儲空間,其中一個二進制位表示整數值的正負號,其它15個二進制位表示長度和大小,,可以表示-215~215-1范圍內的所有整數。
(4).tinyint
每個tinyint類型的數據占用了一個字節的存儲空間,可以表示0~255范圍內的所有整數.
2.浮點數據類型
浮點數據類型存儲十進制小數,用於表示浮點數值數據的大致數值數據類型。浮點數據為近似值;浮點數值的數據則Sql Server中采用了只入不捨的方式進行存儲,即當且僅當要捨入的數是一個非零數時,對其保留數字部分的最低有效位上加1,並進行必要的近位。
(1).real
可以存儲正的或者負的十進制數值,它的存儲范圍從-3.40E+38~-1.18E-38、0以及1.18E-38~3.40E+38.每個real類型的數據占用4個字節的存儲空間。
(2)float[(n)]
其中為用於存儲float數值尾數的位數(以科學計數法表示),因此可以確定精度和存儲大小。如果指定了n它必須是介於1和53之間的某個值。n的默認值為53.
其范圍從-1.79E+308~-2.23E-308、0以及2.23E+308~1.79E-308。如果不指定數據類型float的長度,它占用8個字節的存儲空間。float數據類型可以寫成float(n)的形式,n為指定float數據的精度,n為1~53之間的整數值。當n取1~24時,實際上定義了一個real類型的數據,系統用4個自己存儲它。當n取25~53時,系統認為其是float類型,用8個字節存儲它。
(3).decimal[(p[,s])]和numeric[(p[,s])
帶固定精度和小數位數的數值數據類型。使用最大精度時,有效值從-10^38+1~10^38-1。numeric在功能上等價於decimal。
p(精度)指定了最多可以存儲十進制數字的總位數,包括小數點左邊和右邊的位數,該精度必須是從1到最大精度38之間的值,默認精度為18.
s(小數位數)指定小數點右邊可以存儲的十進制數字的最大位數,小數位數必須是從0到p之間的值,僅在指定精度後才可以指定小數的位數。默認小數位數是0;因此,0<=s<=p。最大存儲大小基於精度而變化。例如:decimal(10,5)表示共有10位數,其中整數5位,小數5位。

3.字符數據類型
字符數據類也是Sql Server中最常用的數據類型之一,用來存儲各種字符,數字符號和特殊符號。在使用字符數據類型時,需要在其前後加上英文單引號或者雙引號。
(1)char(n)
當用char數據類型存儲數據時,每個字符和符號占用一個字節存儲空間,n表示所有字符所占的存儲空間,n的取值為1~8000。如不指定n的值,系統默認n的值為1。若輸入數據的字符串長度小於n,則系統自動在其後添加空格來填滿設定好的空間;若輸入的數據過長,則會截掉其超出部分。
(2). varhcar(n|max)
n為存儲字符的最大長度,其取值范圍是1~8000,但可根據實際存儲的字符數改變存儲空間,max表示最大存儲大小是231-1個字節。存儲大小是輸入數據的實際長度加2個字節。所輸入數據的長度可以為0個字符。如varchcar(20),則對應的變量最多只能存儲20個字符,不夠20個字符的按實際存儲。
(3).nchar(n)
n個字符的固定長度Unicode字符數據。n值必須在1~4000之間(含),如果沒有數據定義的或變量聲明語句中指定n,默認長度為1。此數據類型采用Unicode字符集,因此每一個存儲單位占兩個字節,可將全世界文字囊括在內(當然除了部分生僻字)。
(4)nvarchar(n|max)
與varchar類似,存儲可變長度Unicode字符數據。n值必須在1~4000之間(含),如果沒有數據定義的或變量聲明語句中指定n,默認長度為1。max指最大存儲大小為231-1字節。存儲大小是輸入字符個數的兩倍+2個字節。所輸入的數據長度可以為0個字符.

4.日期和時間數據類型
(1).date
存儲用字符串表示的日期數據,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)間的任意日期值。數據格式為“YYYY-MM-DD”:
YYYY:表示年份的四位數字,范圍為0001~9999;
MM:表示指定年份中月份的兩位數字,范圍為01~12;
DD:表示指定月份中某一天的兩位數字,范圍為01~31(最高值取決於具體月份)
該數據類型占用3個字節的空間。
(2).time
以字符串形式記錄一天的某個時間,取值范圍為00:00:00.0000000~23:59:59.9999999,數據格式為“hh:mm:ss[.nnnnnnn]”:
hh:表示小時的兩位數字,范圍為0~23。
mm:表示分鐘的兩位數字,范圍為0~59。
ss:表示秒的兩位數字,范圍為0~59。
n*是0~7為數字,范圍為0~9999999,它表示秒的小部分.
time值在存儲時占用5個字節的空間。
(3).datetime
用於存儲時間和日期數據,從1753年1月1日到9999年12月31日,默認值為1900-01-01 00:00:00,當插入數據或在其它地方使用時,需用單引號或雙引號括起來。可以使用“/”、“-”和“.”作為分隔符。該類型數據占用8個字節的空間。
(4).datetime2
datetime的擴展類型,其數據范圍更大,默認的最小精度最高,並具有可選的用戶定義的精度。默認格式為:YYYY-MM-DD hh:mm:ss[.fractional seconds],日期的存取范圍是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).
(5).smalldatetime
smalldatetime類型與datetime類型相似,只是其存儲范圍是從1900年1月1日到2079年6月6日,當日期時間精度較小時,刻印使用smalldatetime,該類型數據占用4個字節的存儲空間。
(6).datetimeoffset
用於定義一個采用24小時制與日期相組合並可識別時區的時間。默認格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:
hh:兩位數,范圍是-14~14
mm:兩位數,范圍為00~59;
這裡hh是時區偏移量,該類型數據中保存的是世界標准時間(UTC)值,eg:要存儲北京時間2011年11月11日12點整,存儲時該值將是2011-11-11 12:00:00+08:00,因為北京處於東八區,比UTC早8個小時。存儲該數據類型數據時默認占用10個字節大小的固定存儲空間.

5.文本和圖形數據類型
(1).text
用於存儲文本數據,服務器代碼頁中長度可變的非Unicode數據,最大長度為231-1(2147 483 647)個字符。當服務器代碼頁使用雙字節字符時,存儲仍是2147 483 647字節。
(2)ntext
與text類型作用相同,為長度可變的非Unicode數據,最大長度為230-1(1073 741 283)個字符。存儲大小是所輸入字符個數的兩倍(以字節為單位).
(3).image
長度可變的二進制數據,范圍為:0~231-1個字節。用於存儲照片、目錄圖片或者圖畫,容量也是2147 483 647個字節,由系統根據數據的長度自動分配空間,存儲該字段的數據一般不能使用insert語句直接輸入。

6.貨幣數據類型
(1).money
用於存儲貨幣值,取值范圍為正負922 337 213 685 477.580 8之間。money數據類型中整數部分包含19個數字,小數部分包含4個數字,因此money數據類型的精度是19,存儲時占用8個字節的存儲空簡
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved