MySQL——字符串和二进制类型

发布于:2024-08-02 ⋅ 阅读:(93) ⋅ 点赞:(0)

        为了存储字符串、图片和声音等数据, MySQL提供了字符串和二进制类型。下表列举了 MySQL中的字符串和二进制类型。

数据类型 类型说明
CHAR 用于表示固定长度的字符串
VARCHAR 用于表示可变长度的字符串
BINARY 用于表示固定长度的二进制数据
VARBINARY 用于表示可变长度的二进制数据
BLOB 用于表示二进制大数据
TEXT 用于表示大文本数据
ENUM 表示枚举类型,只能存储一个枚举字符串值
SET 表示字符串对象,可以有零或多个值
BIT 表示位字段类型

        表中列举的字符串和二进制类型中,不同数据类型具有不同的特,接下来,针对这些数据类型进行详细的讲解,具体如下。

1、CHAR 和 VARCHAR 类型

        CHAR 和 VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR 可以存储可变长度的字符串。在 MySQL中,定义 CHAR 和 VARCHAR 类型的方式如下所示:

CUAR(M) 或 DVARCHAE (M)

        在上述定义方式,,M 指的是字符串的最大长度。为了帮助读者更好地理解 CHAR和 VARCHAR 之间的区别,下面以CHAR(4)和 VARCHAR(4)为例进行说明,具体如表 2-5 所示。
表2-5 CHAR(4)和 VARCHAR(4)对比

插入值
 
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 个字节。而 VARCHAR(4) 所对应的数据所占用的字节数为实际长度加 1 。

2、BINARY 和 VARBINARY 类型

        BINARY和 VARBINARY类型类似于 CHAR 和 VARCHAR,不同的是,它们所表示的是二进制数据。定义 BINARY和 VARBINARY类型的方式如下所示:

BINARY(M) 或 VARBINARY (M)

        在上述格式中,M 指的是二进制数据的最大字节长度。

        需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用 " \0 " 补齐,最终达到指定长度。例如,指定数据类型为 BINARY(3),当插入a时,实际存储的数据为 " a\0\0 " ,插人 ab 时,实际存储的数据为 " ab\0 "。

3、TEXT 类型

        TEXT 类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为4种,具体如下表所示。

数 据 类 型 存 储 范 围 数 据 类 型 存 储 范 围
TINYTEXT 0~255 字节 MEDIUMTEXT 0~16 777 215 字节
TEXT 0~65 535 字节 LONGTEXT 0~4 294 967 295 字节

4、BLOB 类型

        BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF 文档等。BLOB类型分为四种,具体如下表所示。

数 据 类 型 存 储 范 围 数 据 类 型 存储范围
TINYBLOB 0~255 字节 MEDIUMBLOB 0~16 777 215 字节
BLOB 0~65 535 字节 LONGBLOB 0~4 294 967 295 字节

        需要注意的是,BLOB 类型与 TEXT类型很相似,但 BLOB 类型数据是根据二进制编码进行比较和排序,而 TEXT 类型数据是根据文本模式进行比较和排序。

5、ENUM 类型

        ENUM 类型又称为枚举类型,定义 ENUM 类型的数据格式如下所示:

ENUM('值1','值 2','值 3',…,'值 n')

        在上述格式中,("值1,"值2,值3,…,"值n) 称为枚举列表,ENUM 类型的数据只能从枚举列表中取,并且只能取一个。需要注意的,枚举列表中的每个值都有一个顺序编号,MySQL 中存入的就是这个顺序编号,而不是列表中的值。

6、SET 类型

        SET类型用于表示字符串对象,它的值可以有零个或多个,SET类型数据的定义格式与 ENUM 类型类似,具体语法格式如下所示:

SET('值 1',"值 2',"值 3',…,'值 n')

        与 ENUM 类型相同,("值1',"值 2',"值 3,…,值 n) 列表中的每个值都有一个顺序编号,MySQL中存人的也是这个顺序编号,而不是列表中的值。

7、BIT 类型

        BIT类型用于表示二进制数据。定义 BIT类型的基本语法格式如下所示,

BIT (M)

        在上述格式中,M用于表示每个值的位数,范围为1~64。需要注意的是,如果分配的 BIT(M)类型的数据长度小于 M,将在数据的左边用 0 补齐。例如,为 BIT(6) 分配值 b'101’ 的效果与分配 b'000101' 相同。