iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据库中的自连接
  • 711
分享到

数据库中的自连接

2024-04-02 19:04:59 711人浏览 安东尼
摘要

今天强哥要和大家分享数据库中自连接的知识。        在数据库设计中,员工上下级关系如何表示,员工和员工下属关系如何表示?下属和下属的下属关系如何表示?树形菜单结

今天强哥要和大家分享数据库中自连接的知识。

        在数据库设计中,员工上下级关系如何表示,员工和员工下属关系如何表示?下属和下属的下属关系如何表示?树形菜单结构中,父节点和子节点的关系如何表示?论坛帖子中,主贴与回帖的关系如何表示?

        这三种关系都涉及到表的自连接问题,下面我们以员工上下级关系进行讲解分析。

        对于员工上下级关系,很多数据库初学者,可能会把数据放在两个表中,一个表放上级员工,另一个表放下属员工,设置外键进行两表的关联。如果这样来处理,大家想象一下,如果一个员工既有上级,又有下属,那么这个员工应该出现在上级表中,还是下属表中呢?这是一个很纠结的问题。

       实际工作中,我们把上级和下属都放在一个表中。在一个表中,将这种上下级关系清晰地表示出来。举一个例子,唐僧是一个领导,他有两个手下,一个是孙悟空,另一个是猪八戒。孙悟空手下有个下属叫做猴小七,猪八戒手下有个下属叫做猪小二,那么数据表设计出来应该是这样的。


数据库中的自连接员工信息表employee


      分析一下这个表,唐僧的父序号为0,而表中没有序号为0的数据,所以唐僧是没有上级的。孙悟空和猪八戒的父序号都为1,唐僧的序号为1,所以孙悟空和猪八戒的上级都是唐僧。猴小七的父序号是2,而孙悟空的序号为2,所以猴小七的上级是孙悟空。猪小二的父序号是3,而猪八戒的序号是3,所以猪小二的上级是猪八戒。

       如何在同一个表中组织这种父子关系的数据大家看懂了,下面给大家讲讲如何通过sql命令来获得某个人的直接下级的名字。

       比如说,唐僧的下级有哪些人?如果表中数据很多,这不是一眼能看出来的。而且能看出来没用,我们在做软件开发时,是需要通过SQL命令提取出来,并在程序中特定的地方使用的。

       两个表中的数据进行关联查询,大家应该都会。一个表自身数据的关联查询要稍微复杂一些,这就是强哥这里要给大家讲的自连接查询。为了讲清楚这个例子,我画了下面这个图。这个图中,把前面那张表当成两张表来处理,分别取别名a和b。


数据库中的自连接自连接分析图例


       通过这个表,我们很容易看出来,我们要查找唐僧的所有下级的姓名,就要把b表中的父序号等于a表中序号的数据进行连接,并从连接结果中,找到a表中姓名为唐僧的数据。据此分析,假设数据库中表的名字为employee,可以写出如下SQL命令。

 select b.name from employee a, employee b where a.id=b.pid and a.name=’唐僧’

       要查找别的人的下级,只需要把名字替换一下就可以了。表的自连接查询是数据设计的基本功,大家都必须要掌握。


您可能感兴趣的文档:

--结束END--

本文标题: 数据库中的自连接

