MySQL的enum與set約束

2021-07-28 15:17:41 字數 994 閱讀 2545

enum和set可以指定欄位只可以取一系列給定的值。

enum

列舉的值必須是打引號的字元型別的值

create

table shirts (

name varchar(40),

size enum('x-small', 'small', 'medium', 'large', 'x-large')

);

1 每個列舉值都有乙個索引:

select * from tbl_name where enum_col=0;
2 最多可以有65535個不同的元素值(實際限制小於3000)。

3 列舉值不能是0或空字串(雖然存在特殊情況)

4 for a column defined as enum(『a』,』b』,』c』), values such as 」, 『d』, or 『ax』 are invalid and are rejected.每一行的這個值只能從列舉值中選乙個

5 當建立表時,enum成員值的尾部空格將自動被刪除。

set

set是乙個字串物件,可以有零或多個值,其值來自表建立時規定的允許的一列值。指定包括多個set成員的set列值時各成員之間用逗號(『,』)隔開,所以set成員值本身不能包含逗號。

對於一指定為set(『one』, 『two』) not null的列可以有下列取值:

』 』

『one』

『two』

『one,two』

1 乙個set最多可指定64個不同的值。重複的值定義中會引起警告,或者錯誤如果嚴格啟用sql模式。

2 如上面的』one,two』例子,可以從set所指定的值中選擇多個。

3 當建立表時,set成員值的尾部空格將自動被刪除.

mysql中的enum和set型別

mysql中的enum和set其實都是string型別的而且只能在指定的集合裡取值,不同的是set可以取多個值,enum只能取乙個 create table 20121101 t id int 11 not null auto increment,name varchar 20 not null,c...

mysql中的enum和set型別

mysql中的enum和set其實都是string型別的而且只能在指定的集合裡取值,不同的是set可以取多個值,enum只能取乙個 create table 20121101 t id int 11 not null auto increment,name varchar 20 not null,c...

mysql中的enum和set型別

mysql中的enum和set型別 mysql中的enum和set其實都是string型別的而且只能在指定的集合裡取值,不同的是set可以取多個值,enum只能取乙個 sql create table 20121101 t id int 11 not null auto increment,name...