char 和 varcahr的区别(面试题)

char 和 varcahr的区别(面试题)

char 和 varcahr的区别(面试题)_第1张图片

#演示字符串类型使用 char字符 varchar字节
#注释的快捷键 shift + ctrl + c,注销注释 shift + ctrl + r
-- CHAR(size)
-- 固定长度字符串 最大 255 字符
-- VARCHAR(size) 0 ~ 65535 字节
-- 可变长度字符串 最大 65532 字节 【utf8 编码最大 21844 字符 1-3 个字节用于记录大小】
-- 如果表的编码是 utf8 varchar(size) size = (65535-3) / 3 = 21844
-- 如果表的编码是 gbk varchar(size) size = (65535-3) / 2 = 32766
CREATE TABLE t09 (
	`name` CHAR(255));
	
CREATE TABLE t10 (
	`name` VARCHAR(32766)) CHARSET gbk;

DROP TABLE t10;

使用细节

char 和 varcahr的区别(面试题)_第2张图片

char 和 varcahr的区别(面试题)_第3张图片

char 和 varcahr的区别(面试题)_第4张图片

char 和 varcahr的区别(面试题)_第5张图片

#演示字符串类型的使用细节
#char(4) 和 varchar(4) 这个 4 表示的是字符,而不是字节, 不区分字符是汉字还是字母
CREATE TABLE t11(
`name` CHAR(4));
INSERT INTO t11 VALUES('张三李四');
SELECT * FROM t11;
CREATE TABLE t12(
`name` VARCHAR(4));
INSERT INTO t12 VALUES('迪丽热巴');
INSERT INTO t12 VALUES('ab 北京');
SELECT * FROM t12;
#如果 varchar 不够用,可以考试使用 mediumtext 或者 longtext, #如果想简单点,可以使用直接使用 text
CREATE TABLE t13( content TEXT, content2 MEDIUMTEXT , content3 LONGTEXT);
INSERT INTO t13 VALUES('xjz_2002', 'xjz_2002 666', 'xjz_2002 6666~~');
SELECT * FROM t13;

char 和 varcahr的区别(面试题)_第6张图片

utf8编码(默认):一个汉字占三个字节,一个英文占一个字节

gbk编码中:一个汉字或英文都是占两个字节

你可能感兴趣的:(MySQL,mysql)