首页 > 其他 > 详细

DDL语句(五) -- 约束

时间:2018-06-23 23:56:58      阅读:308      评论:0      收藏:0      [点我收藏+]

一、常见约束

NOT NULL:非空,该字段的值必填

UNIQUE:唯一,该字段的值不可重复

DEFAULT:默认,该字段的值当没有插入时有默认值

CHECK:检查,mysql 不支持

PRIMARY KEY:主键,该字段的值不可重复并且非空   UNIQUE + NOT NULL

FOREIGN KEY:外键,该字段的值引用了另外的表的字段

 

主键约束和唯一约束 

1、区别

① 一个表至多有一个主键约束,但可以有多个唯一约束

② 主键约束不允许为空 ,唯一约束可以为空

2、相同点

都具有唯一性

都支持组合键,但不推荐

 

外键:

1、用于限制两个表的关系,从表的字段值引用了主表的某字段值;

2、外键列和主表的被引用列要求类型一致,意义一样,名称无要求;

3、主表的被引用列要求时一个 key(一般就是主键);

4、插入数据时,先在主表中插入,再在从表中插入

 删除数据是,先从从表中删除数据,再从主表中删除数据。

 

可以通过以下两种方式来删除主表的记录

方式一:级联删除

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(maiorid) REFERENCES major(id) ON DELETE CASCADE;

方式二:级联置空

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(maiorid) REFERENCES major(id) ON DELETE SET NULL;

 

二、创建表时添加约束

CREATE TABLE 表名(
  字段名 字段类型 PRIMARY KEY, #主键约束
  字段名 字段类型 NOT NULL, #非空约束
  字段名 字段类型 UNIQUE, #唯一约束
  字段名 字段类型 DEFAULT 值, #默认约束
  字段名 字段类型,
  CONSTRAINT 约束名 FOREIGN KEY(字段名) REFERENCES 主表(被引用列)
)

注意:

      支持类型          约束名

列级约束  除了主键约束        可以重新设置

表级约束  除了非空约束和默认约束   可以重新设置,但对主键约束无效

 

列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求

 

三、修改表时添加或删除约束

1、非空约束

添加非空约束

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型  NOT NULL;

删除非空约束

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 ;

 

2、默认约束

添加默认约束

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 DEFAULT 值;

删除默认约束

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 ;

 

3、主键约束

添加主键约束

ALTER TABLE 表名 ADD 【CONSTRAINT 自定义的约束名称】 PRIMARY KEY(字段名);

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY;

 

4、唯一约束

添加唯一约束

ALTER TABLE 表名MODIFY COLUMN UNIQUE(字段名);

删除主键唯一约束

ALTER TABLE 表名 DROP INDEX 索引名;

 

5、外键约束

添加外键约束

ALTER TABLE 表名 ADD  【CONSTRAINT 自定义的约束名称】 CONSTRAINT (字段名) REFERENCES 主表(被引用列); 

删除外键约束

ALTER TABLE 表名DROP FOREIGN KEY 自定义的约束名称;

 

DDL语句(五) -- 约束

原文:https://www.cnblogs.com/xifengbuqi/p/9219063.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!