• MySql链表语句--博客园老牛大讲堂


    为什么链表?--博客园老牛大讲堂

      因为表与表之间有关系,而且查询时需要两张表的某些数据。

    链表的前提是:表与表之间必须设置主外键吗?

      不是的,其实表与表之间不需要设置主外键关系,用数据库语句就可以实现链表查询,删除,修改,增加等操作。

    为什么要设置主外键呢?

      通常我们看到表与表之间有关系,常常设置主外键。为什么?其实这样做是为了规范!假设一个不了解你表结构的人,都能够任意的修改你的外键。那这个表就不严谨了。

    我们到底设不设主外键呢?
      分情况:1、如果表结构简单,少量的表。逻辑不复杂。那么这个就不需要设置主外键了。特别对于数据库语句不熟悉的人,就方便多了。

          2、如果表结构复杂,有大量的表,逻辑复杂的。那么自己不可能记住所有主外键之间的关系,那么就需要设置主外键。

    怎样实现链表查询呢?

      链表查询又分为:左联表,右链表。等.

      链表不仅可以进行查询,还可以链表查询,链表增加,链表删除,链表修改。

     例子一、--博客园老牛大讲堂

      (左联表)、现在有两张表,a表与b表,a表主要字段有:id,a​1,a2,a3。b表字段有:id,b1,b1_id。其中a表的id为主键,b1_id为外键。

         思路:左连接就是以左边的a表为基础,查询出所关联的数据。多余的数据则清除,缺失的数据则为空。   

     

    左链表查询结果如图所示:

      

    例子二、--博客园老牛大讲堂

      (右联表)、现在有两张表,a表与b表,a表主要字段有:id,a​1,a2,a3。b表字段有:id,b1,b1_id。其中a表的id为主键,b1_id为外键。图如上所示

         思路: 右连接就是以右边的b表为基础,原理与左联接类似。

      如果是右连接的结果是:

     例子四、--博客园老牛大讲堂

        上面都是链表查询结果,下面我说一个链表删除操作。

        题目:现有两张表:chapters表:id(主键),name。division表:id(主键),name_id(chapters的外键),part。

        要求:实现链表删除操作。

        语句:DELETE c,d FROM chapters c JOIN division d ON c.id=d.name_id WHERE c.id=1

             

     

     

     

  • 相关阅读:
    libevent库的使用方法
    libevent中定时器的使用方法
    最小二乘原理(1)——线性等权重最小二乘
    E: Could not get lock /var/lib/dpkg/lock-frontend
    Ubuntu 18.04源码编译安装OpenCV 4.0步骤
    基于Socket和OpenCV的实时视频传输
    Jetson Nano系列教程3:GPIO
    Jetson Nano 系列教程2:串口调试接口登录Jetson Nano
    推荐 5 款牛逼的代码编辑器
    spring-boot-run 指令是怎么运行 Spring Boot 项目的?
  • 原文地址:https://www.cnblogs.com/laonniudajiangtang/p/6005461.html
Copyright © 2020-2023  润新知