数据库一对多,多对一, 多对多的问题
数据 一对多 多对一 多对多的问题
在关系型数据库中,通过外键将表跟表之间联系在了一起。
一对多关系
一个班级有很多学生,外键维护在学生的一方,也就是多的一方。(在做页面设计的时候,需要把两个表连接到一块查询信息)
建立一个student和clazz表
clazz
id name
1 一班
2 二班
3 三班
student
id name clazz_id
1 小明 2
2 小红 3
3 小张 1
select s.name,c.name from student as s,clazz as cwhere c.id=s.clazz_id;
一对一关系。一对一是一对多的特例,外键唯一。在上面的student和clazz表中,假设一个班级只能有一名学生,clazz_id(外键)不能重复。
多对多关系。
外键维护在桥表中,不在两个多的任意一方。下面举一个例子更好地说明。
student
id name
1 小明
2 小红
3 小张
课程表 course
id name
101 java
102 php
103 c
学生选课表 sc
id course_id student_id grade
1 101 1 60
2 102 1 80
3 103 2 80
查询id=1的学生的选的课程,名字,分数。
select s.*,c.name,sc.grade from student as s,clazz as c,sc
where sc.course_id=c.id
and sc.student_id=s.id
and s.id=1;
上一篇: 洛谷P1481 魔族密码(LIS)
下一篇: android studio 撤销和恢复