数据库中存放密码

MySQL CHAR和VARCHAR那些事

烂漫一生 提交于 2019-12-05 15:29:59
我们知道 CHAR(M) 和 VARCHAR(M) 的区别就是 VARCHAR(M) 是变长的字符串,而 CHAR(M) 是定长的字符串。我们暂时先不考虑变长和定长的问题,我们先来看一看 CHAR(M) 和 VARCHAR(M) 中的 M 代表的是什么意思。 在 oracle 中 CHAR(M) 和 VARCHAR(M) 中的 M 代表的是字节数就是这个列占用的最大字节数。而在 MySQL 中 CHAR(M) 和 VARCHAR(M) 中的 M 代表的是这个列占用的最大字符数。这是什么意思呢?下面我们在 MySQL 中创建一张表来测试一下就明白了。 DROP TABLE IF EXISTS `char_test`; CREATE TABLE `char_test` ( `ch` char(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; char_test 表非常简单,只有一个字段 ch ,他的类型是 CAHR(4), 用的是 utf-8 编码,接下来在 char_test 表中插入三行数据。 图 1 :正常插入数据 我们用 MySQL 提供给我们的函数 length(str), 和 char_length(str) ,来查看表 char_test 中的 ch 字段的字节数和字符数如下: 图 2 :字节数和字符数 因为是用