企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
字符串类型常用的包括:char, varchar, text, enum, set,分述如下: ## 6.5.1.定长字符char和变长字符varchar * 定长字符类型char: 适用于存储的字符长度为固定长度的字符,比如中国邮政编码,中国身份证号码,手机号码等。 设定形式: 字段名称 char(字符个数) 其特点是: 1,存储的字符长度固定,最长可设定为255个字符。 2,如果实际写入的字符不足设定长度,内部会自动用空格填充到设定的长度。 3,相对varchar类型,其存取速度更快。 * 变长字符类型varchar: 适用于存储字符长度经常不确定的字符,比如姓名,用户名,标题,内容,等大多数场合的字符。 设定形式: 字段名称 varchar(字符个数) 其特点是: 1,存储的字符长度是写入的实际长度,但不超过设定的长度。最长可设定为65532(字节)。 (1) 注:由于其最长的限制是字节数,因此存储中文和英文的实际字符个数是不同的; (2) 英文:一个字符占一个字节; (3) 中文(gbk编码):一个字符占2个字节; (4) 中文(utf8编码):一个字符占3个字节; 2,如果实际写入的字符不足设定的长度,就按实际的长度存储。 3,相对于char字符串,其存取速度相对更慢。 示例: 定义一个表,演示char和varchar的使用和区别: ![](https://img.kancloud.cn/96/37/963739e3d58ca41b7c75d8d9997917b3_612x513.jpg) 思考题: 一个表中有一个字段为c1,其类型为char(10),另有一个字段为c2,类型为varchar,问: c2最多可以设置多长? 答: 1,一个表中的行也有一个“最大字节长度的限制”,一行最多存储65532字节。 2,则此时,c2最多可以设置65532-10 = 65522(长度设定) 3,如果c2中存储的全是英文字符,就可以存储65522个 4,如果存储中文: > gbk:最多65522/2 = 32761个 > utf8:最多65522/3 = 21840个 ## 6.5.2.text长文本类型 适用于存储“较长的文本内容”,比如文章内容。最长可存储65535个字符。 如果还需要存储更长的文本,可以使用mediumtext(1600万左右)或longtext(40亿左右)。 设定形式: 字段名称 text text类型的字段不能设置默认值。 text类型虽然是字符类型,但不能设置长度!!! text类型的数据不存在行中。 ![](https://img.kancloud.cn/bc/ed/bceda0980117d38d512614129d3212a6_624x278.jpg) ## 6.5.3.enum和set类型 enum类型和set类型都是用于存储“有给定值的可选字符”,比如类似表单中的单选,多选,下拉列表。 * enum类型(单选类型/枚举类型): enum类型通常用于存储表单中的“单选项”的值。 设定形式: enum(‘选项值1’, ‘选项值2’, ‘选项值3’, ....) 这些选项值都对应了相应的“索引值”,类似索引数组的下标,但是从1开始的。 即这些选项的索引值分别为:1, 2, 3, 4, ..... enum类型最多可设定65535个选项。 示例: ``` create table tab1 (id int, edu(‘大学’, ‘中学’, ‘小学’, ‘其他’ ) ); insert into tab1 (id, edu) values (1, ‘大学’); ``` 或: ``` insert into tab1 (id, edu) values (1, 2); //表示中学 ``` * set类型(多选类型): set类型通常用于存储表单中的“多选项”的值。 设定形式: set(‘选项值1’, ‘选项值2’, ‘选项值3’, ....) 这些选项值都对应了相应的“索引值”,其索引值从1开始,并“依次翻倍”。 即这些选项的索引值分别为:1, 2, 4, 8, 16, ..... (其实就是2的n次方) enum类型最多可设定64个选项值。 示例: ``` create table tab2 (aihao(‘篮球’, ‘排球’, ‘足球’, ‘中国足球’ ) ); #对应索引值为1,2,4,8 insert into tab2( aihao ) values ( ‘篮球’ ); ``` 或: ``` insert into tab2 ( aihao ) values ( ‘篮球,排球’ ); ``` 或: ``` insert into tab2 ( aihao ) values ( ‘篮球,足球,排球’ ); ``` 或: ``` insert into tab2 ( aihao ) values ( 2 ); //表示排球(2) ``` 或: ``` insert into tab2 ( aihao ) values ( 3); //表示“篮球,排球”(1+2) ``` 或: ``` insert into tab2 ( aihao ) values ( 7); //表示“篮球,排球,足球”(1+2+4) ``` 基本示例: ![](https://img.kancloud.cn/4a/ab/4aabb46e677b0d33b2d36c59c48a70cf_556x282.jpg) 使用索引值来插入数据: ![](https://img.kancloud.cn/6d/18/6d18cd07465bfe067eece6d192223c19_523x194.jpg) ![](https://img.kancloud.cn/0b/e8/0be80506f01c2d4e354f226796b89ccb_463x182.jpg)