MySql 字符串类型 - enum、set

  • enum 类型和 set 类型都是用于存储“有给定值的可选字符”,比如类似表单中的单选,多选,下拉列表。

  • enum 类型(单选类型/枚举类型) : enum 类型通常用于存储表单中的“单选项”的值。 设定形式: enum('选项值1','选项值2','选项值3'.....) 这些选项值都对应了相应的“索引值”,类似素引数组的下标,但是从1开始的。 即这些选项的索引值分别为: 1,2,3, 4,... enum 类型最多可设定6535个选项。

    示例: 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 enum('篮球','排球','足球') ); // 对应索引值为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)


``` mysql> create table enumTest (id int autoincrement primary key, username varchar(20), userpass varchar(32), edu enum('小学', '中学', '大学'), likes set('篮球', '足球', '排球')); mysql> desc enumTest; +-----------+----------------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------------------------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | autoincrement | | username | varchar(20) | YES | | NULL | | | userpass | varchar(32) | YES | | NULL | | | edu | enum('小学','中学','大学') | YES | | NULL | | | likes | set('篮球','足球','排球') | YES | | NULL | | +-----------+----------------------------------+------+-----+---------+----------------+

mysql> insert into enumTest (username, userpass, edu, likes) values ('user1', '123', '小学', '篮球'); mysql> select * from enumTest; +----+-----------+-----------+--------+--------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+--------+ | 1 | user1 | 123 | 小学 | 篮球 | +----+-----------+-----------+--------+--------+

mysql> insert into enumTest (username, userpass, edu, likes) values ('user2', '123', '中学', '篮球,排球'); mysql> select * from enumTest; +----+-----------+-----------+--------+---------------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+---------------+ | 1 | user1 | 123 | 小学 | 篮球 | | 2 | user2 | 123 | 中学 | 篮球,排球 | +----+-----------+-----------+--------+---------------+

mysql> insert into enumTest (username, userpass, edu, likes) values ('user3', '123', '大学', '篮球,排球,太阳'); ERROR 1265 (01000): Data truncated for column 'likes' at row 1

mysql> insert into enumTest (username, userpass, edu, likes) values ('user2', '123', 2, 4); mysql> select * from enumTest; +----+-----------+-----------+--------+---------------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+---------------+ | 1 | user1 | 123 | 小学 | 篮球 | | 2 | user2 | 123 | 中学 | 篮球,排球 | | 3 | user2 | 123 | 中学 | 排球 | +----+-----------+-----------+--------+---------------+ ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值