广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL Server中的数据类型详解
  • 477
分享到

SQL Server中的数据类型详解

2024-04-02 19:04:59 477人浏览 安东尼
摘要

目录哪些对象需要数据类型一、 整数数据类型1、bit2、tinyint3、smallint4、int (integer)5、bigint二、 浮点数据类型1、real: 近似数值型2

T-SQL语言和SQLServer数据库中的数据通常需要定义一个数据类型,数据类型定义了对象可以容纳的数据的种类。

哪些对象需要数据类型

(1)、表和视图的列:
在定义表或视图时,其列需要定义数据类型。

(2)、存储过程的参数:
在定义存储过程的T-SQL代码中定义参数的数据类型。

(3)、变量:
如果在T-SQL中使用变量,需要定义数据类型。

(4)、带返回值的函数:
返回一个或多个特定类型数据值的T-SQL函数中的返回值需要定义数据类型。

(5)、带返回代码的存储过程:
具有返回代码的存储过程。

一、 整数数据类型

1、bit

bit数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off.   
注意:很省空间的一种数据类型,如果能够满足需求应该尽量多用。每个TINYINT类型的数据占用1个字节的存储空间。

  • bit值保存为1、0或NULL 的整数数据类型。1代表true,0代表false。
  • 在插入、修改 bit 数据时,使用 0 或 1。
    SQL Server将字符串值“TRUE”(字符串不分大小写,或者数字字符'1')转换为1,将“FALSE”(字符串不分大小写,或者数字字符'0')转换为0。将任何非零值转换为1。
  • C# 中读取数据库数据时,可以直接用bool型读取该字段,会直接转换为true/false。

2、tinyint

tinyint数据类型存储从0 到255 之间的所有正整数。每个tinyint类型的数据占用1个字节的存储空间。

3、smallint

smallint 数据类型存储从-2的15次方( -32768) 到2的15次方-1( 32767 )之间的所有正负整数。
每个smallint类型的数据占用2个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。

4、int (integer)

int (或 integer)数据类型存储从-2的31次方 (-2147483648) 到2的31次方-1 (2147483647) 之间的所有正负整数。
每个INT 类型的数据按4个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。

5、bigint

bigint数据类型存储从-2^63 (-9 223372036854775807) 到2^63-1( 9223372036854775807) 之间的所有正负整数。
每个BIGINT 类型的数据占用8个字节的存储空间。

二、 浮点数据类型

浮点数据类型用于存储十进制小数。浮点数值的数据在SQL Server 中采用上舍入(Round up 或称为只入不舍)方式进行存储。
所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1 ,并进行必要的进位。若一个数是上舍入数,其绝对值不会减少。
如:对3.14159265358979 分别进行2 位和12位舍入,结果为3.15 和3.141592653590。

1、real: 近似数值型

real数据类型可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。 每个real类型的数据占用4 个字节的存储空间。

2、float[(n)]:近似数值型

float数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。 每个FLOAT 类型的数据占用8 个字节的存储空间。 
float数据类型可写为FLOAT[ n ]的形式。n 指定float数据的精度。n 为1到15 之间的整数值。当n 取1 到7 时,实际上是定义了一个real类型的数据,系统用4 个字节存储它;
当n 取8 到15 时,系统认为其是float类型,用8 个字节存储它。

3、decimal[p [s] ]

decimal数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2 到17 个字节来存储从-10的38次方-1 到10的38次方-1 之间的数值。
可将其写为decimal[ p [s] ]的形式,p 和s 确定了精确的比例和数位。其中p 表示可供存储的值的总位数(不包括小数点),缺省值为18; s 表示小数点后的位数,缺省值为0。
例如:decimal (15 5),表示共有15 位数,其中整数10 位,小数5。  

4、numeric[p [s] ]

numeric数据类型与decimal 数据类型完全相同。
注意:SQL Server 为了和前端开发工具配合,其所支持的数据精度默认最大为28位。但可以通过使用命令来执行sqlserver.exe程序以启动SQL Server,可改变默认精度。

