DDL语句 -- 约束
Posted xifengbuqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL语句 -- 约束相关的知识,希望对你有一定的参考价值。
一、常见约束
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语句 -- 约束的主要内容,如果未能解决你的问题,请参考以下文章
JavaLearn#(17)MySQL基础知识DML及DDL语句外键及非外键约束外键策略DQL语句(单表多表)连接查询子查询索引事务视图存储过程用户权限及角色管理
JavaLearn#(17)MySQL基础知识DML及DDL语句外键及非外键约束外键策略DQL语句(单表多表)连接查询子查询索引事务视图存储过程用户权限及角色管理