• 10_连表操作


    表与表之间关系?

           1对1

           多对多

    什么是1对多?

      在多的一方创建一个外键字段,把这个外键字段设置成外键,对应 少的一方主键

        -- 约束插入外键字段时候,数据必须关联表中已经存在的数据

           外键类型和关联字段类型相同

        插入时候,先插入关联表数据,在插入原表数据

    如何通过命令创建1对多关系?

           -- 在创建表时候创建外键

                  constraint 外键名 foreing key (外键字段) references 关联表名(关联字段)

           -- 在表外外键操作

            -- alter table 表名 drop foreign key 外键名  -- 删除外键

            -- alter table 表名 add constraint 外键名字 foreign key (外键字段) reference 关联表名(字段)

           外键名命名规则 :fk_表名第一个字母_关联表第一个字母

    如何通过命令创建多对多关系?

      -- 创建第三张表保存中间关,保存两个多的一方id,

        在第三张表中创建两个外键分别对应两张表的id,

        可以一个id,也可以两个外键联合起来做id

      -- 第三张表如何命令?

             表1名_to_表2名

           -- 字段名怎么创建?

                  表1名_id      表2名_id

           为何两个外键可以联合做主键?

                  因为每个外键都是组合起来都是唯一的

           如何使两张表建立关系?

                  通过insert在第三张表中插入数据,前提是关联的两张表中有这个id

    如何通过连表查询?

                  -- 1对多查询

          select 表名.字段,关联表.字段 from 表名 left join 关联表名 on 表名.外键字段 = 关联表名.id where 条件

                  -- A left join B on 关系     

          -- 以A为主,可以把A中所有数据查出,只显示A对应的B数据,可以进行多次连接,那么说明主表有多个外键

                  -- right join                          以B为主,可以把B中所有数据查出,只显示B对应的A数据

                  -- inner join                         把没有对应关系的忽略掉

           -- 多对多查询?

                  -- select 字段,+ form 第三张表名

          lelft join 第一张表名 on 第三张表名. 第一张表名_id = 第一张表名.id

          lelft join 第二张表名 on 第三张表名. 第二张表名_id = 第二张表名.id    

        where 条件

               -- 本质上是双向的1对多,通过外键表连接关联表

    如何进行关系分析?

      -- 求两者之间的关系,要用两个方向去看,

        先把前者看成1,对应后者有多少,再把后者看成1,

        对应前者有多少,多对多其实本质上是双向的一对多

     

  • 相关阅读:
    各大网站收录、搜索引擎的提交入口
    个性注释
    css3 content 生成内容
    C# 的三种序列化方法
    C# 文件下载四方法
    AngularJS 預設模組 select 標籤的 ngOptions 參數用法
    null与undefined
    第三次作业--林枫
    第二次作业--林枫
    第一次作业--林枫
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/7003701.html
Copyright © 2020-2023  润新知