CHAR 和 VARCHAR 类型
发布时间:2021-05-22 18:04:08 所属栏目:MySql教程 来源:互联网
导读:CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。 例如,CHAR(4) 定义
CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。 例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当检索到 CHAR 值时,尾部的空格将被删除。 VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。 例如,VARCHAR(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。VARCHAR 在值保存和检索时尾部的空格仍保留。 【实例】下面将不同的字符串保存到 CHAR(4) 和 VARCHAR(4) 列,说明 CHAR 和 VARCHAR 之间的差别,如下表所示。 插入值 CHAR(4) 存储需求 VARCHAR(4) 存储需求 ' ' ' ' 4字节 '' 1字节 'ab' 'ab ' 4字节 'ab' 3字节 'abc' 'abc ' 4字节 'abc' 4字节 'abcd' 'abcd' 4字节 'abcd' 5字节 'abcdef' 'abcd' 4字节 'abcd' 5字节 对比结果可以看到,CHAR(4) 定义了固定长度为 4 的列,无论存入的数据长度为多少,所占用的空间均为 4 个字节。VARCHAR(4) 定义的列所占的字节数为实际长度加 1。 TEXT 类型 TEXT 列保存非二进制字符串,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。 TEXT 类型分为 4 种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 类型的存储空间和数据长度不同。 TINYTEXT 表示长度为 255(28-1)字符的 TEXT 列。 TEXT 表示长度为 65535(216-1)字符的 TEXT 列。 MEDIUMTEXT 表示长度为 16777215(224-1)字符的 TEXT 列。 LONGTEXT 表示长度为 4294967295 或 4GB(232-1)字符的 TEXT 列。 ENUM 类型 ENUM 是一个字符串对象,值为表创建时列规定中枚举的一列值。其语法格式如下: <字段名> ENUM( '值1', '值1', …, '值n' ) 字段名指将要定义的字段,值 n 指枚举列表中第 n 个值。ENUM 类型的字段在取值时,能在指定的枚举列表中获取,而且一次只能取一个。如果创建的成员中有空格,尾部的空格将自动被删除。 ENUM 值在内部用整数表示,每个枚举值均有一个索引值;列表值所允许的成员值从 1 开始编号,MySQL 存储的就是这个索引编号,枚举最多可以有 65535 个元素。 例如,定义 ENUM 类型的列('first','second','third'),该列可以取的值和每个值的索引如下表所示。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |