- 浏览: 246218 次
-
文章分类
最新评论
varchar char 的值都是忽略值最后的空格也就是值‘my ’两个存储,值和‘my','my '都是相等的
从 CHAR(4)和 VARCHAR(4)列检索的值并不总是相同,因为检索时从 CHAR 列删除了尾部的空格
另外varchar最后要多用一个字节存储记录的长度
TINYTEXT或TINYBLOB2^8-1255TEXT或BLOB2^16-1(64K-1)65535MEDIUMTEXT或MEDIUMBLOB2^24-1(16M-1)16777215LONGBLOB2^32-1(4G-1)4294967295
6.2.3.1CHAR和VARCHAR类型
CHAR和VARCHAR类型是很相似的,但是它们被存储与检索的方式有些不同。
一个CHAR列的长度被固定为你创建表进所声明的长度。长度可以是1和255之间的任一值。(从MySQL3.23之后,CHAR的长度可以是0到255。)当CHAR值被存储时,他们被用空格在右边填补到指定长度。当CHAR值被检索时,尾部的空格被截除。
VARCHAR列的值是变长的字符串。你可以声明一个VARCHAR列在1到255,就像对CHAR列一样。然而,与CHAR相反的,VARCHAR值只以所需的字符数存储,另加一个字节存储记录的长度。值并不被填补;相反的,当被存储时,尾部的空格被截除。(这个截除空格方式不同于ANSISQL规约。)
如果将一个超过列最大长度的值赋给一个CHAR或VARCHAR列,该值将截断以适合它。
下表通过在CHAR(4)和VARCHAR(4)列中存储不同的字符串的结果显示了两种类型列的不同:
值CHAR(4)存储需求VARCHAR(4)存储需求''''4字节''1字节'ab''ab'4字节'ab'3字节'abcd''abcd'4字节'abcd'5字节'abcdefgh''abcd'4字节'abcd'5字节
在各种情况下,CHAR(4)和VARCHAR(4)列的检索值均是一样的,因为在CHAR列上检索值的尾部空格会被截除。
CHAR和VARCHAR列值以省略字母大小写的方式进行排序和比较,除非在表建立时BINARY属性被指定。BINARY属性意味着,该列值根据MySQL服务器正在运行的机器的ASCII表顺序进行字母大小写敏感的方式排序和比较。BINARY并不影响该列如何被存储和检索。
BINARY属性是有粘性的。这就意味着,如果一个被标记为BINARY的列被用于一个表达式中,整个表达式将作为一个BINARY值被比较。
在表创建时,MySQL可能会隐式地改变一个CHAR或VARCHAR列的类型。查看章节6.5.3.1隐式的列定义变化。
6.2.3.2BLOB和TEXT类型
一个BLOB是一个可以保存一可变数量的数据的二进制大对象。四个BLOB类型(TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB)之间的不同仅仅在于他们能保存值的最大长度不一致。查看章节6.2.6列类型存储需求。
四个TEXT类型(TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT)对应与四个BLOB类型,并且有相同的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别就是,对BLOB值是以字母大小写敏感的方式进行排序和比较的,而对TEXT值以忽略字母大小写方式进行排序和比较。换句话说,TEXT是一个忽略字母大小写的BLOB。
如果将一个超过列类型最大长度的值赋给一个
从 CHAR(4)和 VARCHAR(4)列检索的值并不总是相同,因为检索时从 CHAR 列删除了尾部的空格
另外varchar最后要多用一个字节存储记录的长度
TINYTEXT或TINYBLOB2^8-1255TEXT或BLOB2^16-1(64K-1)65535MEDIUMTEXT或MEDIUMBLOB2^24-1(16M-1)16777215LONGBLOB2^32-1(4G-1)4294967295
6.2.3.1CHAR和VARCHAR类型
CHAR和VARCHAR类型是很相似的,但是它们被存储与检索的方式有些不同。
一个CHAR列的长度被固定为你创建表进所声明的长度。长度可以是1和255之间的任一值。(从MySQL3.23之后,CHAR的长度可以是0到255。)当CHAR值被存储时,他们被用空格在右边填补到指定长度。当CHAR值被检索时,尾部的空格被截除。
VARCHAR列的值是变长的字符串。你可以声明一个VARCHAR列在1到255,就像对CHAR列一样。然而,与CHAR相反的,VARCHAR值只以所需的字符数存储,另加一个字节存储记录的长度。值并不被填补;相反的,当被存储时,尾部的空格被截除。(这个截除空格方式不同于ANSISQL规约。)
如果将一个超过列最大长度的值赋给一个CHAR或VARCHAR列,该值将截断以适合它。
下表通过在CHAR(4)和VARCHAR(4)列中存储不同的字符串的结果显示了两种类型列的不同:
值CHAR(4)存储需求VARCHAR(4)存储需求''''4字节''1字节'ab''ab'4字节'ab'3字节'abcd''abcd'4字节'abcd'5字节'abcdefgh''abcd'4字节'abcd'5字节
在各种情况下,CHAR(4)和VARCHAR(4)列的检索值均是一样的,因为在CHAR列上检索值的尾部空格会被截除。
CHAR和VARCHAR列值以省略字母大小写的方式进行排序和比较,除非在表建立时BINARY属性被指定。BINARY属性意味着,该列值根据MySQL服务器正在运行的机器的ASCII表顺序进行字母大小写敏感的方式排序和比较。BINARY并不影响该列如何被存储和检索。
BINARY属性是有粘性的。这就意味着,如果一个被标记为BINARY的列被用于一个表达式中,整个表达式将作为一个BINARY值被比较。
在表创建时,MySQL可能会隐式地改变一个CHAR或VARCHAR列的类型。查看章节6.5.3.1隐式的列定义变化。
6.2.3.2BLOB和TEXT类型
一个BLOB是一个可以保存一可变数量的数据的二进制大对象。四个BLOB类型(TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB)之间的不同仅仅在于他们能保存值的最大长度不一致。查看章节6.2.6列类型存储需求。
四个TEXT类型(TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT)对应与四个BLOB类型,并且有相同的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别就是,对BLOB值是以字母大小写敏感的方式进行排序和比较的,而对TEXT值以忽略字母大小写方式进行排序和比较。换句话说,TEXT是一个忽略字母大小写的BLOB。
如果将一个超过列类型最大长度的值赋给一个
发表评论
-
RAID write back write through
2014-07-09 13:44 962RAID write back指的是raid控制器能够将写 ... -
druid PreparedStatementCache设置
2014-07-08 14:34 3631druid的连接池配置中有PreparedStatement ... -
innodb 插入缓冲
2014-07-01 16:07 709插入缓冲是InnoDB存储引 ... -
Innodb配置,将数据与日志放在不同磁盘可以加快性能
2012-12-06 19:23 753An advanced my.cnf example ... -
character_set_client character_set_connection character_set_results
2012-11-19 20:21 3257之前一直纠结各种编码的却别:character_set_c ... -
amoeba-mysql的安装使用和读写分离(转)
2012-11-16 16:11 1044http://blog.csdn.net/chen861201 ... -
mysqlcheck myisamchk
2012-11-07 17:45 769mysqlcheck的功能类似myisamchk,但其工作不同 ... -
mysqlbinlog乱码
2012-11-06 19:49 5458使用mysqlbinlog查看二进制文件发现 /*!40019 ... -
auto-rehash
2012-11-05 19:20 4149mysql auto-rehash:读取表信息和列信 ... -
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
2012-09-19 20:21 781MySQL主从复制(Master-Slave)与读写分离(My ... -
mysql显示见表语句
2012-09-03 19:13 1192show create table mysql.slow_l ... -
mysql主从同步延迟问题
2012-08-30 14:18 865见http://www.ixpub.net/thread-13 ... -
二进制日志文件
2012-08-29 19:33 1163mysqld在每个二进制日志 ... -
备份恢复数据库
2012-08-28 20:18 838全备份 mysqldump -utest -ptest -- ... -
mysql用户修改密码
2012-08-28 19:37 774mysqladmin -utest -ptest passwo ... -
set session sql_log_bin=0
2012-08-21 15:22 4051引自http://blog.sina.com.cn/s/blo ... -
字符串转换成date
2012-08-15 20:00 935SELECT STR_TO_DATE('Tue 05 June ... -
selecting top N records per group
2012-08-15 18:56 926http://code.openark.org/blog/my ... -
MySQL DELAY_KEY_WRITE
2012-08-02 20:03 1145MySQL DELAY_KEY_WRITE 引自http:// ... -
Mysql Merge表的优点
2012-07-09 13:52 965在Mysql数据库中,Mysql Me ...
相关推荐
总的来说,MySQL中的int、char和varchar在性能上的差异并非显著到足以成为决定性因素。开发者应根据实际需求,如数据的类型、大小、预期的增长、是否需要索引以及对可读性和可维护性的要求,来综合考虑选择哪种数据...
你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗? 还是先抛几条结论吧: 1、存储的时候,CHAR总是会补足空格后再存储,不管用户插入数据时尾部有没有包含空格。 2、存储的时候,VARCHAR不会先补足空格后再存储...
在MySQL数据库中,CHAR和VARCHAR是两种常见的字符串数据类型,它们在存储和处理方式上有着显著的区别,这对于数据库设计和性能优化至关重要。 首先,CHAR是一种固定长度的数据类型。这意味着无论你存储的实际数据有...
本文将深入探讨如何在MySQL中利用触发器实现CHAR类型主键的自增长功能,这将为我们提供一种灵活且独特的主键生成策略。 ### MySQL中CHAR类型主键自增长的原理 在传统的数据库设计中,我们通常使用整型数据类型作为...
在MySQL数据库中,`CHAR`和`VARCHAR`是两种常见的字符串数据类型,它们在存储和处理数据时具有不同的效率特点。理解这两种类型的差异对于优化数据库性能至关重要。 `CHAR`是一种固定长度的数据类型,这意味着无论...
在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char.。这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是 从数据的保存方式来看,两者相差很大。而且其具体的实现方式,还依赖与存储引擎。我...
在MySQL中,`VARCHAR`是一种用于存储可变长度字符串的数据类型,它的长度设置是非常关键的,因为它直接影响到存储空间的使用效率和数据的正确性。`VARCHAR`的长度设置方法是通过在类型名后面括号内指定最大字符数,...
在MySQL数据库中,CHAR和VARCHAR是两种常用的字符串数据类型,它们在存储和处理字符串时有显著的区别。理解这些差异对于优化数据库性能和节省存储空间至关重要。 首先,CHAR和VARCHAR都是预定义长度的数据类型,但...
Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...
MySQL中的CHAR和VARCHAR是两种常见的字符串数据类型,用于存储文本数据。它们在数据库设计和优化中扮演着重要的角色,理解它们的区别和使用场景至关重要。 首先,让我们深入了解一下两者的演变。在MySQL 5.0.3之前...
MySQL中的VARCHAR类型是一种可变长度的字符串数据类型,它在存储空间上相比固定长度的CHAR类型更为节省。本文将深入探讨VARCHAR类型的大小长度问题及其在不同版本和编码下的限制。 首先,VARCHAR字段的长度限制主要...
在MySQL数据库中,字符类型`CHAR`和`VARCHAR`是两种常见的用于存储文本数据的字段类型,它们在存储方式和空间效率上有着显著的区别。 首先,`CHAR`是一种固定长度的字符类型。这意味着,无论你存储的数据实际长度是...
CHAR和VARCHAR是两种常见的字符型数据类型,它们各自有着独特的特点和适用场景。 首先,CHAR是固定长度的,这意味着不论实际存储的数据有多长,数据库都会预留指定长度的空间。例如,CHAR(255)会为每个值预留255个...
在MySQL和Oracle这两个广泛使用的数据库管理系统中,我们经常遇到需要将字符串(varchar)类型的日期转换为日期(date)类型的情况。这通常是因为原始数据以字符串格式存储,而我们需要对这些日期进行比较、排序或...
有的小伙伴在学习数据库的时候,创建表结构的时候不小心把某字段设置成了varchar但是在统计求和的时候就傻眼了,接下来跟着小编学习一下,不用改该列数据类型也能求和的方法吧! 1、打开 数据库连接客户端Navicat ...
在MySQL中,`VARCHAR`类型用于存储可变长度的字符串,它相较于`CHAR`类型更加节省空间,因为它只存储实际输入的数据长度。然而,在数据库设计过程中,有时可能会遇到需要动态修改`VARCHAR`字段长度的情况,这通常是...