Mysql表的约束

约束
是对表中的数据进行限定,从而保证数据的正确性、有效性和完整性

mysql约束分类

1、主键约束 primary key (自动增长)
2、非空约束 not null (不能是空的)
3、唯一约束 unique (不能重复) mysql中的unique限定的值可以有多个null;
4、外键约束 foreign key

a、创建表的时候添加约束

CREATE TABLE stu(
id INT 约束,
NAME VARCHAR(8) 约束
);

b、通过ALTER 修改字段时添加约束,,(MODIFY和CHANGE的区别在于一个可以修改字段名, )

ALTER TABLE stu MODIFY id INT 约束 约束...;

c、删除约束;创建好后添加约束一样。。修改字段的类型,不带约束即可

ALTER TABLE stu MODIFY id INT;//not null 可以这样操作    有唯一和带有约束不能这样删

删除唯一约束
ALTER TABLE stu DROP INDEX 需要删除唯一约束的字段名;
在这里插入图片描述
创建后添加唯一约束;

ALTER TABLE stu MODIFY username VARCHAR(20) UNIQUE;

创建后添加主键约束(primary key);
1、主键约束表示非空且唯一;
2、一张表只能有一个是主键;
3、主键就是表中记录的唯一标识,如身份证号;

创建时添加主键
在这里插入图片描述
删除 主键约束;

ALTER TABLE 表名 DROP PRIMARY KEY;//因为主键是一张表唯一的 所以删除时值需要选择表即可 不需要输入字段

创建后添加主键

ALTER TABLE 表名 MODIFY id INT PRIMARY KEY;

自动增长,如果某一列是数值类型的使用 auto_increment 可以完成自动增长(一般配合数值类型的主键进行使用), 自增和上一条记录相关,执行时会查询上一条记录的值 在上一条记录基础上自增

ALTER TABLE stu MODIFY id INT  AUTO_INCREMENT;

删除自动增长

ALTER TABLE 表名 MODIFY 字段 类型;//通过修改字段进行删除





外键约束:foreign key
在这里插入图片描述
解决方案 创建两张表:
在这里插入图片描述

1、创建表的时候可以添加外键
(外键列名称) 外的括号是语法
*语法 creat table 表名(

外键列
CONSTRAINT 自定义外键名称 foreign key (外键列名称) references 主表名称(主表主键字段 )
)

CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id)

在这里插入图片描述
部门表:
在这里插入图片描述

员工表:
在这里插入图片描述

删除外键:

ALTER TABLE employee DROP FOREIGN KEY 自定义外键名 ;

添加外键;

ALTER TABLE 表名 ADD CONSTRAINT 自定义外键名 FOREIGN KEY(外键字段) REFERENCES 主表名称(需关联的主表字段);

sqlLyog通过架构设计器 查看关联
没有关联的时候 能够看到 两张表中间是没有线的
在这里插入图片描述
使用外键关联后能够看到 中间是有线关联的
在这里插入图片描述
外键约束——级联操作;(联动操作)//
在添加外键的时候设置级联更新 末尾添加ON UPDATE CASCADE

ALTER TABLE employee ADD CONSTRAINT emp_relv_dep_ky FOREIGN KEY(dep_id) REFERENCES department(id) **ON UPDATE CASCADE**; 

在这里插入图片描述
使用了级联更新后,主表的主键更新 外键也会随着主表更新;

删除级联,
第一步先删除外键

ALTER TABLE employee DROP FOREIGN KEY 自定义外键名 ;

第二部 重新设置关联

ALTER TABLE employee ADD CONSTRAINT emp_relv_dep_ky FOREIGN KEY(dep_id) REFERENCES department(id) ; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值