您的位置:首页 > 数据库 > MySQL

数据库MYSQL学习总结6—数据类型之字符串类型

2019-04-13 16:59 316 查看
版权声明:. https://blog.csdn.net/WildestDeram/article/details/89282145

测试char和varchar的例子

[code]CREATE TABLE test_str(
a CHAR(5),
b VARCHAR(5)
)

添加数据

根据第一条添加的数据可以分析:a所占的字节大小是5个,而b是长度+1,也就是1个

[code]INSERT test_str(a,b) VALUES('','');
INSERT test_str(a,b) VALUES('a','b');
INSERT test_str(a,b) VALUES('ab','ab');
INSERT test_str(a,b) VALUES('abc','abc');
INSERT test_str(a,b) VALUES('abcd','abcd');
INSERT test_str(a,b) VALUES('abcde','abcde');

同样的如果超过字节长度,也会自动进行截取操作。

空格也算是一个字节占位

[code]INSERT test_str(a,b) VALUES(' 123 ',' 123 ');

 MySQL中连接字符串

[code]SELECT CONCAT('*',a,'*'),CONCAT('*',b,'*') FROM test_str;

char在保存值的时候,内容达不到字节长度,则会用空格来填充指定长度 。但是在查找数据的时候会把后面空格去掉。

总结:

CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间

CHAR默认存储数据的时候,后面会用空格填充到指定长度;而检索的时候会去掉后面的空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下。

TEXT列不能有默认值

测试ENUM和SETl类型

[code]CREATE TABLE test_enum(
sex ENUM('男','女','保密')
);

INSERT test_enum(sex) VALUES('男');

如果存入不存在的数据,则无法录入数据,会报错。 ENUM的编号是从1开始,当然如果插入不存在的编号数据,则会报错。

如果插入的枚举中有空格,也是可以录入,因为枚举类型会自动过滤掉空格

 

枚举类型的值只能从里面获取一个,而集合类型的值可以从里面获得多个。

测试SET

[code]CREATE TABLE test_set(
a SET('A','B','C','D','E','F')
);

INSERT test_set(a) VALUES('A');
INSERT test_set(a) VALUES('C');
INSERT test_set(a) VALUES('C,D,E');
INSERT test_set(a) VALUES('C,F,A');

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: