1、作用:姓名,地址,描述类的信息
2、分类:
char 定长
varchar 变长
3、测试:字符的宽度限制单位是字符个数
create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符
create table t13(y varchar(4));# 超出4个字符则报错,不够4个字符那么字符有几个就存几个
insert into t12 values('hello');
insert into t13 values('hello');
insert into t12 values('a'); #'a '
insert into t13 values('a'); #'a'
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";
select char_length(x) from t12; #4
select char_length(y) from t13; #1
# 注意:
针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中
但会在读出结果时自动去掉末尾的空格,因为末尾的空格在以下场景中是无用
mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用
mysql> select * from t14 where name like "lxx"; # name字段模糊匹配一个值,该值后填充空格是有用的
#当你在使用模糊搜索时,要注意定长字符后面可能会有空格所以最好在后面加上百分号%
select * from t19 where name like"%xx%";
%任意个数的任意字符
_1个任意字符
# 对比char与varchar
name char(5)
# 缺点:浪费空间
# 优点:存取速度都快
egon alex lxx wxx yx
name varchar(5)
# 缺点:存取速度都慢
# 优点:节省空间
(1bytes+egon)(1bytes+alex)(1bytes+lxx)