迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 >

SQL Server 中的 VARCHAR(n) 列允许多少个字符? VARCHAR 变量在磁盘中占用多少空间?

作者:迹忆客 最近更新:2023/01/29 浏览次数:

在任何编程面试中,SQL 的常见问题之一是 SQL 中的 VARCHARCHAR 数据类型有什么区别? 特别是当我们的项目使用 Microsoft SQL Server 时。 你可能已经见过几次,但鉴于它的流行,现在人们以不同的方式问这个问题,例如 他们会问你一列 VARCHAR(2) 数据类型需要多少空间? 它可以容纳多少个字符? 你如何最小化空间? 使用 CHAR 变量而不是 VARCHAR(2) 更好吗?为什么? 这些是一些非常有趣的问题,比经典的 SQL 问题更有意义,例如 char 与 varchar 数据类型问题之间的区别

首先,在较早的问题中,它将测试考生的实践知识而不是理论知识。 其次,它有很多有用的后续问题来进一步检查候选人对 SQL 和数据库基础知识的理解深度。 让我们尝试在本文中回答这些问题。


SQL Server 中的 VARCHAR(n) 列占用多少空间?

关于此主题的第一个问题是 varchar(2)varchar(3) 列或变量在 Microsoft SQL Server 中将占用多少空间? 在回答这个问题之前,你应该弄清楚面试官在这里所说的空间是什么意思,他指的是空间还是用来在磁盘中以字节为单位存储这些值的内存。

如果是,那么你可以说它不是常数,它取决于你存储的值。 如果没有存储任何内容,即空字符串,则至少需要 2 个字节来存储 varchar(2) 值,如果在其上存储 2 个字符,则最多需要 2+2 = 4 个字节。

例如,如果有一个名为“Enabled VARCHAR(1) ”的列并存储“Y”或“N”等值,那么它将在磁盘中占用 3 个字节,一个用于数据,两个用于元数据。


VARCHAR(n) 列或变量中可以存储多少个字符?

VARCHAR 变量和列相关的第二个重要问题是关于它们可以存储多少个字符以及如果存储更多字符会发生什么情况?

有时,还会询问 VARCHAR(2) 列的限制或容量是多少? 你可以在那里存储多少个字符?

答案很简单,但对许多程序员来说却很棘手。 在 VARCHAR(2) 变量或列中,我们可以存储最多两个字符的字符串,例如 空字符串、一个字符串或两个字符的字符串都可以放在那里。

很多程序员因为 VARCHAR 就在这一点上搞糊涂了,他们认为因为是 varchar,所以可以存储任意多的字符,但事实并非如此。 变量部分来自将值存储到磁盘中所需的实际内存,例如 存储更少的字符需要更少的内存,存储更多的字符需要更多的内存。


你应该在这里使用 CHAR 数据类型吗?

建议对小数据使用 CHAR 或固定长度数据类型,因为 VARCHAR 需要增加开销。 由于 CHAR 不需要 VARCHAR 存储元数据所需的额外 2 个字节,因此最好使用 CHAR(2) 而不是 VARCHAR(2),因为如果存储两个字符,CHAR(2) 将占用 2 个字节,但 VARCHAR(2) 将 占用四个字节。

选择正确的数据类型所节省的少量费用对于具有数百万条记录的大型表来说意义重大。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便