文档介绍:MySQL
中约束保存在
information_schema
数据库的
table_constraints
中,可
以通过该表查询约束信息;
  
约束主要完成对数据的检验,
保证数据库数据的完整性;
如果有相互依赖数据,
保证该数据不被
删除。
 
  
常用五类约束:
’’
 
not
 
null
:非空约束,指定某列不为空
 
unique
:
 
唯一约束,指定某列和几列组合的数据不能重复
 
Primary key
:主键约束,指定某列的数据不能重复、唯一
 
foreign
 
key
:外键,指定该列记录属于主表中的一条记录,参照另一条数据
 
check
:检查,指定一个表达式,用于检验指定数据
 
注意:
 
MySQL
不支持
check
约束,但可以使用
check
约束,而没有任何效果;
 
  
根据约束数据列限制,约束可分为:
 
单列约束:每个约束只约束一列
 
多列约束:每个约束约束多列数据
 
  
 
1
、
    
not
 null
约束
 
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
 
Null
类型特征:
 
所有的类型的值都可以是
null
,包括
int
、
float
等数据类型
 
空字符串
””
是不等于
null
,
0
也不等于
null 
create
 
table
 temp( 
        id 
int
 
not
 
null
, 
        name 
varchar
(255) 
not
 
null
 
default
 
‘abc’,
 
        sex 
char
 
null
 
) 
上面的
table
加上了非空约束,也可以用
alter
来修改或增加非空约束
 
增加非空约束
 
alter
 
table
 temp 
modify
 sex 
varchar
(2) 
not
 
null
; 
  
取消非空约束
 
alter
 
table
 temp 
modify
 sex 
varchar
(2) 
null
; 
  
取消非空约束,增加默认值
 
alter
 
table
 temp 
modify
 sex 
varchar
(2) 
default
 
‘abc’ 
null
; 
  
2
、
    
unique
 
唯一约束是指定
table
的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现
重复的值,但是可以为多个
null 
同一个表可以有多个唯一约束,
多个列组合的约束。
在创建唯一约束的时候,
如果不给唯一约束
名称,就默认和列名相同。
 
MySQL
会给唯一约束的列上默认创建一个唯一索引;
 
create
 
table
 temp ( 
        id 
int
 
not
 
null
, 
        name 
varchar
(25), 
        password 
varchar
(16), 
        --
使用表级约束语法,
 
        
constraint
 uk_name_pwd 
unique
(name, password) 
); 
表示用户名和密码组合不能重复
 
添加唯一约束
 
alter
 
table
 temp