MySQL中ENMU和SET的使用

奮鬥的小青年_發表於2016-12-25

因為MySQL不支援傳統的CHECK約束,因此通過ENUM和SET型別可以解決一部分問題。

下面通過一個小demo來演示一下

ENUM

drop table if EXISTS test;
create table test(
	user varchar(30),
	sex enum('male','female')
)ENGINE=INNODB;

insert into test select 'haha1','male';
insert into test select 'haha2','female';
insert into test select 'haha3','nofemal';

執行上面的語句,執行到最後一行sql語句的時候報錯



因為“haha3”中的sex值不是male和female的其中之一。

SET

drop table if EXISTS test2;
create table test2(
	user varchar(30),
	sex SET('male','female')
)ENGINE=INNODB;
insert into test2 select 'haha1','male';
insert into test2 select 'haha2','female';
insert into test2 select 'haha3','nofemal';

執行上面的sql語句也是到最後一行報錯


原因也是因為’nofemal’不是他們其中的’male’和’female’不是其中的任何一個。

注意:

         ENUM和SET型別都是集合型別,不同的是ENUM型別最多可列舉65535個元素,而SET型別最多列舉64個元素。且set中可以存set列舉中的組合,比如執行

insert into test2 select ‘haha4’,’ 'male', 'female'’;

也可以成功。



 



相關文章