【MySQL数据类型3之--字符类型】

MySQ字符类型大致可以分成(MySQL 5.0)

CHAR(M)0-255字节

VARCHAR(M)0-65535字节

TINYBLOBMEDIUMBLOBBLOBLONGBLOB(实际长度分别+1,3,2,4)

TINYTEXTMEDIUMTEXTTEXTLONGTEXT(实际长度分别+1,3,2,4)

BINARY(M):0-M字节

VARBINARY(M):实际长度+1

 

MySQL其他类型大致可以分成(MySQL 5.0)

ENUM(枚举类型):1~65535个成员 12个字节

SET1--8字节

详细范围可以参考帮助手册

 

1.CHAR、VARCHAR、XXXTEXT

 create table test4(c1 char(7),varchar(7));

insert test4 values(' a ',' a ');

mysql> select length(c1),length(c2),concat(c1,'yes'),concat(c2,'yes')

    -> from test4;

+------------+------------+------------------+------------------+

| length(c1) | length(c2) | concat(c1,'yes') | concat(c2,'yes') |

+------------+------------+------------------+------------------+

|          2 |          3 |  ayes            |  a yes           |

+------------+------------+------------------+------------------+

可以很明显看出,char类型和varchar类型的前空格在检索时不会被省略,但是尾部空格就不一样了,char类型尾部空格是忽略的,varchar类型则反之;

至于varcharTEXT是完全一样的(以前的版本的是和TINYTEXT版本一样),唯一的区别在于TEXT的上限是确定的,不需要特定区设置一个宽度,但是varchar类型需要自己设定。

 

 

2..xxxBLOB BINARY(M) VARBINARY(M):

  它们的都是存储二进制字符串的字段类型。他们与文本的区别是排序是按照二进制编码进行的,使得排序更加准确。

 

3.ENUM

 mysql> create table test5(en enum('A','B'));

mysql> insert test5 select 'a';

mysql> insert test5 select null;

mysql> select * from test5;

+------+

| en   |

+------+

| A    |

| NULL |

+------+

mysql> insert test5 select 'c';

mysql> show warnings;

+-------+------+-----------------------------------------+

| Level | Code | Message                                 |

+-------+------+-----------------------------------------+

| Error | 1265 | Data truncated for column 'en' at row 1 |

+-------+------+-----------------------------------------+

在我的5.1测试版本上 插入的值如果有必要,会转化成大写;再插入枚举列表以外的值,出错;在5.0中,插入枚举列表以外的值,自动转化成枚举列表的第一个值;

 

4.SET类型

mysql> create table test6(col SET('1','2','3','a','6'));

mysql> insert test6 values('1,2'),('1,2,3,a'),('1,1,2,2,3,3');

mysql> select * from test6;

+---------+

| col     |

+---------+

| 1,2     |

| 1,2,3,a |

| 1,2,3   |

+---------+

mysql> insert test6 select 'ak47';

mysql> show warnings;

+-------+------+------------------------------------------+

| Level | Code | Message                                  |

+-------+------+------------------------------------------+

| Error | 1265 | Data truncated for column 'col' at row 1 |

+-------+------+------------------------------------------+

可以插入任意组合的值,当输入重复的枚举值的时候会自动去重;当插入不存在的组合时候,报错;

                                          

                                                         参考文献:深入浅出MySQL(网易)

                                 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值