5、smallMoney货币型

smallMoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一。smallmoney 数据类型要求 4 个存储字节。

6、money货币型

money数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一。money数据类型要求 8 个存储字节。

三、字符数据类型

字符数据类型是使用最多的数据类型。它可以用来存储各种字母、数字符号、特殊符号。一般情况下,使用字符类型数据时须在其前后加上单引号’或双引号” 。

1、char[(n)]

char数据类型的定义形式为char[(n)] 。 以char类型存储的每个字符和符号占一个字节的存储空间。n 表示所有字符所占的存储空间,n 的取值为1 到8000, 
即可容纳8000 个ANSI 字符。若不指定n 值,则系统默认值为1。若输入数据的字符数小于n,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。

如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。

2、nchar[(n)]

nchar数据类型的定义形式为nchar[(n)]。 它与char类型相似。不同的是nchar数据类型n的取值为1 到4000。 因为nchar类型采用UNICODE 标准字符集(CharacterSet)。 
UNICODE 标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE 标准的数据类型多占用一倍的存储空间。使用UNICODE 标准的好处是因其使用两个字节做存储单位,
其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突。

3、varchar[(n| max )]

varchar数据类型的定义形式为varchar[(n| max )]。 它与char类型相似,n 的取值也为1 到8000,若输入的数据过长,将会截掉其超出部分。
不同的是,varchar数据类型具有变动长度的特性,因为varchar数据类型的存储长度为实际数值长度,若输入数据的字符数小于n ,则系统不会在其后添加空格来填满设定好的空间。
一般情况下,由于char数据类型长度固定,因此它比varchar类型的处理速度快。

4、nvarchar[(n| max )]

nvarchar数据类型的定义形式为nvarchar [ ( n | max ) ]它与varchar类型相似。不同的是,nvarchar数据类型采用UNICODE 标准字符集(Character Set), n 的取值为1 到4000。

5、text

text数据类型用于存储大量文本数据,其容量理论上为1 到2的31次方-1 (2147483647)个字节,在实际应用时需要视硬盘的存储空间而定。
SQL Server 中,将text和image 类型的数据直接存放到表的数据行中。

6 、ntext

ntext数据类型与text类型相似不同的,是ntext类型采用UNICODE 标准字符集(Character Set), 因此其理论容量为230-1(1073741823)个字节。

四、 日期和时间数据类型

日期和时间数据类型及函数 - SQL Server (Transact-SQL) | Microsoft 官方文档

1、datetime :日期和時間(1753-1-1 日到 9999-12-31)

datetime 数据类型用于存储日期和时间的结合体。它可以存储从公元1753 年1 月1 日零时起到公元9999 年12 月31 日23 时59 分59 秒之间。精确到三百分之一秒或3.33毫秒 

2、dateTime2 (n):高精度的datetime类型(0001-01-01 到 9999-12-31)

类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns),其使用语法为:datetime2(n)。
0001-01-01 00:00:00.0000000到9999-12-31 23:59:59:9999999,表示日期和时间

使用示例:

declare @dt as datetime2(5)
set @dt = getdate()
select @dt

3、smalldatetime  :精确到分钟,日期和時間。(1900-01-01 到 2079-06-06)不推荐。

smalldatetime 数据类型用来表示小范围间的日期和时间,精确到一分钟。

4、date:只表示日期:年-月-日(0001-01-01 到 9999-12-31)

按照年-月-日的格式表示日期

5、time:只表示时间:hh:mm:ss(00:00:00.0000000 到 23:59:59.9999999)

按照hh:mm:ss的格式精确表示时间

6、datetimeOffset:时间部分增加时区表示

加入了时区偏移量部分,时区偏移量表示为 [+|-] HH:MM。  必需的 + 或 - 符号指示在 UTC(通用协调时间或格林尼治标准时间)中是加上还是减去时区偏移量以获取本地时间。

00000-01-01 00:00:00.0000000到99999-12-31 23:59:59:9999999

使用示例:

declare @dt as datetimeoffset(8)
set @dt = '2008-08-08 08:08:08.0 +8:00'
select @dt

