麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
807
2023-10-31
今天小编给大家分享一下mysql有没有varchar2的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
mysql没有varchar2,只有varchar。VARCHAR代表可变长度的字符串,其长度可以达到65,535个字符; MySQL将VARCHAR值作为1字节或2字节长度前缀加上实际数据。 VARCHAR2是***的类型,代表可变长度的字符串,可以存储1到4000字节的值,这意味着对于单字节字符集,最多可以在VARCHAR2列中存储4000个字符。
mysql没有varchar2,只有varchar,***有varchar2,代表字节长度,能容纳多少个汉字和数据库的字符集有关。
mysql的varchar类型
VARCHAR是可变长度的字符串,其长度可以达到65,535个字符。 MySQL将VARCHAR值作为1字节或2字节长度前缀加上实际数据。
长度前缀指定值的字节数。 如果列需要少于255个字节,则长度前缀为1个字节。 如果列需要超过255个字节,长度前缀是两个长度字节。
但是,最大长度受到最大行大小(65,535字节)和所使用的字符集的限制。 这意味着所有列的总长度应该小于65,535字节。
下面我们来看一个例子。
创建一个新的表,它有两列s1和s2,长度分别为32765(长度前缀为+2)和32766(+2)。注意,32765 + 2 + 32766 + 2 = 65535,这是最大行大小。
USE testdb; CREATE TABLE IF NOT EXISTS varchar_test ( s1 VARCHAR(32765) NOT NULL, s2 VARCHAR(32766) NOT NULL ) CHARACTER SET latin1 COLLATE LATIN1_DANISH_CI;该语句成功创建了表。 但是,如果我们将s1列的长度增加1。
USE testdb; CREATE TABLE IF NOT EXISTS varchar_test_2 ( s1 VARCHAR(32766) NOT NULL, -- error s2 VARCHAR(32766) NOT NULL ) CHARACTER SET latin1 COLLATE LATIN1_DANISH_CI;MySQL将发出错误消息:
Error Code: 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead,checkthe manual. You haveto change some columns to TEXT or BLOBs 0.000 sec如上所示,行长度太大,所以创建语句失败。
如果插入长度大于VARCHAR列长度的字符串,MySQL将发出错误。 请考虑以下示例:
USE testdb; CREATE TABLE items ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(3) ); INSERT INTO items(title) VALUES(ABCD);在这个例子中,MySQL发出以下错误消息:
1406 - Data too long for column title at row 1***的varchar2类型
要存储可变长度的字符串,可以使用*** VARCHAR2数据类型。 VARCHAR2列可以存储1到4000字节的值。 这意味着对于单字节字符集,最多可以在VARCHAR2列中存储4000个字符。
当使用VARCHAR2列创建表时,必须指定最大字符串长度(以字节为单位):
VARCHAR2(max_size BYTE)或以字符 -
VARCHAR2(max_size CHAR)默认情况下,如果没有在max_size之后显式指定BYTE或CHAR,则***使用BYTE。 换句话说,VARCHAR2(N)列最多可以容纳N个字节的字符。
如果存储大小超过VARCHAR2列最大长度的字符串,则***发出错误。
例如,如果定义最大长度为20的VARCHAR2列,则在单字节字符集中最多可以存储20个字符。 如果存储了21个或更多字符,则***返回错误。
另外,如果在VARCHAR2(20)列中存储10个字符,则***仅使用10个字节进行存储,而不是20个字节。 因此,使用VARCHAR2数据类型可以帮助您节省表使用的空间。
比较VARCHAR2值时,***使用非填充比较语义。
VARCHAR2最大长度
从*** 12c开始,可以为VARCHAR2数据类型最大长度为:32767。 ***使用MAX_STRING_SIZE参数来控制最大长度。 如果MAX_STRING_SIZE是STANDARD,则VARCHAR2的最大大小是4000字节。 如果MAX_STRING_SIZE为EXTENDED,则VARCHAR2的大小限制为32767。
要获取MAX_STRING_SIZE参数的值,请使用以下查询:
SELECT name, value FROM v$parameter WHERE name = max_string_size;执行上面查询语句,得到以下结果 -
SHOW PARAMETER max_string_size;以上就是“mysql有没有varchar2”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。