[MySQL & Python] 08.表关系与外键约束
单表
一对多
多对多
一对多示例
外键约束: 保证一个列的值必须是其他表中特定列已经存在的值。例如: info.depart_id 的值必须是depart.id中已经存在的值。
新创建表的时候,使用: constraint 外键名称 foreign key 本表名(字段) reference 外表名(字段名)
depart 表:
create table depart (
id int not null primary key auto_increment,
title varchar(16) not null) default charset=utf8;
info表:
create table info (
id int not null primary key auto_increment,
name varchar(20) not null,
email varchar(40) not null,
age int not null,
depart_id int,
constraint fk_info_depart foreign key (depart_id) references depart(id)
) default charset=utf8;
-- info表中添加了外键约束,从info的depart_id关联到depart的id字段。
对于已经创建好的表,添加外键约束,使用:
alter table 表名 add constraint 外键名称 foreign key 本表(列名) references 外表(列名)
mysql> alter table info add constraint fk_info_depart foreign key info(depart_i
d) references depart(id);
多对多
两个单表+关系表
两张单表的值通过关联表进行关联
比如: 表一(学生表),表二(课程表), 关联表(学生选课表)
通过关联表,学生和课程形成多对多的关系, 一个学生可以选择多个课程,一个课程可以有多个学生。
关联表需要创建两个外键,分别关联到学生的id与课程的id。
--学生表
create table students (
id int not null primary key auto_increment,
name varchar(20)
)default charset=utf8;
-- 课程表
create table courses (
id int not null primary key auto_increment,
course_name varchar(20)
) default charset=utf8;
-- 选课表
create table student_course (
id int not null primary key auto_increment,
student_id int not null,
course_id int not null,
constraint fk_student_course_student foreign key student_course(student_id)
references students(id),
constraint fk_student_course_course foreign key student_course(course_id)
references courses(id)
) default charset=utf8;
删除外键
alter table 表名 drop constraint foreign key 外键名称
alter table student_course drop constraint fk_student_course_students;
--删除student_course与students的外键约束后,添加于students(ID)不关联的元素不再报错。
posted on 2022-04-06 22:33 LeoZhangJing 阅读(81) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性