MS SQL数据类型比较

  1. 字符串数据类型

    char
    此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定;如未指定,默认为char(1)。每个字符占用1byte存储空间。
    nchar
    此数据类型可存储1~4000个定长Unicode字符串,字符串长度在创建时指定;如未指定,默认为nchar(1)。每个字符占用2bytes存储空间。
    varchar
    此数据类型可存储最大值为8000个字符的可变长字符串。可变长字符串的最大长度在创建时指定,如varchar(50),每个字符占用1byte存储空间。
    nvarchar
    此数据类型可存储最大值为4000个字符可变长Unicode字符串。可变长Unicode字符串的最大长度在创建时指定,如nvarchar(50),每个字符占用2bytes存储空间。
    text
    此数据类型可存储最大值为2147483647个字符的变长文本,并且无需指定其初始值,每个字符占用1byte存储空间,一般用来存储大段的文章。text数据类型实际上是一个Large Object数据类型,默认情况下,此类型的数据不是存储在数据行内,而是存储于独立的Large Object数据页上。另外,text数据类型不能做为函数、存储过程或触发器中的参数来用。
    ntext
    text数据类型,只不过存储的是最大值为1073741823个字符的Unicode变长文本,每个字符占用1byte存储空间。

    说明:无论使用哪种字符串数据类型,字符串值必须放在引号内,推荐使用单引号。

各字符类型区别:
CHARNCHAR 定长,速度快,占空间大,需处理
VARCHARNVARCHARTEXT 不定长,空间小,速度慢,无需处理
NCHARNVARCHARNTEXT处理Unicode

2. 数值数据类型

bit
此数据类型存储值为01的二进制字段。占用1byte存储空间。

tinyint
此数据类型存储0~255的整数,占用1byte存储空间。

smallint
此数据类型存储-32768~32767的整数,占用2bytes存储空间。

int
此数据类型存储-2147483648~2147483647的整数,占用4bytes存储空间。

bigint
此数据类型存储-9223372036854775808~9223372036854775807的整数,占用8bytes存储空间。

decimal/numeric
这两个数据类型功能相同,均为存储精度可变的浮点值。但推荐采用decimal,因其存储的数据“更有说明性”。此种数据类型由两个值来确定decimal(p,s)p为精度,s为标量,如decimal(3,2),其中数值2为小数的位数,那么decimal(3,2)可用来存储如1.28这样的浮点数。此种数据类型占用的存储空间取决于精度值pp1~9,占用5bytes存储空间;p10~19,占用9bytes存储空间;p20~28,占用13bytes存储空间;p29~38,占用17bytes存储空间。

float
此数据类型存储1~53的可变精度的浮点值,精度表示为float(n)n表示科学记数法的尾数,取值范围为-1.79E+308~-2.23E-308的负数和2.23E-308~1.79E+308的正数。其存储空间由精度值决定,n1~24,占用4bytes存储空间;n25~53,占用8bytes存储空间。

real
此数据类型存储-3.40E+38~-1.18E-38的负数和1.18E~3.40E+38的正数。占用4bytes存储空间。

smallmoney
此数据类型存储-214748.3648~214748.3647的货币值,精确到小数后4位。占用4bytes存储空间。

money
此数据类型存储-922337203685477.5808~922337203685477.5807的货币值,精确到小数后4位。占用8bytes存储空间。

3. 日期和时间数据类型

smalldatetime
此数据类型存储从190011日到207966日的日期。占用4btyes存储空间。

datetime
此数据类型存储从175311日到99991231日的日期。占用8bytes存储空间。

4. 二进制数据类型

binary
此数据类型存储1~8000个字符的二进制数据,其指定长度即为占用的存储空间。

varbinary
此数据类型存储可变长的二进制数据,可在创建时指定其具体长度,也可不指定。

5. 其它数据类型

rowversion/timestamp
这两种数据类型功能一样,但Microsoft建议在任何情况下尽可能地指明rowversion而不是timestamp,因为rowversion更加准确地反应了数据类型的真实性质。timestamp数据类型跟时间完全无关,它表明数据库中的数据修改发生的相对顺序。不要在键(尤其是主键)中使用timestamp列,因为每次修改行时,timestamp值都会更改。当指定数据类型为rowversiontimestamp,那么SQL Server会在对表的插入或删除等更新操作时自动生成一个新值,并把这个新值放在合适的字段里。此类型数据占用8bytes存储空间。

uniqueidentifier
此类型数据存储二进制值,其作用与全局唯一标识符(GUID)一样。GUID 主要用于在有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。占用16bytes存储空间。

SQLC#类型对照表

序号

类别

SQL

C#

备注

1

整数

bit

Boolean

True转换为1False转换为0

2

tinyint

Byte

C#数据类型都位于System命名空间

3

smallint

Int16

4

int

Int32

5

bigint

Int64

6

smallmoney

decimal

7

money

decimal

8

numeric

decimal

9

decimal

decimal

10

浮点数

float

double

11

real

single

12

日期和时间

smalldatetime

datetime

13

datetime

datetime

14

timestamp

datetime

15

字符串

char

string

16

text

string

17

varchar

string

18

nchar

string

19

ntext

string

20

nvarchar

string

21

二进制数据

binary

Byte[]

22

varbinary

Byte[]

23

image

Byte[]

24

其他

uniqueidentifier

guid

25

variant

object

原文地址:https://www.cnblogs.com/PeterFu/p/4484349.html