MySQL基础知识---------CHAR和VARCHAR类型
来源:互联网 发布:adobe软件打不开 编辑:程序博客网 时间:2024/05/01 16:00
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。
同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。
如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。参见5.3.2节,“SQL服务器模式”。
下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
值
CHAR(4)
存储需求
VARCHAR(4)
存储需求
''
<span ' '
4个字节
''
1个字节
'ab'
<span 'ab '
4个字节
'ab '
3个字节
'abcd'
'abcd'
4个字节
'abcd'
5个字节
'abcdefgh'
'abcd'
4个字节
'abcd'
5个字节
请注意上表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误。
从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时从CHAR列删除了尾部的空格。通过下面的例子说明该差别:
mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO vc VALUES ('ab ', 'ab ');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;
+----------------+----------------+
| CONCAT(v, '+') | CONCAT(c, '+') |
+----------------+----------------+
| ab + | ab+ |
+----------------+----------------+
1 row in set (0.00 sec)
- MySQL基础知识---------CHAR和VARCHAR类型
- mysql数据类型之char和varchar类型
- CHAR和VARCHAR类型
- Mysql数据库中varchar类型和char类型的区别
- mysql中varchar类型和char类型的区别
- MYSQL中字段char类型和varchar类型的区别
- MySQL中CHAR和VARCHAR类型演变和详解
- MySQL的char和varchar类型的区别
- mysql字段类型选择时char和varchar如何选择
- MySql中的char和varchar
- mysql char 和 varchar 区别
- MySQLのchar和varchar
- mysql char和varchar区别
- MySQL中CHAR和VARCHAR
- MySQL中CHAR和VARCHAR
- MySQL数据类型 CHAR和VARCHAR
- mysql的char和varchar
- MySQL中varchar与char类型区别
- Android setContentView和inflate区别
- Linux内核调试方法总结
- 一张图描述HotSpot虚拟机垃圾收集器
- 【C++进阶】深入理解C/C++(3)
- 面向对象——(10)委托与事件
- MySQL基础知识---------CHAR和VARCHAR类型
- 只愿得一人心白首不分离
- 甚瞥充艷縇聬蔮絔糮,衛疆螘懊粫遭!
- C语言中修改字符串的一个字符的值
- 虚拟机(Vmware)怎么进入BIOS
- 判断一个外部参照是overlay还是attachment。
- 简明的VIM攻略
- 路由器怎么与路由器连接
- .net js 键盘事件