前言,在探索这个问题之前,我们需要了解 mysql 的一个基本概念。mysql 有三种数据类型,数值型、字符串型、日期型,其中字符串类型需要设置字符集。如果不设置,在创建表结构的时候会默认使用数据库的字符集。
1.准备两个测试表(test_a, test_b)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| CREATE TABLE `test_a` ( `id` bigint NOT NULL COMMENT '主键编号', `test_bigint` bigint DEFAULT NULL COMMENT 'utf8的bigint', `test_varchar_utf8` varchar(255) DEFAULT NULL COMMENT 'utf8的varchar', `test_varchar_utf8mb4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'utf8mb4的varchar', PRIMARY KEY (`id`), KEY `idx_test_bigint` (`test_bigint`) USING BTREE COMMENT 'test_bigint索引', KEY `idx_test_varchar_utf8` (`test_varchar_utf8`) USING BTREE COMMENT 'test_varchar_utf8索引', KEY `idx_test_varchar_utf8mb4` (`test_varchar_utf8mb4`) USING BTREE COMMENT 'test_varchar_utf8mb4索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `test_b` ( `id` bigint NOT NULL COMMENT '主键编号', `test_bigint` bigint DEFAULT NULL COMMENT 'utf8的bigint', `test_varchar_utf8` varchar(255) DEFAULT NULL COMMENT 'utf8的varchar', `test_varchar_utf8mb4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'utf8的varchar', PRIMARY KEY (`id`), KEY `idx_test_bigint` (`test_bigint`) USING BTREE COMMENT 'test_bigint索引', KEY `idx_test_varchar_utf8` (`test_varchar_utf8`) USING BTREE COMMENT 'test_varchar_utf8索引', KEY `idx_test_varchar_utf8mb4` (`test_varchar_utf8mb4`) USING BTREE COMMENT 'test_varchar_utf8mb4索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|