数据库表关系详解-阿里云开发者社区

365bet亚洲唯一官网 2026-01-21 12:36:49 admin

一、一对多关系特征:表A的一条记录对应表B的多条记录,表B的一条记录仅对应表A的一条记录示例:

学生表(子表)| id | name | class_id | |-----|------|----------| |1001| 张三 | 111 | |1002| 张四 | 222 |

班级表(父表)| id | name | |-----|---------| |111 | class1 | |222 | class2 |

操作要点:

数据添加顺序:先父表(class)后子表(student)数据删除顺序:先子表(student)后父表(class)设计口诀:"一对多,两张表,多的表加外键"查询案例:查找姓"张"学生的班级信息

SELECT s.id, s.name, c.name AS classNameFROM student sJOIN class c ON s.class_id = c.idWHERE s.name LIKE '张%'二、一对一关系特征:表A与表B的记录严格一一对应设计方案:

唯一外键法(推荐)学生表:| id | name | |-----|------| |1001| 张三 |

学生卡表(添加唯一约束):| id | name | student_id | |-----|-------|------------| |111 | card1 | 1001 |

查询案例:查询张三的学生卡信息

SELECT *FROM card cJOIN student s ON c.student_id = s.idWHERE s.name = '张三'三、多对多关系特征:表A与表B的记录可相互对应多条示例:

学生表| id | name | |-----|------| |1001| 张三 |

课程表| id | name | |-----|-------| |111 | Java |

关系表(核心组件)| student_id | course_id | |------------|-----------| |1001 |111 |

操作要点:

数据添加顺序:先父表(student/course)后关系表数据删除顺序:先关系表后父表设计口诀:"多对多,三张表,关系表加外键"查询案例:查找姓"张"学生选修的课程

SELECT s.id, s.name, c.nameFROM student sJOIN student_course_relation scr ON scr.student_id = s.idJOIN course c ON scr.course_id = c.idWHERE s.name LIKE '张%'关键总结关系判断:明确表间关系是编写正确SQL的前提操作顺序:一对多:父表先增后删多对多:关系表最后操作设计口诀:一对多:两张表,多表加外键多对多:三张表,关系表存外键————————————————

相关文章

胎教什麼時候開始?醫師教你7階段週數教學,語言互動讓爸爸來更有效?

如何在不同设备上轻松输入对勾符号的方法总结

在工作表中插入页码