MySQL中CHAR和VARCHAR
来源:互联网 发布:网络分层结构模型 编辑:程序博客网 时间:2024/05/17 06:27
MySQL数据库的字符(串)类不要以为字符类型就是CHAR,CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(10),那么不论你存储的数据是否达到了10个字节,它都要占去10个字节的空间;而VARCHAR则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为VARCHAR(10)是最合算的,VARCHAR类型的占用空间是它的值的实际长度+1。
为什么要+1呢?这一个字节用于保存实际使用了多大的长度。从这个+1中也应该看到,如果一个字段,它的可能值最长是10个字符,而多数情况下也就是用到了10个字符时,用VARCHAR就不合算了:因为在多数情况下,实际占用空间是11个字节,比用CHAR(10)还多占用一个字节。
举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即8个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用CHAR(8);股票代码虽然是不固定长度,但如果使用VARCHAR(6),一个深圳的股票代码实际占用空间是5个字节,而一个上海的股票代码要占用7个字节!考虑到上海的股票数目比深圳的多,那么用VARCHAR(6)就不如CHAR(6)合算了。
虽然一个CHAR或VARCHAR的最大长度可以到255,我认为大于20的CHAR是几乎用不到的――很少有大于20个字节长度的固定长度的东东吧?不是固定长度的就用VARCHAR。大于100的VARCHAR也是几乎用不到的――比这更大的用TEXT就好了。
TINYTEXT,最大长度为255,占用空间也是实际长度+1;TEXT,最大长度65535,占用空间是实际长度+2;MEDIUMTEXT,最大长度16777215,占用空间是实际长度+3;LONGTEXT,最大长度4294967295,占用空间是实际长度+4。为什么+1、+2、+3、+4?你要是还不知道就该打PP了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。
例子:
创建表:
mysql> createtabletab1(colchar(10));QueryOK, 0 rowsaffected (0.21 sec) mysql> insertintotab1values('string1'),(' string2'),('string3 ');QueryOK, 3 rowsaffected (0.04 sec)Records: 3 Duplicates: 0 Warnings: 0
char末尾空格已经被删除
mysql> selectconcat("'",col,"'") fromtab1;+---------------------+| concat("'",col,"'") |+---------------------+| 'string1' || ' string2' || 'string3' |+---------------------+3 rowsin set (0.84 sec)
varchar就不会删除空格:
mysql> createtabletab2(colvarchar(10));QueryOK, 0 rowsaffected (0.38 sec) mysql> insertintotab2values('string1'),(' string2'),('string3 '); QueryOK, 3 rowsaffected (0.04 sec)Records: 3 Duplicates: 0 Warnings: 0 mysql> selectconcat("'",col,"'") fromtab2;+---------------------+| concat("'",col,"'") |+---------------------+| 'string1' || ' string2' || 'string3 ' |+---------------------+3 rowsin set (0.09 sec)
MySQL中CHAR和VARCHAR
- MySQL中CHAR和VARCHAR
- MySQL中CHAR和VARCHAR
- 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中CHAR和VARCHAR类型演变和详解
- mysql中char和varchar,where和having的区别
- mysql sql 中char 和 varchar 的区别
- Spring + Mybatis + SpringMvc 框架搭建小结
- 关于Hessian一些报错的解决方案总结
- Memcache介绍、安装、使用(二)
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。
- #413 Reverse Integer
- MySQL中CHAR和VARCHAR
- RxJava与Retrofit的封装
- QGraphicsView有什么方法可以限制其大小不变
- mvn test执行单元测试一个类
- 3626: [LNOI2014]LCA
- js总结
- 371. Sum of Two Integers(位运算)
- nncq---见证子系统(检测人员管理--机构信用评价)
- HDU 1503(字符串,合并输出)