一.字符类型包括:
char
varchar
text
二.字符类型详细介绍表
类型 | 说明 | 典型声明 | 范围 | M值说明 |
char | 定长字符串 | gender char(1) | char(M) 0=<M<=255 | M代表可容纳的字符数,并非字节数 |
varchar | 变长字符串 | email varchar(20) | varchar(M) 0<=M<=65535 约2万到6万个字符,受字符集影响 | M代表可容纳的字符数,并非字节数 |
text | 文本串 | content text | 约2万到6万个字符,受字符集影响 | M代表可容纳的字符数,并非字节数 |
1.创建学生表
create table stu
(
name char(8) not null default '',
waihao varchar(10) not null default ''
)charset utf8;
执行结果:
2.插入数据
insert into stu
(name,waihao)
values
('穆罕默德阿帕奇','小三')
结果:
由插入的name值可以看出M值代表的是字符。而不是字节。
四.char与varchar的区别
1.char(M) 是定长, 如果存入数据小于M个字符,实占M个字符。
2.varchar(M)是变长,如果存入的数据小于M个字符,假如输入N个字符(N<=M),则实战N个字符。
3.char 与varchar 实占空间分析表
类型 | 宽度 | 可存字符 | 实存字符(i<=M) | 实占空间 | 利用率 |
char | M | M | i | M | <=100% |
varchar | M | M | i | i字符+(1-2)字节 | <100% |
由空间分析表可得:
varchar类型有一定的资源浪费,
以公交车 举例,
char类型好比 短途 市区 公交 ,每次只需投币1元,不论你做几站,都是定长的1元。
varchar类型好比市区到郊区的 长途公交,可根据乘车距离定站 收费,但是需要浪费 一个乘务员收费,需要占据一定的空间,
4.char类型如空间有剩余,则 以空格填充。
5.速度比较,定长的速度 比变长 高,
变长的空间利用率比定长高。
五.text类型
主要存放比较大的内容时使用。
搜索比较慢,
不能用默认值,写了默认值也不起作用。