SQL數據類型詳解
(1)二進制數據類型
二進制數據包括 Binary、Varbinary 和 ImageBinary 數據類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節(jié)。
Varbinary[(n)] 是 n 位變長度的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節(jié),不是n 個字節(jié)。
在 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 中,傳統(tǒng)的非 Unicode 數據類型允許使用由特定字符集定義的字符。在 SQL Server安裝過程中,允許選擇一種字符集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode 標準中,包括了以各種字符集定義的全部字符。使用Unicode數據類型,所戰(zhàn)勝的窨是使用非 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 個存儲字節(jié))。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節(jié))。
日期的格式可以設定。設置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。
例如,當執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
(5)數字數據類型
數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是 Int,Smallint和 Tinyint。Int 數據類型存儲數據的范圍大于 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大于Tinyint 數據類型存儲數據的范圍。使用 Int 數據狗昔存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節(jié)存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間)。使用Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間)。
精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。
在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統(tǒng)中檢索到的數據可能與存儲在該列中數據不完全一樣。
(6)貨幣數據表示正的或者負的貨幣數量 。
在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 SmallmoneyMoney數據類型要求 8 個存儲字節(jié),Smallmoney 數據類型要求 4 個存儲字節(jié)。
(7)特殊數據類型
特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。Timestamp 用于表示SQL Server 活動的先后順序,以二進投影的格式表示。Timestamp 數據與插入數據或者日期和時間沒有關系。
Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。
Uniqueidentifier 由 16 字節(jié)的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區(qū)別不同的客戶。
2.用戶定義的數據類型
用戶定義的數據類型基于在 Microsoft SQL Server 中提供的數據類型。當幾個表中必須存儲同一種數據類型時,并且為保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱為 postal_code 的數據類型,它基于 Char 數據類型。當創(chuàng)建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基于的系統(tǒng)數據類型和數據類型的可空性。
(1)創(chuàng)建用戶定義的數據類型
創(chuàng)建用戶定義的數據類型可以使用 Transact-SQL 語句。系統(tǒng)存儲過程 sp_addtype 可以來創(chuàng)建用戶定義的數據類型。其語法形式如下:sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數據類型的名稱。system_data_type 是系統(tǒng)提供的數據類型,例如 Decimal、Int、Char 等等。 null_type 表示該數據類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
創(chuàng)建一個用戶定義的數據類型 ssn,其基于的系統(tǒng)數據類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創(chuàng)建一個用戶定義的數據類型 birthday,其基于的系統(tǒng)數據類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創(chuàng)建兩個數據類型,即 telephone 和 fax
(2)刪除用戶定義的數據類型
當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規(guī)則時,這種用戶定義的數據類型不能刪除。
SQL SERVER的字段類型說明
以下為SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。
| 字段類型 | 描述 |
| bit | 0或1的整型數字 |
| int | 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字 |
| smallint | 從-2^15(-32,768)到2^15(32,767)的整型數字 |
| tinyint | 從0到255的整型數字 |
| decimal | 從-10^38到10^38-1的定精度與有效位數的數字 |
| numeric | decimal的同義詞 |
| money | 從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數據,最小貨幣單位千分之十 |
| smallmoney | 從-214,748.3648到214,748.3647的貨幣數據,最小貨幣單位千分之十 |
| float | 從-1.79E+308到1.79E+308可變精度的數字 |
| real | 從-3.04E+38到3.04E+38可變精度的數字 |
| datetime | 從1753年1月1日到9999年12日31的日期和時間數據,最小時間單位為百分之三秒或3.33毫秒 |
| smalldatetime | 從1900年1月1日到2079年6月6日的日期和時間數據,最小時間單位為分鐘 |
| timestamp | 時間戳,一個數據庫寬度的唯一數字 |
| uniqueidentifier | 全球唯一標識符GUID |
| char | 定長非Unicode的字符型數據,最大長度為8000 |
| varchar | 變長非Unicode的字符型數據,最大長度為8000 |
| text | 變長非Unicode的字符型數據,最大長度為2^31-1(2G) |
| nchar | 定長Unicode的字符型數據,最大長度為8000 |
| nvarchar | 變長Unicode的字符型數據,最大長度為8000 |
| ntext | 變長Unicode的字符型數據,最大長度為2^31-1(2G) |
| binary | 定長二進制數據,最大長度為8000 |
| varbinary | 變長二進制數據,最大長度為8000 |
| image | 變長二進制數據,最大長度為2^31-1(2G) |
相關文章
MMC提示不能打開文件SQLServerEnterpriseManager.MSC的解決方法
MMC不能打開文件SQLServerEnterpriseManager.MSC的解決方法,主要是不能很方便的打開Microsoft SQL 企業(yè)管理器2010-05-05
SQL Server誤區(qū)30日談 第4天 DDL觸發(fā)器就是INSTEAD OF觸發(fā)器
DDL觸發(fā)器的實現原理其實就是一個AFTER觸發(fā)器。這個意思是先發(fā)生DDL操作,然后觸發(fā)器再捕捉操作(當然如果你在觸發(fā)器內寫了Rollback,則也可能回滾)2013-01-01
sql server把退款總金額拆分到盡量少的多個訂單中詳解
這篇文章主要給大家介紹了關于sql server把退款總金額拆分到盡量少的多個訂單中的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

