.net mysql查询数据类型_NET开发-详解SQL Server数据库数据类型,对应C#的那些数据类型?...

4341b5f5cf309145c011f6bee627df70.png

1.概述

在 SQL Server 中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。 数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。

由于SQL Server和C#都是微软的产品,都是在.NET体系下使用的,所以C#和SQL Server中的数据类型都是一一对应的。

不管是.NET Framework,还是.NET Core,SQL Server数据库都是最佳选择,数据类型完全一一对应,不需要额外的转换,且底层逻辑高度兼容。

2.SQL Server数据类型

2.1. 整数数据类型

SQL Server的整数数据类型分为:bit 、smallint 、int 、bigint。

1) Bit占1个字节的存储空间,只能用来存储1、0和NULL。对应于.NET FrameWork中的Boolean类型,对应C#中的bool类型。1与True对应,0与False对应。

Bit类型比较特殊,在SQL Server 2008中,使用SSMS可视工具给bit类型的列赋值时,需要输入True或False,而在查询数据时,则显示为1或0。而在使用SQL语句添加数据时,则需要使用1和0表示。

6943aad800232edfb635cece5f8712c6.png

2) Smallint占2个字节的存储空间:smallint类型只能用来存储整数,范围为-2^15 (-32,768) 到 2^15-1 (32,767)。

Smallint对应于C#中的short类型,也对应着.Net Framework的System.Int16结构。

643b6e0701cc39b51703ad334143f260.png

3) Int占4个字节的存储空间:int是最常用的整数类型,范围是-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)内的所有整数。

对应于C#中的int类型,也对应于.Net Framework的System.Int32结构。

eb1e760608b4aa74cc4c9b636679b785.png

4) Bigint占8个字节的存储空间:能存储更大的整数,范围为:-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)内的所有整数。

Bigint是长整型,占用存储空间最大,对应于.Net Framework的System.Int64结构。与C#中的long对应。

70986ed7ac2165f112663e330a44bf76.png

字节越大表示的整数范围越大,如果超过字节范围出会溢出。

2.2. 字符数据类型

SQL Server的字符数据类型分为:固定长度的字符串和可变长度的字符串。两者最多都是可以存储8000个字符,4000个汉字。

1) 固定长度的字符串:有char(n)和nchar(n),n表示指定的长度,能存储的最大字符数。char(3)表示最大可以存储3个字符,1个半汉字,1个汉字占2个字节。

如果char存储的实际字符数小于指定的n,则会在字符串后面使用空格补全,目的是将指定的长度占完。相反,如果char存储的实际字符数大于指定的n,则会将超出的字符删除掉。

char用来存储非Unicode字符,而nchar用来存储Unicode字符串。

Unicode标准字符集中,每个字符占2个字节,包括全世界所有语言的字符。

Nchar与char一样,如果输入的字符串不足指定的长度,则会在原字符串后面补充空格。Nchar最多能存储4000个字符。

86b009849771fb3f4ee1c107d954c939.png

a382f195159df9ee926ea8455d252f9e.png

2) 可变长度的字符串:有varchar(n)和nvarchar(n),n表示指定的长度,能存储的最大字符数。

存储的是可变的字符串,不足指定长度不会在后面补空格。每个字符也是占1个字节。例如:varchar(3),则表示最大只能存储3个字符,但如果实际存储了2个字符,那么就按实际大小存储,不会在原字符后面补空格。

Nvarchar用来存储可变长的Unicode字符串。Varchar存储非Unicode字符串。

6f5f057fd665e45bb0473471a7b11c51.png

b5ebfa42dd51f3f482c4cb49cfd4dbf4.png

另外,varchar(MAX)和nvarchar(MAX)表示可以存储最多的字符串。

2.3. 浮点数据类型

SQL Server的浮点型分为:float和real。其中float表示双精度浮点数据类型,real表示单精度浮点数据类型。

Real数据类型占用了4个字节的存储空间。Real是一种近似值类型。Real数据类型即可以存储整数,也可以存储小数。

近似数值数据类型并不存储为许多数字指定的精确值,它们只储存这些值的最近似值。

由于 float 和 real 数据类型的这种近似特性,因此当要求使用精确数值时,比如在财务应用程序、需要舍入的操作或等值核对中,请勿使用这些数据类型。而应使用 integer、decimal、money 或 smallmoney 数据类型。

在 WHERE 子句搜索条件(特别是 = 和 <> 运算符)中,应避免使用 float 列或 real 列。float 列和 real 列最好只限于 > 比较或 < 比较。

0cf3be23072e61ca515661e7140a1035.png

90423040b9473ba87fe7362e12dc2608.png

Float数据类型与real一样,都是用来表示近似值的,但float类型可以占4个或8个字节的存储空间。

2.4. 精确数据类型

SQL Server精确数据类型使用Decimal或Numeric表示,两者完全一样,建议使用Decimal类型。是一种可变的小数类型,带固定精度和小数位数,范围是:-1038+1~1038-1,默认精度为18位,最小精度是1位,最大精度是38位。

例如:decimal(5,3)表示整数部分和小数部分最大一共是5位,其中小数最大为3位,则整数位最大就是2位。

Decimal如果输入的小数位数超出指定的位数,则自动四舍五入。

e61b128de0e9f7b4db13885fb371e119.png

d973ae1935dd21807d58ec78baac9ca1.png

如果输入2位以上的整数部分就会出错。

9bc6d88b0f0c754d3d370deae5f680c4.png

如果输入的小数位数超出了指定的小数位数,则SQL Server会自动四舍五入。

004d820fd17c2f7daf039345c320b3a0.png

6a1e80d4df7e5592bd98a4d5059d7e06.png

2.5. 日期数据类型

SQL Server的日期型分为:datetime、date和time。

1) Datetime: Datetime数据类型用于存储日期和时间值。占8个字节的存储空间。范围是:1753年1月1日到9999年12月31日。

1805b7f98aa8828a4043135fa20d738f.png

15aa01e4f54794fb859047f792fbaea8.png

例如:2015-03-28 21:07:06.000

2) Date: Date数据类型用于存储日期数据,可以存储0001-01-01~9999-12-31之间的任意日期值,占3个字节的固定存储空间。

aedfde796029894cc055b8985fa4a00d.png

38820f0b4491f5c0954bc48458d33d5d.png

3) Time(n) :Time(n)数据类型用于存储时间值,定义一天中的某个时间。此时间不能感知时区且基于24小时制。使用24小时制表示。取值范围是:00:00:00.0000000到23:59:59.9999999之间的时间值。

b220001208880cd678e61fcffd9df7bd.png

ab9677b6f131bb14678a123ddc46887c.png

Time(n)默认占固定的5个字节的存储空间。n是 0 到 7 位数字,范围为 0 到 9999999,它表示秒的小数部分。

2.6. 货币数据类型

SQL Server货币数据类型使用money表示,money数据值有整数部分和小数部分组成,范围为:-263~263(-922,337,203,685,477.5808 到 922,337,203,685,477.5807)之间,占固定的8个字节存储空间。

ed706b4429106fb76d317bea30b3d927.png

ea33b4366ea118d67fcc78faa064148d.png

小数部分精确到4位。小数位数多于4位,则会自动四舍五入。

从以上SQL Server数据库的数据类型上看,与C#中的数据类型,还有.NET中的数据类型,都是完全兼容的,因为微软在设计之前,本身就要在C#中使用的,C#与SQL Server之间是通过ADO.NET通信的。所以其类型是完全兼容的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值