失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SQL-基础 约束(添加-删除外键)

SQL-基础 约束(添加-删除外键)

时间:2022-12-01 15:13:47

相关推荐

SQL-基础 约束(添加-删除外键)

一.概念

约束:作用于表中字段上的规则,用于限制存储在表中的数据目的:保证数据库中数据的正确,有效性和完整性。分类:非空约束(not null),唯一约束(unique),主键约束(primary key),默认约束(default),检查约束(check),外键约束(foreign key)。

二.运用

创建约束表:(也可以直接在创建新表目录,选择创建约束,不需要写代码)

create table user(id int primary key auto_increment comment '主键',name varchar(10) not null unique comment '姓名',age int check ( age > 0 && age <= 100 ) comment '年龄',status char(1) default '1' comment '状态',gender char(1) comment '性别') comment '用户表';

约束条件:

插入数据:(插入的数据一定要在约束条件内,否则报错)

insert into user(name,age,status,gender) values ('是1',99,'1','男'),('是二',22,'1','女');

三.外键约束

概念:用来让两张表的数据之间建立连接,保证数据的一致性和完整性

语法:

create table 表名(字段名 数据类型,....[constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名));

准备副表数据:

create table dept(id int auto_increment comment 'ID' primary key ,name varchar(50) not null comment '部门名称')comment '部门表';insert into dept (id, name) values (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '技术部');

运行结果:

主表数据:

create table emp2(id int auto_increment comment 'ID' primary key ,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID')comment '员工表';

结果:

插入员工数据:

insert into emp2 (id, name, age, job,salary, entrydate, managerid, dept_id) VALUES(1, '谢谢', 26, '董事长',30000, '-02-08', null,5),(2, '孙悟空', 56, '项目经理',20000, '-07-08', 1,1),(3, '猪八戒', 43, '开发',15000, '-05-12', 2,1),(4, '沙和尚', 38, '开发',17000, '-03-08', 2,1),(5, '唐僧', 57, '总经理',25000, '-02-12', 3,1),(6, '飞天', 67, '财务',11000, '-02-08', 2,1);

添加外键(注意表名的不同)

--添加外键alter table emp2 add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

删除外键

--删除外键alter table emp2 drop foreign key fk_emp_dept_id ;

外键的删除和更新行为:

no action---当父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有不允许删除/更新restrict---当父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有不允许删除/更新cascade----当父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录set nll----当父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为nullset default---父表有变更时,子表将外键列设置成一个默认的值

演示cascade行为(也可以在表中点击modify table,shan删除/添加外键操作)

--外键的删除和更新alter table emp2 add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

如果觉得《SQL-基础 约束(添加-删除外键)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。