🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
SQL Server 2000 中的数据类型介绍
为什么会有数据类型
数据库
是一个庞大的数据载体,那么必然就会存储很多各式各样的数据, 那么这些数据也必然有着各式各样的类型对吧!
所以就衍生出了很多符合场景的数据类型, 让我们来指定!
前面我也说过, 数据类型选择也很重要, 不能乱选,要根据实际的情况和对应的数据进行选择
数据类型存在的意义
数据类型存在的意义主要有以下几种原因:
1.为了数据存储的需要
区分数据种类
数据类型用于区分不同类型的数据,比如: 文本、数字、日期
等, 每种数据类型都有其特定的存储方式
和格式
,这有助于数据库系统
本身能够更有效地存储
和检索
数据。
优化存储空间
不同的数据类型占用的存储空间是不一样的
比如说: 整数类型int
通常比浮点数float
占用更少的空间,而字符类型varchar
的长度可以根据实际需要动态调整,从而避免不必要的空间浪费, 具体我们后面再说!
2.数据操作性和准确性
确保数据精度
对于我们在实际开发当中需要精确计算的数据, 比如: 价格、货币、科学计算
中的浮点数等等,使用适当的数据类型
可以确保数据的准确性
和精度
。
比如说: 使用DECIMAL
或NUMERIC
类型可以存储具有固定精度
和小数位数
的数值,避免浮点数计算中可能出现的舍入误差!
支持特定操作
不同的数据类型
支持不同的操作!
比如,日期
和时间类型
支持日期
和时间
的加减、格式化
等操作,而字符串类型varchar
则支持字符串
连接、搜索等操作, 这些细微的数据类型调整都可以在实际开发中起到重要作用!
3.数据一致性和安全性
数据一致性
数据类型
还可以确保数据的一致性
!
比如说: 在数据库
中定义某个字段
为整数类型
之后,这个字段就只能存储整数
,而无法插入非整数类型
的数据信息,从而保证了数据的准确性
和一致性
数据安全性
数据类型
还可以在一定程度上提高数据的安全性
, 例如通过限制数据类型
和长度
,我们可以防止恶意用户插入过大
或不符合规范
的数据信息到数据库中,从而保护数据库系统
的稳定性
和安全性
4.方便项目开发和数据库设计
方便实际编程开发
在实际开发过程中,使用数据类型
可以简化代码编写
, 为什么呢? 因为开发者可以根据数据类型
选择适当的函数
和方法
来处理相应的数据,而无需担心数据类型
不匹配的问题!
优化数据库设计
合理的选择数据类型
也是可以优化数据库
的结构
和性能
的,
举个栗子, 比如对于不需要存储大量文本数据的字段,可以选择使用较小的字符类型
来减少存储空间, 这在一定程度上也算是小小的优化了一下!
那么接下来我们就来看看在SQL Server 2000
中我们会常用到哪些数据类型!
SQL Server 常见数据类型
我们常见的数据类型主要分为以下几种类型:整数数据类型、浮点数据类型、日期和时间数据类型、字符串数据类型、二进制数据类型
, 这些类型我们会根据使用场景的不同,而对应选择!
Number整数数据类型
Number数据类型
在数据库系统中,有着举足轻重的地位, 它用于存储整数值
。
在SQL Server 2000
中,整数数据
类型主要包括以下几种:
类型名称 | 存储大小 | 取值范围 | 描述 |
---|---|---|---|
bigint |
8个字节(64位), 其中63位用于表示数值的大小,1位用于表示符号! | 从-263到263^-1^,即-9,223,372,036,854,775,808到9,223,372,036,854,775,807 | bigint是SQL Server 中最大的整数类型 ,适用于需要存储超级大整数值的场景! |
int |
4个字节(32位)。其中31位用于表示数值的大小,1位用于表示符号 | 从-231到231^-1^,即-2,147,483,648到2,147,483,647 | int是SQL Server 中最常用的整数类型 ,适用于大多数整数值的存储需求, 而且int 的同义词就是integer |
smallint |
2个字节(16位)其中15位用于表示数值的大小,1位用于表示符号 | 从-215到215^-1^,即-32,768到32,767 | smallint适用于存储较小 的整数值 ,当不需要使用int或bigint时,使用smallint可以节省存储空间! |
tinyint |
1个字节(8位)tinyint类型的数据全部用于表示数值的大小,没有符号位,因此只能表示正整数和零 。 |
从0到255 | tinyint是SQL Server 中最小的整数类型 ,用于存储非常小的整数值,如: 年龄、 |
... | ... | ... |
科普一下字节
在这个表中, n个字节(n位)这里说明的是二进制表示法,
要知道在计算机科学中,所有的数据(包括整数、浮点数、字符等)最终都是以二进制
也就是0
和1
的组合形式存储在计算机的内存和磁盘上的! 这个懂的都懂!~~
而这里的n个字节
指的是在内存
中为该数据类型
分配的空间量, 并且以字节(Byte)
为单位!
学过计算机的朋友应该知道1个字节
是由8个二进制位
所组成,每个位由0
或1
组成, 而字节(Byte)
是计算机科学技术中最小的可操作存储单位!
如图
而这里的n位
用于表示数值的大小,1位
用于表示符号位
这一描述
也就是在解释这n个字节
(即8×n位
,因为1个字节=8位
)是如何被用来存储整数的!
所以对于不同的整数数据类型, 它们所占用的字节数不同,所以可用于表示数值大小的位数也不同。
我们来测试一下效果这些数据类型的效果!
举个栗子
tinyint数据类型
前面说了tinyint
类型的数据全部用于表示数值的大小,没有符号位,只能表示正整数和零
你去存储一个负数
或者超过255
的范围试试看试试 看会怎么样!
如图
整数类型应用场景
tinyint
存储大小:1字节
范围:0到255
特点:tinyint类型用于存储非常小的整数,适用于存储有限的数值集合,如年龄、产品分类ID
等。
应用场景:在电商数据库中,可以用tinyint类型
来存储商品
的分类ID
,因为分类ID
通常不会太大。
smallint
存储大小:2字节
范围:-32,768到32,767
特点:smallint类型提供了比tinyint更大的存储范围,但仍然适用于存储较小的整数。
应用场景:在员工信息表中,可以用smallint类型来存储员工的部门ID
, 因为部门数量通常不会太多
int
存储大小:4字节
范围:-2,147,483,648到2,147,483,647
特点:int类型是最常用的整数类型之一,它提供了足够的存储范围来满足大多数应用程序的需求。
应用场景:在订单表中,可以用int类型来存储订单ID
,因为订单数量
可能会非常大。
bigint
存储大小:8字节
范围:-9,223,372,036,854,775,808到9,223,372,036,854,775,807
特点:bigint类型提供了最大的整数存储范围,适用于需要存储超级大数值的场合。
应用场景:在大型财务系统中,可能需要用bigint类型来存储交易金额或账户余额,以确保不会因数值范围限制而出现问题。
bit
尽管bit
类型在技术上不是整数类型,但它经常与整数类型一起讨论,因为它只能存储0
或1
。
特点:bit类型用于存储逻辑值 例如: 真/假、是/否、开/关
等等!!
应用场景:在用户信息表中,可以用bit类型来存储用户的激活状态(激活为1,未激活为0)。
总的来说整数类型
在数据库系统中用于存储整数值,不同的整数类型
根据其存储大小
和取值范围
的不同,适用于不同的场景, 我们在选择整数类型
时,应该根据实际开发的数据存储需求进行选择,以便于优化存储空间
和提高效率,而不是乱选!
浮点数据类型
这个类型非常特别,也是我们开发中经常打交道的一种数据类型!
但是首先我们要明白一些浮点数据类型
的基本概念!
所谓浮点数据类型
也称之为浮点数
,是一种在计算机中用于表示实数(包括整数和小数)
的数据类型。
浮点数
可以包含小数点
,并且能够表示非常大或非常小的数值,但它们的表示精度是有限的。
浮点数据类型
主要包括以下几种:
float(单精度浮点型)
占用4个字节(32位),可以存储大约6到7位有效数字。
double(双精度浮点型)
占用8个字节(64位),可以存储大约15位有效数字。与float类型相比,double类型提供了更高的精度和更大的范围
单精度和双精度的区别
单精度浮点型、双精度浮点型都是计算机中用于表示实数
的数据类型,它们的主要区别在于存储的精度
和范围
不同!
单精度
单精度浮点型
是计算机中用来存储较小范围
和较低精度
的实数
的一种数据类型, 它占用4个字节(32位)
的存储空间,可以表示大约6~7位
有效数字的实数, 由于精度相对较低,它适用于不需要极高精度的计算场景!
一句话总结:单精度浮点型
是存储较小范围
和较低精度
实数的数据类型,占用4字节
双精度
双精度浮点型
是计算机中用来存储大范围
和高精度
的实数
的一种数据类型, 它占用8个字节(64位)
的存储空间,可以表示大约15位
有效数字的实数, 与单精度浮点型相比,双精度
浮点型在精度和范围上都有显著提升,适用于需要高精度计算的场景,例如: 科学计算、金融分析
等
总之双精度浮点型
是存储更大范围
和更高精度
实数的数据类型,占用8字节!
在SQL Server中,也确实区分单精度
和双精度
浮点类型, 这两种类型的主要区别在于它们的存储大小、精度以及能够表示的数值范围
在SQL Server中按照存储大小浮点类型如下:
单精度(REAL)
占用4个字节(32位)的存储空间。
双精度(FLOAT)
占用8个字节(64位)的存储空间。
浮点类型的存储方式
浮点数在计算机内部也是以二进制
形式存储的,并且遵循IEEE 754标准
这个IEEE 754标准
使用三个字段
来表示一个浮点数
即 符号位(S)、指数位(E)尾数位(M)
,
这三个字段共同构成了一个浮点数
的二进制表示
符号位
用于表示浮点数的正负,0表示正数,1表示负数。
指数位
用于表示浮点数的指数部分,其值决定了小数点的位置。
尾数位
用于表示浮点数的尾数部分,即有效数字。
如图
但是这种存储方式有一个小缺点, 就是精度有限
, 由于浮点数
是以二进制
形式存储的,因此某些十进制
的小数
无法精确表示为二进制小数
,最后可能导致计算结果的舍入误差,以及无限小数循环的情况!
这里简单了解一下就行了,关于IEEE 754标准
我会单独找时间出一期和大家讨论讨论!
SQL Server 2000 中的浮点数据类型
SQL Server 2000
中,浮点数据类型
主要用于存储带有小数
部分的数值,这些数据类型在处理需要高精度的科学计算、金融数据等方面非常重要。
在SQL Server 2000中的浮点类型主要包括以下几种:
real类型
定义:REAL数据类型是一个单精度浮点数,用于存储较小
的浮点数值
。
精度:REAL类型的数据可以精确到小数点后第7位数字
范围:其数值范围从-3.40E+38到3.40E+38(其中E表示10的幂的意思)
存储大小:每个REAL类型的数据占用4个字节
的存储空间。
应用场景:适用于对精度要求不是非常高,但需要节省存储空间的场合。
如图
例如
float类型
定义:FLOAT数据类型是一个双精度浮点数
,用于存储较大
的浮点数值
精度:FLOAT类型的数据可以精确到小数点后第15位数字
范围:其数值范围从-1.79E+308到1.79E+308。
存储大小:每个FLOAT类型的数据占用8个字节
的存储空间。
使用场景:适用于需要大范围
和高精度
的浮点数值计算。
如图
如图
在选择使用float
还是 real
时,我们应该结合实际开发需求的数值范围
和精度
来决定。对于大多数需要浮点数的应用场景,float 类型
通常是更好的选择,因为它提供了更高的精度和更大的数值范围。
然而在存储大量浮点数
值且对精度
要求不高的场合,使用 real 类型
可以节省存储空间。
decimal和numeric数据类型
在SQL Server
中,decimal和numeric数据类型都可以用于存储具有固定精度
和小数位数
的数值。
这两种类型在功能上非常相似,以至于在SQL Server中它们通常被视为可以互换使用, 所以在SQL Server
中,一定程度上decimal和numeric在功能上是等价的!
decimal和numeric数据类型的定义
用途:用于存储具有小数点且需要精确表示的数值
语法:decimal(p, s) 或 numeric(p, s),其中p是精度
也就是数字的总位数,s是小数位数, 他们彼此的占用空间随精度变化而变化。
精度
和小数位数
必须遵守规则:0 <= s <= p <= 38
特点
精确性
与float
和real
这样的浮点数据类型不同,decimal和numeric
能够存储精确的数值, 最大化减少误差!
范围
可以存储非常大或非常小的数值,具体取决于指定的精度
和小数位数
。
最大精度为38位
数字,其中最多可以有30位
小数
存储大小
根据指定的精度和小数位数,decimal和numeric数据类型的存储大小会有所不同。
一般来说在SQL Server中它们会占用从5~17个字节
的存储空间!
如图
如图
numeric
效果差不多,这里就不再过多赘述了!
smallmoney和money货币数据类型
在我们的数字数据类型中,还包含两种类型,叫货币类型!
说到货币
,肯定你会想到一个词汇money
🤑🤑, 没错, SQL Server 2000
中还真有这个类型, 专门用来存储钱或者说存储货币数值
的数据类型! 💰💰
它们在处理金融数据
时特别有用,因为它们提供了高精度
的货币值表示,避免了浮点数
可能带来的精度问题!
money类型
如下表
类型名称 | 存储大小 | 取值范围 | 描述 |
---|---|---|---|
money |
这种类型占用8个字节 的存储空间 |
最大值为922,337,203,685,477.5807 最小值为-922,337,203,685,477.5808 精度为四位小数 |
在SQL Server 中是一种固定精度 和小数位数 的数据类型,专门用于存储货币值的数据类型 |
... | ... |
应用场景
money类型
特别适用于需要高精度
的货币计算
的应用场景,例如:商城系统、财务系统、电子商务平台、银行系统
等都可以使用这种类型存储货币值!
因为使用money类型
可以一定程度上确保货币数值
在数据库中的存储
和处理
是精确的,避免了浮点数
可能带来的精度问题!
我们可以在创建表
或修改表
结构的时候,指定某字段为money类型
,以存储货币值,
如图
效果如下
smallmoney类型
如下表:
类型名称 | 存储大小 | 取值范围 | 描述 |
---|---|---|---|
smallmoney |
占用4个字节 的存储空间 |
最大值为214,748.3647 最小值为-214,748.3648 同样具有四位小数 的精度 |
它是money 类型的一种缩小版,用于存储较小范围的货币值,比money 类型节省了一半的空间。 |
... | ... | ... | ... |
应用场景
smallmoney类型
适用于存储金额
范围较小
的货币值,例如在某些小型应用程序或特定业务场景中
类似于小型零售店
或咖啡馆
在记录日常销售收入
时,由于每笔交易金额
通常不会太大,使用smallmoney类型
基本上就足以满足需求,这样既节省存储空间
又能保证货币值
的精确
表示!
所以说在使用money
和smallmoney
类型的时候,我们应该注意它们的存储范围
和精度
,针对性的来确保满足业务需求
如图
注意
money和smallmoney
类型可能会在某些数据库系统中存在兼容性问题,这时候我们就需要使用其他数据类型, 例如decimal或numeric
来实现类似的功能!
"👍点赞"
"✍️评论"
"收藏❤️"
大家的支持就是我坚持下去的动力!
如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚
更多 好玩 好用 好看
的干货教程可以 点击下方 关注❤️ 微信公众号 ❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