不同字符集的数据库不代表其所有字段的字符集都是库所使用的字符集,每个字段可以拥有自己独立字符集!库的字符集是约束字段的字符集!

不同字符集的数据库不代表其所有字段的字符集都是库所使用的字符集,每个字段可以拥有自己独立字符集!库的字符集是约束字段的字符集!

不同字符集的数据库不代表其所有字段的字符集都是库所使用的字符集,每个字段可以拥有自己独立字符集!库的字符集是约束字段的字符集!

建表DDL语句 + Insert DML语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for testChatSet
-- ----------------------------
DROP TABLE IF EXISTS `testChatSet`;
CREATE TABLE `testChatSet` (
  `utf8mb4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `utf16` varchar(255) CHARACTER SET utf16 COLLATE utf16_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of testChatSet
-- ----------------------------
BEGIN;
INSERT INTO `testChatSet` (`utf8mb4`, `utf16`) VALUES ('abc', 'abc');
INSERT INTO `testChatSet` (`utf8mb4`, `utf16`) VALUES ('你好么', '你好么');
INSERT INTO `testChatSet` (`utf8mb4`, `utf16`) VALUES ('123', '123');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

查询语句

SELECT
	utf8mb4 AS 'utf8',
	utf16 AS 'utf16',
	CHARACTER_LENGTH( utf8mb4 ) AS 'utf8字符长度',
	CHARACTER_LENGTH( utf16 ) AS 'utf16字符长度',
	CHARSET( utf8mb4 ) AS 'utf8字符集',
	CHARSET( utf16 ) AS 'utf16字符集',
	length( utf8mb4 ) AS 'utf8字节长度',
	length( utf16 ) AS 'utf16字节长度'
FROM
	testChatSet;

输出:

utf8字段utf16字段utf8字符长度utf16字符长度字符集类型字符集类型utf8字节长度utf16字节长度
11utf8mb4utf1632
aa11utf8mb4utf1612
1111utf8mb4utf1612
👌🏻👌🏻22utf8mb4utf1688

结论

MySQL在UTF8下1个中文字符占用3个字节。英文、阿拉伯数字占用1个字节

MySQL在UTF16下1个中文字符占用2个字节,英文、阿拉伯数字也是占用2个字节

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