字符类型

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)





posted @ 2018-09-22 21:34  不沉之月  阅读(766)  评论(0编辑  收藏  举报