SQL Server 中 char、varchar、nchar 和 nvarchar 数据类型之间的区别?
SQL 中 char
和 varchar
的区别是什么,其次是 nchar
和 nvarchar
,是热门的 SQL 面试问题之一,令人惊讶的是并不是每个程序员都知道这个基本区别。 如果大家从名称出发(应该这样做),那么就会发现 char
是一种固定长度的数据类型,而 varchar
应该是一种可变长度的数据类型。 尽管所有 char
、varchar
、nchar
和 nvarchar
都用于存储文本或字符串数据,但它们之间存在细微差别。 正如我所说的 char
是固定长度的,这意味着像 Zipcode char(10)
这样的变量或列将只需要 10 个字节来存储数据,包括空间。
另一方面,varchar
变量或列将占用变量空间,具体取决于存储的数据 + 2 个用于存储长度的额外字节,正如我在之前关于 varchar 变量在磁盘中占用多少空间的文章中所解释的那样。 例如,对于列 varchar name(20)
,如果存储 “Jack”(4 + 2) ,将占用 6 个字节,如果存储 “Jones”(5 + 2) ,则占用 7 个字节。
为了获得更好的性能,我们应该将 char 用于固定长度的列,例如邮政编码,其中每一行都在一定长度以下,例如 印度为 6 ,美国为 5 + 4 位邮政编码。
另一方面,对于可变长度的列,最好使用 varchar
数据类型来节省空间,如果实际数据总是远小于容量,则在 char
类型的情况下会浪费空间。
特别是,这个问题是和其他一系列流行的 SQL 面试问题同样重要,例如 WHERE 和 HAVING 子句与编写 SQL 查询以连接三个表之间的区别。 如果我们遇到任何其他有趣的 SQL 查询,那么也可以与我们分享,如果你不知道答案,我们将一起尝试找出答案。
如何在 SQL 示例中使用 NCHAR 与 NVARCHAR
现在让我们看看 SQL 中 nchar
和 nvarchar
数据类型的区别。 nchar(n)
和 nvarchar(n)
类似于对应的 char
和 varchar
,但占用的空间是它们的两倍,以支持多语言。 额外的空间用于存储每个字符的 Unicode 字符,这意味着每个字符 2 个字节,1 个字符 + 1 个 Unicode。
除了这个基本问题之外,我们还经常会看到一些后续问题,例如何时在数据库中使用 char
和 varchar
? 或者更常见的是 char(20)
和 varchar(20)
变量之间的区别是什么,因为它们只能存储 20 个字节来存储数据。
好吧,主要区别在于 varchar
可能需要更少的字节,具体取决于我们存储在其上的数据长度。 例如,如果我们将“USA”存储在类型为 char(20)
和 varchar(20)
的变量中,那么第一个将占用 20 个字节,而第二个将只占用 5 个字节 (3 +2) ,但是 char
列的性能 在 SELECT
查询中比 varchar
列更好。
同样,如果我们使用 nchar(20)
和 nvarchar(20)
来存储“SQL”字符串,那么第一个变量将占用 40 个字节 (2*20) ,第二个变量将占用 8 个字节 (3*2 +2) 。
以下是 char(10)
、varchar(10)
、nchar(10)
和 nvarchar(10)
变量存储相同数据需要多少空间的摘要:
declare @cData char(10)
set @cData = 'SQL' -- 10 bytes
set @cData = 'Java' -- 10 bytes
declare @vcData varchar(10)
set @vcData = 'SQL' -- 3 + 2 = 5 bytes
set @vcData = 'Java' -- 4 + 2 = 6 bytes
declare @ncData nchar(10)
set @ncData = 'SQL' -- 10*2 = 20 bytes
set @ncData = 'Java' -- 10*2 = 20 bytes
declare @nvcData varchar(10)
set @nvcData = 'SQL' -- 3*2+2 = 8 bytes
set @nvcData = 'Java' -- 4*2+2 = 10 bytes
谢谢大伙,这就是 SQL 中 char
和 varchar
数据类型以及 nchar
与 nvarchar
之间的区别。 我希望这些基础知识不仅有助于 SQL 面试,还有助于为表中的列和存储过程中的变量选择正确的类型。 如果大家对 char
或 varchar
变量有任何疑问或问题,请告诉我。
相关文章
在 Pandas 中执行 SQL 查询
发布时间:2024/04/24 浏览次数:1195 分类:Python
-
本教程演示了在 Python 中对 Pandas DataFrame 执行 SQL 查询。
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。