- 浏览: 242049 次
文章分类
最新评论
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 933RAID write back指的是raid控制器能够将写 ... -
druid PreparedStatementCache设置
2014-07-08 14:34 3595druid的连接池配置中有PreparedStatement ... -
innodb 插入缓冲
2014-07-01 16:07 690插入缓冲是InnoDB存储引 ... -
Innodb配置,将数据与日志放在不同磁盘可以加快性能
2012-12-06 19:23 737An advanced my.cnf example ... -
character_set_client character_set_connection character_set_results
2012-11-19 20:21 3232之前一直纠结各种编码的却别:character_set_c ... -
amoeba-mysql的安装使用和读写分离(转)
2012-11-16 16:11 1021http://blog.csdn.net/chen861201 ... -
mysqlcheck myisamchk
2012-11-07 17:45 747mysqlcheck的功能类似myisamchk,但其工作不同 ... -
mysqlbinlog乱码
2012-11-06 19:49 5386使用mysqlbinlog查看二进制文件发现 /*!40019 ... -
auto-rehash
2012-11-05 19:20 4120mysql auto-rehash:读取表信息和列信 ... -
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
2012-09-19 20:21 767MySQL主从复制(Master-Slave)与读写分离(My ... -
mysql显示见表语句
2012-09-03 19:13 1168show create table mysql.slow_l ... -
mysql主从同步延迟问题
2012-08-30 14:18 847见http://www.ixpub.net/thread-13 ... -
二进制日志文件
2012-08-29 19:33 1106mysqld在每个二进制日志 ... -
备份恢复数据库
2012-08-28 20:18 823全备份 mysqldump -utest -ptest -- ... -
mysql用户修改密码
2012-08-28 19:37 759mysqladmin -utest -ptest passwo ... -
set session sql_log_bin=0
2012-08-21 15:22 3964引自http://blog.sina.com.cn/s/blo ... -
字符串转换成date
2012-08-15 20:00 911SELECT STR_TO_DATE('Tue 05 June ... -
selecting top N records per group
2012-08-15 18:56 901http://code.openark.org/blog/my ... -
MySQL DELAY_KEY_WRITE
2012-08-02 20:03 1130MySQL DELAY_KEY_WRITE 引自http:// ... -
Mysql Merge表的优点
2012-07-09 13:52 935在Mysql数据库中,Mysql Me ...
相关推荐
你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗? 还是先抛几条结论吧: 1、存储的时候,CHAR总是会补足空格后再存储,不管用户插入数据时尾部有没有包含空格。 2、存储的时候,VARCHAR不会先补足空格后再存储...
在本篇文章中我们给大家分享了关于MySQL中int、char以及varchar的性能对比的相关内容,有兴趣的朋友们学习下。
char是一种固定长度的类型,varchar则是一种可变长度的类型,那么他们具体使用过程中有什么区别吗
char和varchar在mysql中的效率怎样.docx
在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char.。这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是 从数据的保存方式来看,两者相差很大。而且其具体的实现方式,还依赖与存储引擎。我...
主要介绍了MYSQL中 char 和 varchar的区别,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
主要介绍了Mysql中varchar长度设置方法的相关资料,本文还给大家带来了valar类型的变化及char()和varchar()的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下
char与varchar的区别 char (13)长度固定, 如’www.jb51.net’ 存储需要空间 12个字符 varchar(13) 可变长 如’www.jb51.net’ 需要存储空间 13字符, 从上面可以看得出来char 长度是固定的,不管你存储的数据是多少...
在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。 它们的存储方式和数据的检索方式也都不一样。 数据的检索效率是:char > varchar ...
如下表: 先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序 ...SELECT to_char(to_date(m.ma_datetime,'yyyy-MM-dd hh24:mi:ss'), 'yyyyMMdd') FROM my_task m; m.ma_datet
浅析Oracle中char和varchar2的区别 电脑资料.docx
有的小伙伴在学习数据库的时候,创建表结构的时候不小心把某字段设置成了varchar但是在统计求和的时候就傻眼了,接下来跟着小编学习一下,不用改该列数据类型也能求和的方法吧! 1、打开 数据库连接客户端Navicat ...
MySQL数据库的varchar类型在5.0.3以下的版本中的最大长度限制为255,其数据范围可以是0~255
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。 1、限制规则 字段的限制在字段定义的时候有以下规则: a) 存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节...