创建表
我们先创建三个表,之后的查询均以这三个表为例
![e5b3b4a5b53d5f796ce8c4d57c8365bd.png](https://i-blog.csdnimg.cn/blog_migrate/543e1e7719567f76106e204d44e6f37a.jpeg)
根据如图所示的字段及属性建立三张表,建立过程省略。注意sno,cno,在每张表中的格式要一致,就是我们所说的学号和课程号是固定的,一个学生只能有一个学号,一个课程只能有一个课程号。
插入后的数据格式如下(可以自行改变):
course:
![968288216c913520cc1d503126385b67.png](https://i-blog.csdnimg.cn/blog_migrate/6309b575674a40339cc3964e8751b6d6.jpeg)
score表:
![90a9691120a214255c5e791e9a8d0fb5.png](https://i-blog.csdnimg.cn/blog_migrate/3e178c42bf48a68ff70e4d9a40a0d8e3.jpeg)
student表:
![188ff9abcd2583ed1f53852c3604370c.png](https://i-blog.csdnimg.cn/blog_migrate/14c8b73d1ba66599196ad761ad327637.jpeg)
表和表之间的对应关系
- 一对一
在一对一关系中,关系表的每一边都只能存在一条记录,每个数据表中的关键字在 对应的关系表中只能存在一条记录或者没有对应的记录。这种关系类似于现实生活中配 偶的关系,如果一个人已经结婚,那么只有一个配偶,如果没有结婚,那么没有配偶。
假设我们已经创建如图所示的两张表
![2a895e63ce94e181607c5b406354a6dc.png](https://i-blog.csdnimg.cn/blog_migrate/1ac80794a47a07b31bf85c81431f0350.jpeg)
从图6.1中可以看到,user表和user_text表是一对一的关系。此处使用一对一的意 义实际上是数据库优化,用户备注字段utext--般有比较多的文字,属于大文本字段,但 这个字段又不是每次都要用到,如果存放到user表中,在查询用户数据的时候会影响user表的查询效率,因此将utext字段单独拆分出来,放到从表中,当需要utext字段时 进行两张表的关联查询即可。
- 一对多和多对一
在一对多关系中,主键数据表中只能含有一个记录,而在其关系表中这条记录可以 与一个或者多个记录相关,也可以没有记录与之相关。这种关系类似于现实生活中父母 与子女的关系,每个孩子都有一个父亲,但一个父亲可能有多个孩子,也可能没有孩子。 多对一是从不同的角度来看问题,例如从孩子的角度来看,一个孩子只能有一个父亲, 多个孩子也可能是同一个父亲。
假设创建如图所示的表: