038 - char and varchar

文档:MySQL :: MySQL 5.7 Reference Manual :: 11.3.2 The CHAR and VARCHAR Types

列的长度CHAR固定为您在创建表时声明的长度。长度可以是 0 到 255 之间的任意值。CHAR 存储值时,会在右侧用空格填充到指定的长度。

列中的值VARCHAR是可变长度字符串。长度可以指定为 0 到 65,535 之间的值。a 的有效最大长度 VARCHAR取决于最大行大小(65,535 字节,在所有列之间共享)和使用的字符集。

 

下表通过显示将各种字符串值存储到和列中的结果来说明 CHAR和 之间的差异 (假设该列使用单字节字符集,例如)。 VARCHARCHAR(4)VARCHAR(4)latin1

价值 CHAR(4) 需要存储 VARCHAR(4) 需要存储
'' '    ' 4字节 '' 1字节
'ab' 'ab  ' 4字节 'ab' 3字节
'abcd' 'abcd' 4字节 'abcd' 5字节
'abcdefgh' 'abcd' 4字节 'abcd' 5字节

 

-- 创建表
CREATE TABLE test_char (a CHAR(4), b VARCHAR(4))

--  查询表结构
DESC test_char

-- 插入数据
INSERT INTO test_char (a ,b) VALUES ('abcd', 'efgh')

-- 查看表数据
SELECT * FROM test_char

-- CHAR_LENGTH(str) 表示的是页面展示的长度,LENGTH(str)表示的是存储的长度(空间 bytes),
-- 他们并不能表示char在内存里面声明的空间
-- 查询表字段页面展示长度
SELECT CHAR_LENGTH(a), CHAR_LENGTH(b) FROM test_char

-- 查询表字段存储长度
SELECT LENGTH(a),LENGTH(b) FROM test_char

你可能感兴趣的:(数据库,数据库)