nvarchar是什么意思? SQL Server中的char , nchar , varchar和nvarchar什么区别?
我正在使用SQL Server 2005在我学校的一个小型Web应用程序的数据库上工作。 我在varchar和nvarchar的问题上看到了几个学派: 除非处理大量国际化数据,否则使用varchar ,然后使用nvarchar 。 只要使用nvarchar的一切。 我开始看到视图2的优点了。我知道nvarchar占用了两倍的空间,但这不一定是一笔巨大的交易,因为这只能为数百名学生存储数据。 对我来说,似乎是最简单的,不要担心它,只是允许一切使用nvarchar。 还是有什么我失踪?
当我执行下面的命令: ALTER TABLE `mytable` ADD UNIQUE ( `column1` , `column2` ); 我得到这个错误信息: #1071 – Specified key was too long; max key length is 767 bytes 有关column1和column2的信息: column1 varchar(20) utf8_general_ci column2 varchar(500) utf8_general_ci 我认为varchar(20)只需要21个字节,而varchar(500)只需要501个字节。 所以总字节数是522,小于767.那么为什么我会得到错误信息呢? #1071 – Specified key was too long; max key length is 767 bytes
这只是nvarchar支持多字节字符? 如果是这样的话,除了存储问题之外,真的有什么意义可以使用varchars吗?
我在MySQL中有一个消息表,它记录用户之间的消息。 除了典型的ID和消息类型(所有整数类型),我需要将实际的消息文本保存为VARCHAR或TEXT。 我设置了3000个字符的前端限制,这意味着这些消息永远不会被插入到数据库比这更长。 使用VARCHAR(3000)还是TEXT有理由吗? 有些东西只是写VARCHAR(3000),感觉有点反直觉。 我已经通过堆栈溢出的其他类似的帖子,但将是很好的获得特定于这种类型的常见信息存储的意见。