您的位置:首页 > 财经 > 产业 > 泰安疫情_网络的推广方式有哪些_俄国搜索引擎yandex入口_深圳百度seo代理

泰安疫情_网络的推广方式有哪些_俄国搜索引擎yandex入口_深圳百度seo代理

2024/12/23 11:32:16 来源:https://blog.csdn.net/windowsxp2018/article/details/142935025  浏览:    关键词:泰安疫情_网络的推广方式有哪些_俄国搜索引擎yandex入口_深圳百度seo代理
泰安疫情_网络的推广方式有哪些_俄国搜索引擎yandex入口_深圳百度seo代理

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

前言

哈哈哈哈,又有一段时间没有更新啦!!
国庆节大家有没有来重庆,玩安逸了没有 ~~真的太舒服! 😜😜😜😜😜

好了,回到正题吧,,嘿嘿,今天我们来讨论一下SQL Server 2000中的binary类型

这是一种用于存储二进制数据数据类型, 这种类型很多初学者都忽略了!

那么接下来我们来对这个类型的详细展开探讨!

回顾一下固定和可变

固定长度(Fixed)

之前我们说过, 当我们说某个字段是固定长度的时候,意味着这个字段在数据库中占用的空间大小是预先确定且不会改变的!

比如某个数据类型, 无论我们实际存储的长度有多长(前提条件:只要不超过n个长度范围), 那么数据库都会为这个字段分配n个长度的空间

如果存储的长度小于n,数据库可能会用空格或者其他填充字符来填充剩余空间,以确保总长度达到n。
当然这些填充的空格在检索数据时通常会被忽略或自动移除!

可变长度(Variable)

相对固定长度而言可变长度意味着字段在数据库中占用的空间大小可以根据实际存储的数据量来动态调整

varchar(n)为例,这里的n指定了字段可以存储的最大字符数,
但实际占用的空间将仅包括存储字符串所需的字符加上一个额外的长度字节(在某些数据库系统中可能是两个字节)来记录字符串的实际长度的, 这意味着如果我们存储的字符串很短,那么字段占用的空间也会相应减少!

binary类型基本概述

SQL Server 2000中,binary数据类型用于存储固定长度的二进制数据!

这种数据类型与文本数据不同,二进制数据不是以字符形式存储,而是以字节形式存储

