写点什么

数据类型

用户头像
在即
关注
发布于: 2021 年 03 月 14 日
数据类型


CHAR(4):无论插入值的长度是多少,占用的存储空间都是 4 个字节。

VARCHAR(4):占用的字节数为实际长度加 1。

TEXT 类型:保存大文本数据。

例如,文章内容、评论等比较长的文本。

保存的最大字符数量取决于字符串实际占用的字节数。

空格问题:

CHAR 和 VARCHAR 类型在插入数据时,若字符串末尾有空格,

CHAR 类型会自动去掉空格后保存,而 VARCHAR、TEXT 类型会保留空格。

对于空格的比较:

使用“=”等运算符对 CHAR、VARCHAR、TEXT 进行比较时,

字符串末尾的空格会被忽略。


例如:

使用 WHERE 查询 'a' 字符串,查询结果中可能包含 a 后面有空格的情况;

若查询条件字符串末尾有空格(如 'a '),空格也会被忽略。


不区分大小写:

默认情况下创建的数据库和表使用的校对集(latin1swedishci)

对大小写不敏感,因此 CHAR、VARCHAR、TEXT、ENUM、SET

都不区分大小写。


例如:

WHERE 查询 'a' 字符串,则“a”和“A”都会被查询出来。


区分大小写:

BINARY、VARBINARY、BLOB 类型区分大小写,它们使用二进制方式保存数据。


长度限制:

MySQL 默认规定一条记录的最大长度是 65535 字节。

一般来说,字段分配的存储空间和额外开销加在一起不能超过 65535 字节。


如果超过了这个限制,会创建失败,提示“Row size too large”。

(在 SQL 模式为严格模式的情况下)


长度限制:

TEXT 和 BLOB 类型字段的存储空间不受此限制,

它们只占用额外开销(大约 12 字节左右)。

长度限制:

在没有超过 65535 限制的情况下:

CHAR 字段的 M 最大值为 255;

VARCHAR 字段的 M 的最大值取决于字符集。


长度限制:

以下是常用的 字符集 和对应的 M 最大值。

latin1:65533 (默认字符集)

gbk:32766

utf8:21844


长度限制:

若表中只有一个字段且设置了非空约束,M 可达到最大值,

否则 M 的最大值会减小。


latin1

mysql> CREATE TABLE my_varchar1 (c VARCHAR(65533) NOT NULL);

Query OK, 0 rows affected (0.01 sec)

utf8

mysql> CREATE TABLE my_varchar2 (c VARCHAR(21844) CHARSET utf8);

Query OK, 0 rows affected (0.02 sec)


执行效率对比:

TEXT 和 BLOB 不如 CHAR、VARCHAR 类型,

建议只有当需要保存大量数据时,才选择使用 TEXT 或 BLOB 类型。


收工

发布于: 2021 年 03 月 14 日阅读数: 10
用户头像

在即

关注

还未添加个人签名 2021.02.27 加入

还未添加个人简介

评论

发布
暂无评论
数据类型