码迷,mamicode.com
首页 > 其他好文 > 详细

7、字符型

时间:2019-10-13 00:51:31      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:ext   into   i+1   code   ascii   入库   删掉   sam   values   

char -- varchar -- text -- blod

1、char和varchar分别称为定长和变长类型

  • 定长效率高,查找行纪录时,如果都是定长,完全可以通过行数与行的长度计算出来,文件指针的偏移量
    如:char(6),想查找第三个人名,指针只需从存储的首地址往后移动3*6=18个字符就行。
  • 定长浪费空间,不论够不够指定长度,实际都占据N个长度,如果不够N个长度,用空格在末尾补至N个长度
    如:char(N),不够N个长度,用空格在尾部补够N个长度,浪费了尾部
  • char型,不够M格字符用空格补,取出的时候再把右侧的空格删掉,这意味者,如果右侧本身有空格,将会丢失。
  • 对于varchar(N),不用空格补齐,但是在列内容前,用1-2个字节来标志该列的长度
  • 定长字符空间利用率能达到100%;变长类型不能,每个字段需要额外的1~2个字节存储该字段的长度。
  • 注意:char(M),varchar(M)限制的是字符,不是字节。
    如char(2) charset utf8,能存2个utf8字符,比如“中国”,“ab”。
类型宽度可存字符实际字符(i<=M)实占空间利用率
char M M i M i/M<=100%
varchar M M i i字符+(1~2)字节 i/(i+1~2)<100%

char(M),M代表宽度,0<=M<=255之间
varchar(M),M代表宽度,0<=M<=65535(以ascii字符为例,utf8 22000左右)

create table test(
ca char(6) not null default ‘‘,
vca varchar(6) not null default ‘‘
)engine myisam charset utf8;

insert into test values (‘aa ‘,‘aa ‘);
select concat(ca,‘!‘), concat(vca,‘!‘) from test;

+----------------+-----------------+
| concat(ca,‘!‘) | concat(vca,‘!‘) |
+----------------+-----------------+
| aa!            | aa !            |
+----------------+-----------------+
1 row in set
显示:char类型字符后的空格丢失

2、text

  • 文本类型,可以存储比较大的文本字段,搜索速度稍慢,因此不是特别大的字符,建议用char,varchar来代替。
  • 一般用来存储文章内容,新闻内容等
  • text不用加默认值(加了也没用)

代码:

create table test2(
article text
);

3、blob的意义

  • blob是二进制类型,用来存储图像、音频等二进制信息。
  • 意义:2进制,0-255都有可能出现,blob在于防止因为字符集的问题,导致信息的丢失
    比如:一张图片中有0XFF字节,这个在ascii字符集认为非法,在入库的时候,被过滤了

代码:

alter table test2 add img blob;

7、字符型

标签:ext   into   i+1   code   ascii   入库   删掉   sam   values   

原文地址:https://www.cnblogs.com/Stephanie-boke/p/11664494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!