zoukankan      html  css  js  c++  java
  • 数据库一对多,多对一, 多对多的问题

    数据 一对多 多对一 多对多的问题

    在关系型数据库中,通过外键将表跟表之间联系在了一起。

    一对多关系

    一个班级有很多学生,外键维护在学生的一方,也就是多的一方。(在做页面设计的时候,需要把两个表连接到一块查询信息)

    建立一个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;

  • 相关阅读:
    PostgreSQL Monitor pg_activity
    bzoj2333 [SCOI2011]棘手的操作
    bzoj1499 [NOI2005]瑰丽华尔兹
    bzoj2561 最小生成树
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
    bzoj3589 动态树
    bzoj4034 [HAOI2015]树上操作
    bzoj4774 修路
    2018.1.14 省选模拟赛
  • 原文地址:https://www.cnblogs.com/woniucode/p/10615641.html
Copyright © 2011-2022 走看看