1、数据库约束。
约束是在表上强制执行的数据校验规则,约束主要用于保证数据库里数据的完整性。
MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存该数据库实例中的所有约束信息。
2、常见的数据库完整性约束:
1》NOT NULL:非空约束。
2》UNIQUE:唯一约束,指定某些列(一个或者多个)或者几列的组合不能重复。
3》PRIMARY KEY:主键约束,指定某列的值可以唯一地标识该条记录。
4》FOREIGN KEY:外键约束,指定该行记录从属于主表中的某一条记录(如某字段的字段值必须是主表某字段存在的值),主要用于保证参照完整性。
5》CHECK:检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式。(MySQL不支持这种约束,即使MySQL语句中可以使用CHECK约束,但约束并不会起效)
3、约束也是数据库对象,被存储在数据字典(系统表)中。根据约束对数据列的限制,约束分为以下两类:
1》单列约束:每个约束只约束一列。
2》多列约束:每个约束可以约束多个数据列。
4、指定约束的两个时机:
1》建表的同时为相应的数据列指定约束。
2》建表后创建,以修改表的方式来增加约束。
大部分约束都可以采用列级约束语法或者表级约束语法。
5、常见的5种约束详解
1》NOT NULL约束
只能作为列级约束使用,只能使用列级约束语法定义。
SQL中的null不区分大小写,所有数据类型都可以是null,空字符串不等于null,0不等于null,null也不等于null。
2》UNIQUE约束
指定某些列(一个或者多个)或者几列的组合不能重复(但可以出现多个null值,因为null也不等于null)。
当为某列创建唯一约束时,MySQL会为该列相应地创建唯一索引。如果不给唯一约束起名,该唯一约束默认与列名相同。
唯一约束既可以使用列级约束语法建立,也可以使用表级约束语法建立。如果需要为多列建组合唯一约束,或者需要为唯一约束指定约束名,则只能用表级约束语法。
表级约束语法格式:该约束语法格式既可以放在create table语句中与列定义并列,也可以放在alter table语句中使用add关键字来添加约束。
[constraint 约束名] 约束定义
例子:
create table emp ( e_name varchar(255); e_pass varchar(255); --使用表级约束语法建立唯一约束 unique (e_name), --使用表级约束语法建立唯一约束,而且指定约束名 constraint un_emp_pass unique(e_pass) );