通常我们会使用这种数据类型来存储图像、音频、视频文件, 以二进制`的形式存储它们,以及任何不是文本的数据也都是可以的!

binary类型的特点性能

固定长度

binary(n)中的n指定了二进制数据的长度,这个长度是固定的。

如果实际存储的数据长度小于n,则剩余的部分将被填充以满足长度要求, 这个我们上面已经说过了!

举个栗子

你定义了一个binary(10)的字段,只存储了5个字节的数据,数据库也会为其保留10个字节的空间,并用一些方式,例如(0x00)去填充剩余的5个字节!

长度范围

n的取值范围是从1~8000 那么这意味着binary类型可以存储的最大长度是8000字节

存储效率

对于固定可变长度的存储效率,跟我们前面说的也一样!

比如:binary数据固定长度,在存储数据的时候, 可能不如可变长度varbinary类型高效,特别是对于长度变化较大的数据!
但是在某些情况下,固定长度的数据可以带来性能上的优势,这都是要看实际情况~
就像是binary类型通常用于存储不需要经常变更的二进制数据哈希值、加密密钥、小型二进制文件, 这样性能提升非常明显!

binary类型使用方式

由于binary类型是直接存储二进制数据,我们不需要进行任何额外的转换或编码, 直接插入的数据会被直接转换为0x开头的数据,保存在字段中!

也就是说在SQL Server中,当你插入数据到binaryvarbinary字段的时候,数据会以十六进制(hexadecimal)的形式进行存储,通常以0x前缀来表示这是一个十六进制数

这是数据库内部表示二进制数据的一种方式!

当存储二进制数据时,它将这些数据转换为十六进制格式,并在前面加上0x前缀。
这样做可以确保数据的完整性准确性,并便于数据库在内部处理和存储这些数据。

获取binary数据

我们可以使用SELECT语句从数据库中查询二进制数据。
查询结果将显示带有0x前缀的十六进制字符串

如图


当然你一定会想,显示这样的数据有什么用?我们又看不懂~~

当然不是为了让我们看懂啦!!

我们在实际应用的时候,可以把这种数据转换为实际的原数据,来进行验证也可以!

比如 当使用php提取出来的这个字段数据为十六进制, 可以使用hexdec()函数十六进制字符串转换为十进制数

如图

binary也可以存储图片 你信不信

如果存储的是一个图片,并且已经以二进制形式从数据库中检索出了这张图片的数据,那么我们可以使用PHP来输出这张图片并将其显示在网页上。
通常涉及到设置正确的HTTP头信息,并将二进制数据直接发送到客户端浏览器进行显示!
这个我们在后面实战项目的时候,会有具体演示~

varbinary类型

varbinary(n)是一种可变长度的二进制数据类型,其中n的取值范围也是从1~8000

binary类型比较的情况下,varbinary更加灵活,因为它只存储实际的数据长度和数据本身,而不需要额外的填充字节,这让varbinary类型存储长度变化较大的二进制数据时更加高效!

其他二进制类型

SQL Server 2000中还有一个image数据类型, 它是用于存储大量二进制数据
最长可达231-1 个字节!

但是在后续SQL Server版本的中,·image类型·已被废弃,并被varbinary(max)类型代替, 这个可以存储相当于2GB字节的数据!

如果你依旧在使用SQL Server 2000, 并且需要存储大于8000字节的二进制数据,那么可以使用image类型!

为了与后续版本的兼容性,我建议在开发中使用varbinary(max)类型是一样的!

应用场景

基本上使用binary类型存储数据时,我们应该要注意以下一些情况进行选择
比如说数据长度可能会变化很大,那么应考虑使用varbinary类型以节省存储空间,提高效率!

平常我们在进行数据库字段设计的时候,还是尽量要应根据数据实际用途存储需求选择合适的数据类型,充分考虑数据的实际需求和存储效率!

总之我们要明白binary类型是一种存储固定长度二进制数据的数据类型,它在存储不需要经常变更的二进制数据时非常有用, 也就是说当我们要存储一些不需要长期被修改的数据时,可以考虑使用binary类型来提高存储效率!

举个栗子

比如我们要存储一个密码其实就可以使用binary

假设正在开发一个用户管理系统,并且希望以加密的形式存储用户的密码以提高安全性。

我们可以先使用某种加密算法来加密用户的密码,例如: md5, 然后把加密后的密码以二进制形式存储在数据库中

比如说获取用户的原始密码,并使用选定的加密算法对其进行加密

加密算法会将密码转换为一个无法直接识别原始信息的字符串!

例如:这里我们把一个1213456md5加密得到:aadc03fecca9b5cc2fd64b333cb0875e

然后我们简单的创建一个数据表

CREATE TABLE Users (  UserID INT PRIMARY KEY,  Username VARCHAR(50),  EncryptedPassword BINARY(50)  -- 假设加密后的密码长度固定为50字节  
);

这里我简单的建立一个Users表, 里面有三个字段分别为:
UserID(用户ID,主键)、
Username(用户名)、
EncryptedPassword(加密后的密码,使用binary类型存储)

注意

这里我只是假设加密后的密码长度固定为50字节, 在实际开发中,加密后的密码长度可能会根据所使用的加密算法原始密码的长度而变化!

用户注册更改密码时,可以将加密后的密码插入到Users表EncryptedPassword字段中

这里你可以使用相应的语言把这个加密后的字符串转换为十六进制,

例如PHP可以使用bin2hex()函数进行转换!

然后使用insert语句 插入到数据库,要使用0x开头,后面就是加密后密码的十六进制表示!

所以把aadc03fecca9b5cc2fd64b333cb0875e转换之后为
0x6161646330336665636361396235636332666436346233333363623038373565 把这个插入到数据库中!

例如

INSERT INTO Users (Username, EncryptedPassword)  
VALUES ('张三',0x6161646330336665636361396235636332666436346233333363623038373565);

如图

当用户尝试登录时,需要从数据库中查询出该用户的加密的密码,并使用相同的加密算法对用户输入的密码进行加密

然后你可以比较两个加密后的密码是否相同,
比如使用PHP提取出来之后,使用hexdec函数、hex2bin函数十六进制数值、十六进制字符串进行解析为加密密码,再进行对比,这样来验证用户身份也可以!

如图

需要注意的是,由于这里使用的是固定长度的binary类型,如果加密后的密码长度超过了所指定的长度,则可能需要截断,导致数据丢失!

如果长度小于指定长度,则可能需要填充, 然而,在实际应用中,为了避免这种限制,通常会选择使用varbinary类型varbinary(max)类型来存储加密密码,因为它们可以存储可变长度的二进制数据。

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com