五、二进制数据类型

1、binary

binary 数据类型用于存储二进制数据。其定义形式为binary (n), n 表示数据的长度,取值为1 到8000 。
在使用时必须指定binary 类型数据的大小,至少应为1 个字节。BINARY 类型数据占用n+4 个字节的存储空间。
在输入数据时必须在数据前加上字符“0X” 作为二进制标识,如:要输入“abc ”则应输入“0xabc ”。
若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X ”后添加一个0,如上述的“0xabc ”会被系统自动变为“0x0abc”。

2、varbinary

varbinary 数据类型的定义形式为varbinary (n)。 它与binary 类型相似,n 的取值也为1 到8000,若输入的数据过长,将会截掉其超出部分。
不同的是varbinary 数据类型具有变动长度的特性,因为varbinary 数据类型的存储长度为实际数值长度+4个字节。当binary 数据类型允许NULL 值时,将被视为varbinary 数据类型。
一般情况下,由于BINARY 数据类型长度固定,因此它比varbinary  类型的处理速度快。

3、image

image 数据类型用于存储大量的二进制数据Binary Data。其理论容量为2的31次方-1(2147483647)个字节。其存储数据的模式与text数据类型相同。
通常用来存储图形等OLE Object Linking and Embedding对象连接和嵌入对象。在输入数据时同BINARY数据类型一样,必须在数据前加上字符“0X”作为二进制标识。应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 image 数据类型中。

六、特殊数据类型

1、 cursor:游标引用

cursor 数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用。

T-SQL游标

2、timestamp:时间戳

timestamp 数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。 一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。Timestamp 用于表示SQL Server 活动的先后顺序。尽管它的名字中有“time”, 但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的  。timestamp的数据类型为rowVersion数据类型的同义词。

3、uniqueIdentifier:全局唯一标识符,即GUID

uniqueIdentifier数据类型用来存储一个全局唯一标识符,即GUID。由 16 字节的十六进制数字组成。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列。

例如:6F9619FF-8B86-D011-B42D-00C04FC964FF,此号码可以通过newid()函数获得,在全世界各地的计算机由此函数产生的数字不会相同。

4、sql_variant:SQL变量

用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以方便Sql Server的开发工作。

5、table:表

用于存储对表或视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷。

6、xml

存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。

SQL Server XML类型

七、SQL Server 2008新增数据类型

hierarchid

新增的数据类型,用于创建层次结构的表,或引用位于另一位置的数据层次结构。

八、用户定义的数据类型

用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为postal_code 的数据类型,它基于 Char 数据类型。
当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。

图形化操作:【可编程性】-->【类型】节点,右击【用户定义数据类型】节点,在弹出的框中,按照说明相应操作即可。

(1)创建用户定义的数据类型

创建用户定义的数据类型可以使用 Transact-SQL 语句。系统存储过程 sp_addtype 可以来创建用户定义的数据类型。其语法形式如下:

sp_addtype {type},[,system_data_bype][,'null_type']

其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据类型,例如 Decimal、Int、Char   等等。 null_type 表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不允许空。

Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'

例子:创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允许空。

Use cust
Exec sp_addtype birthday,datetime,'Null'

例子:创建两个数据类型,即 telephone 和 fax

Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'

(2)删除用户定义的数据类型

当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是

sp_droptype {'type'}

例子:

Use master
Exec sp_droptype 'ssn'

注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。

九、参考:

SQL Server与CLR数据类型的对应关系

到此这篇关于SQL Server数据类型的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: SQL Server中的数据类型详解

