性别约束表达式怎么写?0代表男,1代表女,默认为0

createtableSTU(s_namevarchar(30),s_sexintdefault0check(sexin(0,1)));

解读MySQL的数据库约束

数据库约束:约束是对表施加的数据验证规则,主要用于保证数据库中数据的完整性。
另外,当表中的数据有关联时,可以保证关联的数据不会被删除。
1.NOTNULL:非空约束,指定列不能为空,只能作为列级约束,只能使用列级约束语法来定义。
SQL中的Null不区分大小写,具有以下属性:所有数据类型的值都可以为null,包括int、float、boolean等。
空字符串不等于空值,0也不等于空值。
要在创建表时为特定列设置非空约束,只需在列定义后添加notnull即可,例如:createtablet_test(idintnotnull,namevarchar(255)default'xyz'notnull,gendervarchar(2))null);使用editable修改表时添加或删除非空约束,例如:#Add非空约束Altertablet_testmodifygendervarchar(2)notnull;#取消非空约束Altertablet_testmodifygendervarchar(2)null;#取消非空约束,设置默认值Altertablet_testmodifynamevarchar(255)default'abc'null;2.UNIQUE:唯一约束,指定特定列或列设置不能重复。
虽然唯一约束列不能包含重复值,但它可以包含多个空值,因为空值不等于数据库中的空值。
可以在同一个表中创建多个唯一条目,并且唯一条目也可以由多个列组成。
当为列创建唯一约束时,MySQL将为该列创建唯一索引。
如果未命名唯一约束,则唯一约束默认为列名。
可以使用列级语法或表级语法创建唯一约束。
如果要为多列创建组合约束,或者需要为约束指定约束名称,则只能使用表级语法。
使用列级语法创建唯一约束只需在列定义后添加unique关键字即可:#Establish唯一约束创建表时,使用列级语法创建createtableunique_test(#Establish一个非空约束,该约束表示Identifier不能为空idintnotnull,#Create唯一约束表示多个数据行的列值不能相等namevarchar(255)独特的格式化语法在表级别创建唯一约束:[constraint约束名]unique(列名[,);列名,...]),上述表级约束语法可以与列定义并行地在createtabl语句中格式化,也可以使用add关键字添加在mutable语句中:#创建表时,使用表级约束语法表创建唯一约束createtableuniques_test2(#Establishid的非空约束,也就是说id不能为空idintnotnull,namevarchar(255),passvarchar(255),#使用表级语法为name创建唯一约束unique(name),#使用表级语法为name创建唯一约束pass定义约束称为test2_ukconstrainttest2_ukunique(pass));#创建表时,使用表级语法对组合列创建唯一约束createtableunique_test3(idintnotnull,namevarchar(255),passvarchar(25)5),#指定name和pass列的组合不能重复constrainttest3_ukunique(name,pass));#修改时表,使用add关键字添加唯一约束Altertableunique_test3addunique(id,name);#修改表时,使用modified关键字对某一列设置唯一约束Altertableunique_test3modifynamevarchar(100)unique;pindex条目名称;例句:#删除表Unique_test3Altertableunique_test3dropindextest3_uk中的唯一约束test3_uk;3.PRIMARYKEY:主键约束,该列的值可以唯一标识。
4、FOREIGNKEY:外键约束,指定某行记录属于主表中的一条记录,主要用于保证参照完整性。
5.CHECK(MySQL不支持):检查约束,定义逻辑表达式,用于指定对应列的值必须满足表达式。

数据库中的CHECK约束的表达式怎样写才能使表中的一列只能取3个值?或者别的方法也行。

我现在要讲的是在表定义之前标准化的用于列级过滤的CHECK约束。
(MySQL版本>=8.0.16)

createtablef1(r1intconstrainttb_f1_r1_chk1check(mod(r1,3)=0));

QueryOK,0rowsaffected(0.03sec)

已创建f2(r1intconstrainttb_f2_r1_chk1check(mod(r1,3)=0)notenforced);

QueryOK,0rowsaffected(0.02sec)

这里相关的CHECK约束约束如下:

1.约束名称在每个数据库中是唯一的。

这意味着,在一个数据库中没有两个约束是相同的,如果没有定义,系统会自动生成一个唯一的约束名称。

2检查约束对于insert/update/replace/loaddata/loadxml语句有效。

3并不是每个函数都可以使用,比如结果不确定的函数:NOW()、CONNECTION_ID()、CURRENT_USER()。

4不适用于存储过程和存储函数。

5系统变量不适用。

6子查询不适用。

7外键操作(如ONUPDATE、ONDELETE)不适用。

8.enforced默认开启,如果单独添加notenforced,则检查约束无效。