本文链接: https://www.lsjlt.com/news/40558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库中的自连接
    今天强哥要和大家分享数据库中自连接的知识。        在数据库设计中,员工上下级关系如何表示,员工和员工下属关系如何表示?下属和下属的下属关系如何表示?树形菜单结...
    99+
    2022-10-18
  • Oracle数据库中什么是自连接
    这篇文章将为大家详细讲解有关Oracle数据库中什么是自连接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。自连接是对同一个表进行的连接。要自行一个自连接,必...
    99+
    2022-10-18
  • navicat连接数据库自动断开连接的解决办法
    这篇文章将为大家详细讲解有关navicat连接数据库自动断开连接的解决办法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。navicat 连接数据库自动断开连接解决办法这是...
    99+
    2022-10-18
  • 数据库的连接
    表boy ,数据如下: 表girl,数据如下: 一、内连接 inner join : 问题:用sql查出boy和girl表中家庭完整的家庭ID和用户名 select boy.hid,boy.n...
    99+
    2022-10-18
  • PHP8.0中的数据库连接库:Doctrine
    随着PHP语言的发展,越来越多的开发者开始使用它来构建Web应用程序。使用PHP构建Web应用程序时,一个重要的部分就是数据库连接,尽管有很多数据库连接库可供选择,但是Doctrine是其中一个备受推崇的库。在本文中,我们将探讨Doctri...
    99+
    2023-05-14
    PHP 数据库连接库 Doctrine
  • MySQL数据库自连接实例讲解
    目录什么是自连接?自连接语法1、内连接1.1隐式内连接1.2.显式内连接2、外连接2.1.左外连接2.2.右外连接案例案例演示1案例演示2扩展需求总结什么是自连接?     &nb...
    99+
    2023-06-11
    mysql自连接是什么 mysql自连接查询 数据库自链接
  • 数据库连接
    数据库连接与断开:Connection conn=Jdbcutil.open();          &n...
    99+
    2022-10-18
  • Access数据库的连接
    这篇文章主要介绍“Access数据库的连接”,在日常操作中,相信很多人在Access数据库的连接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Access数据库的连接”的疑惑...
    99+
    2022-10-18
  • Java操作数据库——使用连接池连接数据库
    传统方式和连接池方式传统方式的步骤使用传统方式在Java中使用JDBC连接数据库,完成一次数据库的操作,一般有以下几个步骤: 加载驱动。 建立连接。 执行SQL语句。 释放连接。 传统方式的弊端每一次对数据库的操作都要建立一次连接,并且会将...
    99+
    2014-08-26
    java基础 java 连接池
  • Qt数据库(3) - 连接数据库
    Qt Version 5.14.0 想要使用QSqlQuery或QSqlQueryModel访问数据库,首先要创建或打开1个或多个数据库链接。数据库链接通常使用链接名称作为唯一标识,而不是数据库名称。可以使用多个数据库链接同时连接同一个数据...
    99+
    2020-01-07
    Qt数据库(3) - 连接数据库
  • python数据库连接池中数据库连接池技术的优点是什么
    本篇文章给大家分享的是有关python数据库连接池中数据库连接池技术的优点是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。昨天测试了一下开500个线程去请求数据库,不过这个...
    99+
    2023-06-17
  • idea连接数据库
    数据库连接mysql 第一步:我的背景条件 下载并配置好mysql、idea。idea存在了tomcat9.0、maven。 第二步:database——>data Source——>mysql ...
    99+
    2023-09-24
    intellij-idea 数据库 mysql
  • 数据库连接池
    连接池是管理数据库连接的一种机制,能够控制连接的个数,默认情况下可以预先创建可用的连接。有四种常见的连接池框架1、Apache的DBCP连接池(Tomcat内置了DBCP)2、C3P0连接池3、proxco...
    99+
    2022-10-18
  • PHP连接数据库
    PHP 连接数据库1.连接数据库函数 mysqli_connect(主机名,用户名,密码)  返回值 是我们的一个连接对象 如果连接失败 报错 返回false2. 判断错误函数mysql...
    99+
    2022-10-18
  • mysql 连接数据库
    1、首先启动mysql 并链接数据 小意思吧!都会了是吧    mysql -uroot -p //连接数据    net start mysql /...
    99+
    2022-05-21
    连接数据库 mysql
  • JDBC连接数据库
    JDBC连接数据库主要有以下几个步骤:1、加载JDBC驱动程序Class.forName("com.mysql.jdbc.Driver");加载成功后,会将Driver类的实例注册到DriverManage...
    99+
    2022-10-18
  • JDBC 连接数据库
    一、通过Driver接口直接连接 public Connection getConnectionByDriver() throws Exception{  ...
    99+
    2022-10-18
  • pod连接数据库
    问题描述:pdo连接数据库后,查询数据库中的汉子全部转变为文号(?),文件格式是utf-8,数据库的表,字段全部设置为utf8,。处理方法,在连接数据库的时候new PDO($num1,$num2,$num...
    99+
    2022-10-18
  • RF-连接数据库
    *** Settings ***Force Tags        DataLibrary           Da...
    99+
    2022-10-18
  • JDBC02 利用JDBC连接数据库【使用数据库连接池】
    1 使用Statement执行含有动态信息的SQL语句时有几个不足:  1.1 由于需要将动态数据拼接到SQL语句中,这导致程序复杂度高,容易出错  1.2 拼接的数据若含有SQL语法内容就会导致拼接后的S...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作