小能MySQL笔记 第五课

接下来学习char,varchar,text,blob 字符串型

 

char----定长类型

varchar---变长类型

比如一张表

姓名char(6)     思考:在硬盘上寻找第三行的姓名并读出来

1.张三

2.李小欣

3.黄石因子

张三,两个字,李小欣三个字,黄石因子四个字,不考虑内容长度,不论够不够指定长度,实际都占据N个长度,如果不够N个长度,用空格在末尾补至N个长度。对于char(N),不够N个长度,用空格在尾补够N个长度,浪费了尾部

 

 

varchar(100),也能存储0-100字符。

姓名varchar(20)

1.张三

2.李小欣

3.黄石因子

生活中坐车,一种是不分远近,统一投币,对公司来说,效率高,省了一个售票员,但是近路相对吃亏,而长途车,加一个售票员,专门来记录,客户的站数。char相对于公交,varchar相当于长途车。

varchar(N)不用空格补齐,但列内容前,有1-2个字节来标志该列的内容长度。

 

 

create table test(

    -> ca char(6) not null default'',

    -> var varchar(6) not null default ''

    -> )engine myisam charset utf8;

 

//concat函数,连接字符串用的

 

为什么char的空格不见了?

char型,如果不够M个字符,内部用空格补齐,取出时再把右侧空格删掉,这就意味着,如果右侧本身有空格,那么本身的空格将会丢失。

 

注意:char(M)和varchar(M)限制的是字符,而不是字节。即char(2) charset uft8,能存2个utf8字符。

 

还有一种错误认识,既然是字符,6个utf8中文,18个字节,那存两个单词不成问题吧?

在mysql5.1中会报错提示

 

文本类型--test,一般用来存储文章内容,新闻内容等。声明:test列时,不必给默认值。

 

blob的意义:blob是二进制类型,用来存储图像,音频等二进制信息。blob在于防止字符集的问题导致信息丢失,比如一张图中有OXFF字节,在ASCII字符集中认为非法,在入库的时候被过滤,因此下次再取照片的时候,照片被损坏。

 

发布了33 篇原创文章 · 获赞 4 · 访问量 3733

猜你喜欢

转载自blog.csdn.net/linux2422988311/article/details/104224958