本文链接: https://www.lsjlt.com/news/149364.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server中的数据类型详解
    目录哪些对象需要数据类型一、 整数数据类型1、bit2、tinyint3、smallint4、int (integer)5、bigint二、 浮点数据类型1、real: 近似数值型2...
    99+
    2022-11-13
  • SQL Server中的XML数据类型详解
    目录一、创建测试数据,指定字段数据类型为XML1、创建表2、插入测试数据3、插入XML文件数据4、创建索引二、查询XML数据1、query(XPath条件):返回xml 类型的节点内...
    99+
    2022-11-13
  • SQL数据类型详解
    一、数据类型简介 数据表由多列字段构成,每一个字段指定了不同的数据类型,指定了数据类型之后,也就决定了向字段插入的数据内容; 不同的数据类型也决定了 MySQL 在存储它们的时候使用的方式,以及在使用它...
    99+
    2022-10-18
  • SQL Server数据类型介绍
    简单整理几个常用的SQL server 数据类型的描述,以便查阅。 ...
    99+
    2022-10-18
  • SQL Server中的数据类型有哪些
    这篇文章主要介绍了SQL Server中的数据类型有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server中的数据类型有哪些文章都会有所收获,下面我们一起来看看吧。T-SQL...
    99+
    2023-06-30
  • SQL SERVER数据类型是怎样的
    本篇文章给大家分享的是有关SQL SERVER数据类型是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.SQL SERVER的数据...
    99+
    2022-10-18
  • SQL SERVER的数据类型有哪些
    本篇内容介绍了“SQL SERVER的数据类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.SQ...
    99+
    2022-10-18
  • Sql Server有哪些数据类型
    这篇文章将为大家详细讲解有关Sql Server有哪些数据类型,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Character 字符串:数据类型描述存储char(n)固定长度的字符串。...
    99+
    2023-06-29
  • SQL SERVER 数据类型有哪些
    SQL SERVER 数据类型有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据类型 类型 描 述 bit 整型 bit...
    99+
    2022-10-18
  • sql server属于哪个类型的数据模型
    这篇文章给大家分享的是有关sql server属于哪个类型的数据模型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql server属于什么类型的数据模型?SQL Server...
    99+
    2022-10-18
  • SQL Server中的XML数据类型实例分析
    本篇内容主要讲解“SQL Server中的XML数据类型实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的XML数据类型实例分析”吧!SQL Se...
    99+
    2023-06-30
  • sql server中的数据类型转换cast与convert
    注意点: CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。如: SELECT CAST("12.5" AS decimal) 结果是一个整数值:12 如果通过CAST()函数将这个值转换为decimal类型,需...
    99+
    2014-07-20
    sql server中的数据类型转换cast与convert
  • SQL Server中有哪些常见数据类型
    这篇文章给大家介绍SQL Server中有哪些常见数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、 整数数据类型整数数据类型是最常用的数据类型之一。1、INT (INTEGE...
    99+
    2022-10-18
  • SQL Server中如何实现T-SQL数据类型转换
    这篇文章主要为大家展示了“SQL Server中如何实现T-SQL数据类型转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL Server中如何实现T-S...
    99+
    2022-10-18
  • SQL的常用数据类型列表详解
    数据类型 描述 CHARACTER(n) 字符/字符串。固定长度 n。 VARCHA&...
    99+
    2022-10-18
  • SQL Server 中的数据类型隐式转换问题
    写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题。我们先构造测试数据,如下所示: CRE...
    99+
    2022-10-18
  • SQL SERVER中有哪些易混淆的数据类型
    本篇文章为大家展示了SQL SERVER中有哪些易混淆的数据类型,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。(1)char、varchar、text和nchar、...
    99+
    2022-10-18
  • SQL Server中怎么实现数据类型转换
    这篇文章将为大家详细讲解有关SQL Server中怎么实现数据类型转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 显式转换显示转换是将某种数据类型的表...
    99+
    2022-10-18
  • SQL Server 2008中有哪些分层数据类型
    这篇文章给大家介绍SQL Server 2008中有哪些分层数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  SQLServer2008原生的分层数据类型有哪些  假如是在SQ...
    99+
    2022-10-18
  • SQL Server数据库、表、数据类型基本概念
    一、SQL Server的数据存储结构 SQL Server是一个数据库管理系统,需要以有效方式存储高容量数据。要更好地理解SQL Server处理数据的方式,就需要了解数据的存储结构。 1、文件类型 数据...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作