mysql SET 类型

MySQL 的 SET 类型是一种字符串对象,可以有零个或多个值,其值来自表创建时规定的允许的一列值。

指定包含多个 SET 成员的 SET 列值时,各成员之间用逗号(,)间隔开,且成员值本身不能包含逗号。

SET 类型的优势在于:它只能在固定值中选择,可以在数据库层面限制非法值;

数据存储时用数字表示,占用空间少。

创建 SET 类型的列时,需要定义可能的值集合。例如:

CREATE TABLE your_table (

    your_column SET('value1', 'value2', 'value3',...)

);

需要注意的是,SET 类型有以下特点:

插入重复的 SET 类型成员时,MySQL 会自动删除重复的成员。

向 SET 类型的字段插入不存在于预定义集合中的值时,MySQL 会抛出错误。

SET 类型可以一次选择多个成员,而 ENUM 类型一次只能取一个值。

例如,创建一个包含爱好(hobby)字段的表,hobby 字段为 SET 类型,可以包含'music'、'movie'、'swimming'等爱好:

CREATE TABLE set_table (

  id INT AUTO_INCREMENT PRIMARY KEY,

  hobby SET('music','movie','swimming')

);

然后可以插入包含不同爱好组合的数据:

INSERT INTO set_table (hobby) VALUES

('music'),

('movie'),

('music,movie'),

('swimming'),

('music,swimming'),

('movie,swimming'),

('music,movie,swimming');

查询数据时,可以使用 FIND_IN_SET 函数或 LIKE 操作符等进行搜索。例如,找出爱好中包含'swimming'的记录:

SELECT * FROM set_table WHERE FIND_IN_SET('swimming', hobby) > 0;

或者找出爱好包含'mov'的记录(甚至是在另一个 SET 成员的子字符串中):

SELECT * FROM set_table WHERE hobby LIKE '%mov%';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yqcoder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值