MySQL中的多表查询详解

2023-11-01

目录

多表查询概述

一、多表关系

1.一对多(多对一)

2.多对多

3.一对一

二、多表查询概述

1.内连接

1.1、隐式连接

1.2、显示连接

2.外连接

1、左外连接

2、右外连接

3.自连接

4.联合查询

5.子查询

5.1、按照查询结果

5.1.1、标量子查询(通俗来说就像函数的返回值为一个结果值)

5.1.2、列子查询

5.1.3、行子查询

​编辑

5.1.4、行子查询

5.1.5、表子查询

5.2、按照位置

5.2.1、where之后

5.2.2、from之后

5.2.3、select之后

总结



多表查询概述

        在实际的项目开发中,在进行数据表结构设计的时候,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间很多都是相关联的,所以各个表结构之间也存在着一定的关系。

一、多表关系

1.一对多(多对一)

  场景选择:每个公司都有很多不同的部门,他们之间各司其职,一个研发部门只管搞研发的工      作,每个部门有着多个员工,这就是典型的一对多的模型。

  数据准备:

# 员工表和部门表
CREATE TABLE dept_test(
    id INT COMMENT '部门编号',
    name VARCHAR(20) UNIQUE COMMENT '部门名称'
);
INSERT INTO dept_test(id,name) VALUE (1,'研发部'),(2,'市场营销部'),(3,'测试部'),(4,'运维部'),(5,'人事部'),(6,'美工部');

CREATE TABLE emp_test(
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  name VARCHAR(20) COMMENT '员工姓名',
  age TINYINT COMMENT '员工年龄',
  job VARCHAR(10) COMMENT '员工岗位',
  dept_id INT COMMENT '员工所属部门'
);

INSERT INTO emp_test(id,name,age,job,dept_id) VALUES (1,'张三',21,'Java开发',1),
                                                     (2,'李四',25,'测试岗',3),
                                                     (3,'翠花',18,'测试岗',3),
                                                     (4,'麻子',20,'运维岗',4),
                                                     (5,'秦始皇',120,'嵌入式开发',1),
                                                     (6,'老子',18,'老总',5),
                                                     (7,'小妖怪',21,'PPT',6);

注意:一般情况下为了保证我们的数据的一致性和完整性,一般都需要添加外键约束

2.多对多

  场景选择:最常见的就是学生与课程表之间的关系,每个学生都有着多门课程,每门课程又可以  供不同学生选择。

  数据准备:

# 课程表与学生表
# 创建学生表
CREATE TABLE students (
  student_id INT PRIMARY KEY COMMENT '主键',
  student_name VARCHAR(50) COMMENT '学生姓名',
  student_number char(3) UNIQUE NOT NULL COMMENT '学号'
);
INSERT INTO students(student_id, student_name, student_number) VALUES(1,'张三','201'),
                                                     (2,'李四','202'),
                                                     (3,'王五','203'),
                                                     (4,'翠花','204'),
                                                     (5,'小妖怪','205');

# 创建课程表
CREATE TABLE courses (
  course_id INT PRIMARY KEY COMMENT '主键',
  course_name VARCHAR(50) UNIQUE COMMENT '课程名称'
);
INSERT INTO courses(course_id, course_name) VALUES(1,'人工智能'),
                                                  (2,'java'),
                                                  (3,'php'),
                                                  (4,'spark'),
                                                  (5,'hadoop');

  结果展示:

 进行关联:

3.一对一

  场景选择:多用于单表的拆分,将一张表的基础字段放在一张表中,其他的详情字段放在另一张   表中,从而提升效率,比如说:如果叫我们描述一个人,我们能从它的身体的基本信息来描述(身高,体重,姓名,年龄),也可以使用受教育信息(小学,中学,大学)等等。

  数据准备:

# 一对一的操作
CREATE TABLE tb_user(
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    name VARCHAR(10) COMMENT '姓名',
    age INT COMMENT '年龄',
    gender CHAR(1) COMMENT '1:男 0:女'
) COMMENT '用户基本信息';

CREATE TABLE tb_user_edu(
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
    degree VARCHAR(20) COMMENT '学历',
    major VARCHAR(50) COMMENT '专业',
    userid INT UNIQUE COMMENT '用户ID',
    CONSTRAINT fk_user_id FOREIGN KEY (userid) REFERENCES tb_user(id)
)COMMENT '用户教育信息表';

二、多表查询概述

数据准备:

CREATE TABLE dept_query(
    id INT PRIMARY KEY COMMENT '部门编号',
    name VARCHAR(20) UNIQUE COMMENT '部门名称'
);
INSERT INTO dept_query(id,name) VALUE (1,'研发部'),(2,'市场营销部'),(3,'测试部'),(4,'运维部'),(5,'人事部'),(6,'美工部');

# 创建我们的员工表
create table if not exists emp_query(
    id int auto_increment primary key comment '主键',
    name varchar(50) not null comment '员工姓名',
    age int comment '员工年龄',
    job varchar(30) comment '员工的职位',
    salary int default 2000 comment '员工薪资',
    entry_date date comment '员工入职时间',
    manage_id int comment '直属领导编号',
    dept_id int comment '所属部门ID'
)comment '员工表';
insert into emp_query(id,name,age,job,salary,entry_date,manage_id,dept_id) values(1,'李星云',21,'开发',15000,'2012-8-12',2,1),
                                                                   (2,'袁天罡',300,'老总',200000,'2000-2-10',null,5),
                                                                   (3,'姬如雪',19,'测试',6000,'2019-5-12',8,3),
                                                                   (4,'上官',25,'运维',8000,'2008-10-1',2,4),
                                                                   (5,'张子凡',21,'开发',9000,'2018-8-29',10,1),
                                                                   (6,'倾国倾城',28,'销售',3000,'2015-8-30',5,2),
                                                                   (7,'温涛',31,'测试',5000,'2005-8-12',2,3),
                                                                   (8,'女帝',29,'经理',18000,'2007-8-12',1,5),
                                                                   (9,'李嗣源',41,'测试',12000,'2000-3-12',2,3),
                                                                   (10,'李淳风',31,'人事顾问',15000,'2005-8-12',null,5);

 笛卡尔积:集合A和集合B组合的所有情况,在多表查询时,就是为了消除多余的、无效的笛卡尔积

1.内连接

 内连接相当于查询A、B两个集合之间的交集

1.1、隐式连接

   语法:select 字段列表 from 表1,表2 where 条件;

1.2、显示连接

        语法:select 字段列表 from 表1 [inner] join 表2 on 连接条件;


# 内连接:隐式连接和显式连接
SELECT * from emp_query,dept_query where emp_query.dept_id = dept_query.id;

# 显示连接
SELECT * FROM emp_query INNER JOIN dept_query ON emp_query.dept_id=dept_query.id;

# 起别名省略的写法
SELECT * FROM emp_query e JOIN dept_query d ON e.dept_id=d.id;

        结果展示:三种写法都是一样的

2.外连接

顾名思义就是左连接就是左表中的数据信息全部保留,且包含表1和表2交集部分,右连接相反,但其实左右连接可以相互转换,这不就是把表左右调换吗?

1、左外连接

        语法:select 字段列表 from 表1 left [outer] join 表2 on 条件...;

2、右外连接

        语法:select 字段列表 from 表1 right [outer] join 表2 on 条件...;

        代码:

# 左右连接
SELECT * FROM emp_query e left join dept_query d on d.id = e.dept_id;

SELECT * FROM emp_query e right join dept_query d on d.id = e.dept_id;

        左连接的效果 ​​​​​​​

        右连接的效果

3.自连接

子查询连接,是通过一张表查询出我们的关联信息,比如一张表中存在着一个领导层,通过一张表中的人物关系查询其上层领导。

        语法:select 字段列表 from 表A 别名a 表B 别名b on 条件....;

        注意:自查询可以是内连接查询,也可以是外连接查询,但是一定要起别名,一定要,否则你怎么辨认。

        实例:查询人物层次的领导关系,比如李星云的上层领导是谁?

观察以下几个操作

SELECT temp1.name '员工' FROM emp_query temp1 JOIN emp_query temp2 ON temp2.manage_id=temp1.id;

SELECT temp2.name '员工' FROM emp_query temp1 JOIN emp_query temp2 ON temp2.manage_id=temp1.id;

  

SELECT temp1.name '员工',temp2.name '领导' FROM emp_query temp1 JOIN emp_query temp2 ON temp2.manage_id=temp1.id;

 

可以查看出我们的的执行是先从join后边的表找出对应的关系,采用从后往前推的思想。

SELECT temp2.name '员工',temp1.name '领导' FROM emp_query temp1 JOIN emp_query temp2 ON temp2.manage_id=temp1.id;

 

4.联合查询

        关键字:

        union all:啥也不管,直接合并

        union : 去重    

        联合查询也就是把两张表的查询结果拼接起来,需求:将公司人员大于35的的员工和薪资低于8000的员工查询出来

# 联合查询:也就是将查询结果拼接在一起(union union all)
SELECT * FROM emp_query WHERE age > 30
UNION ALL
SELECT * FROM emp_query WHERE salary < 12000;

使用union all来用 

使用union,很显然name没有重复的了

SELECT * FROM emp_query WHERE age > 30
UNION
SELECT * FROM emp_query WHERE salary < 12000;

5.子查询

5.1、按照查询结果

5.1.1、标量子查询(通俗来说就像函数的返回值为一个结果值)

        子查询结果为单个值(数字、字符串、日期),最简单的形式,常用到的操作符:= <> > >= < <=

在MySQL中,<> 运算符用于比较两个值是否不相等。它返回一个布尔值,如果两个值不相等,则返回 TRUE;如果两个值相等,则返回 FALSE。

例如,以下示例中的查询将返回 "True",因为 10 不等于 5:

```sql
SELECT 10 <> 5;
```

另一个示例中的查询将返回 "False",因为 2 等于 2:

```sql
SELECT 2 <> 2;
```

因此,<> 运算符通常用于比较两个值是否不相等,并在条件表达式中使用。

# 查询开发部门所有员工的所有信息

/* 子查询:标量子查询
   1、查询研发部门中所有员工的所有信息

 */
#  a.获取部门编号:
SELECT id FROM dept_query WHERE name = '研发部';

#  b.查询部门为研发部(编号为1)的所有员工信息
SELECT * FROM emp_query WHERE dept_id = 1;

# 合并
SELECT * FROM emp_query WHERE dept_id = (SELECT id FROM dept_query where name = '研发部');

         结果展示:        

5.1.2、列子查询

        子查询的结果返回是一列(可以是多行),常用到的操作符:IN,NOT IN,ANY,SOME,ALL

操作符 描述
IN 在指定的综合范围内多选一
NOT IN 不在指定的范围
ANY 子查询返回列表中,有任一一个满足即可
SOME 与ANY等同,使用SOME的地方都能使用到ANY
ALL 子查询返回列表的所有值都必须要满足
5.1.3、行子查询

        子查询返回的结果是一行(可以是多列),常用的操作符:= <> IN NOT IN

# 1、查询“研发部”和“市场营销部”的所有员工信息

# 列查询(子查询返回的结果是一个列值)

# a.获取“研发部”和“市场营销部”的编号
SELECT id FROM dept_query WHERE name IN('研发部','市场营销部');

# b.查询研发部门和市场营销部门的所有员工信息
SELECT * FROM emp_query WHERE dept_id IN (1,2);

# 合并
SELECT * FROM emp_query WHERE dept_id IN (SELECT id FROM dept_query WHERE name IN('研发部','市场营销部'));

         查询结果:

# 2、查询比研发部任意一名员工工资都高的所有员工信息,即满足一个即可

# 3、查询比“研发部”其中任何人工资都高的所有员工信息

SELECT * FROM emp_query WHERE salary > ALL(SELECT salary FROM emp_query WHERE dept_id = (SELECT id FROM dept_query WHERE name = '研发部'));

​​​​​​​

# a.获取研发部工资的列信息

SELECT salary FROM emp_query WHERE dept_id = (SELECT id FROM dept_query WHERE name = '研发部');

  结果: 

# b.获取比研发部任意一名员工工资都高的所有员工信息

SELECT * FROM emp_query WHERE salary > ANY(SELECT salary FROM emp_query WHERE dept_id = (SELECT id FROM dept_query WHERE name = '研发部'));

# SOME 和 ANY的效果相同
SELECT * FROM emp_query WHERE salary > SOME(SELECT salary FROM emp_query WHERE dept_id = (SELECT id FROM dept_query WHERE name = '研发部'));

  结果:

 

# 3、查询比“研发部”其中任意一个人工资都高的所有员工信息

# 3、查询比“研发部”其中任何人工资都高的所有员工信息

SELECT * FROM emp_query WHERE salary > ALL(SELECT salary FROM emp_query WHERE dept_id = (SELECT id FROM dept_query WHERE name = '研发部'));

结果: 

5.1.4、行子查询

        子查询的结果是一行(可以是多列),这种查询称为行子查询,常用的操作符:= <> IN NOT IN

# 查询与“李星云”薪资及直属领导相同的员工信息

-- 行子查询:子查询的返回结果为一行(可以是多列)
-- 查询与“李星云”薪资及直属领导相同的员工信息
-- a.查询李星云的薪资和直属领导的编号
SELECT salary,manage_id FROM emp_query WHERE name = '李星云';

-- b.查询所有人薪资为15000,领导编号为2的员工信息
SELECT * FROM emp_query WHERE (salary,manage_id) = (15000,2);

-- 合并
SELECT * FROM emp_query WHERE (salary,manage_id) = (SELECT salary,manage_id FROM emp_query WHERE name = '李星云');

        结果:

5.1.5、表子查询

        子查询返回的结果是多行多列,常用操作符:IN

# 查询入职时间是2008-3-13后的所有员工信息及其部门的信息

-- 表子查询
-- 查询入职时间是2008-3-13后的所有员工信息及其部门的信息
-- a.查询入职时间在2008-3-13后的所有员工信息
SELECT * FROM emp_query WHERE entry_date > '2015-3-13';

-- 查询这部分员工对应的部门信息
SELECT * FROM (SELECT * FROM emp_query WHERE entry_date > '2015-3-13') tmp LEFT JOIN dept_query ON tmp.dept_id = dept_query.id;

  结果:

5.2、按照位置

5.2.1、where之后
5.2.2、from之后
5.2.3、select之后

注:以上的实例中都有体现


总结

本次记录的是MySQL表之间的关系,以及查询方式的详解,下期讲的则是一些相关的练习题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中的多表查询详解 的相关文章

  • 在 Laravel 5.2 中按 id 显示图像文件

    我有一个名为 files 的表 它保存与属性表相关的图像的名称 我试图使这些图像显示为以下关系 这是属性表的一部分 这是表文件及其与属性表的关系 我可以在控制器 PropertyController 的 show 方法中传递什么参数 目前我
  • 使用 Groovy 连接到 MySQL

    我正在尝试在 MAC OS 10 10 5 Yosemite 上使用以下 Groovy 代码连接到 MySQL 数据库 import groovy sql Sql try def dbURL jdbc mysql localhost 330
  • 两个日期之间有多少周

    我的数据库 MySQL 中有开始日期和结束日期 我怎样才能得到答案 这两个日期有多少周 或天 mysql 或 php 例如我有这样的数据库 开始并 会停2009 12 17 2009 12 242009 12 12 2009 12 26 更
  • 不同的数据库使用不同的名称引用吗?

    例如 mysql引用表名使用 SELECT FROM table name 注意 其他数据库是否使用不同的字符来引用其表名 这种引号的使用称为分隔标识符 它是 SQL 的重要组成部分 因为否则您将无法使用以下标识符 例如表名和列名 包含空格
  • 将 Wamp 服务器升级到 MySQL 8.0.15

    因此 我最近在几个月前安装了 WampServer 并预装了 mySQL 5 7 但我想利用 mySQL 8 附带的 NoSQL 功能 为了更新它 我下载了最新的MySQL版本 将文件夹解压到wamp64的bin目录中 然后 我从 5 7
  • NodeJS MySQL - 如何知道连接是否释放

    我正在开发 NodeJS MySQL Web API 我在用mysql https www npmjs com package mysqlnpm 模块 我想知道连接是否已释放 是否有任何函数或变量 喜欢 if connection isRe
  • SQL IN 子句比单个查询慢

    我正在使用 Hibernate 的 JPA 实现和 MySQL 5 0 67 MySQL 配置为使用 InnoDB 在执行 JPA 查询 转换为 SQL 时 我发现使用IN子句比执行单个查询慢 例子 SELECT p FROM Person
  • 将波斯语字符串发送到mysql

    我正在尝试发送Persian字符串到mysql数据库 但它将数据保存为这样的 D8 AC D8 AF DB 8C D8 AF 英文字符串没有问题 var new this val ajax url url new type GET succ
  • 当服务器时区不是 UTC 时,从 Java 中的 MySQL 检索 UTC DATETIME 字段

    我正在尝试编写代码以使用 Java 和 MySQL 与第三方开发的数据库进行互操作 该数据库有一个字段 用于存储时间戳DATETIME字段作为 UTC 日期 运行数据库和客户端的服务器的时区设置为非 UTC 时区 Europe London
  • JS 无法查询 MySQL 数据库。错误:connection.query 不是函数

    尝试查询我的 mySQL 数据库 但我不能 因为我得到了TypeError connection query is not a function错误 有谁知道为什么吗 我不知道为什么会发生这种情况 数据库 js const fs requi
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • SQL Server到Mysql迁移(使用Mysql Workbench)数据传输错误

    我正在使用 Mysql Work bench 6 3 将数据库从 MS Sql server 2008 迁移到 Mysql 在 批量数据传输 期间出错并出现以下警告 这种情况仅发生在像 varchar char 这样的列类型上 当我尝试使用
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 为什么在 MAC OSX 上编译简单的 mysql c 应用程序时不断收到未定义的符号?

    我正在使用 MACOS 并尝试编写一个 测试 mysql 应用程序 该应用程序仅测试与本地数据库的连接 include
  • 如何使用Conda安装MySQLdb?

    我已经阅读了有关如何安装 MySQLdb 的几种不同的解释 但我不确定哪种情况适用于我 因为我的错误消息不同 我的系统似乎找不到 MySQLdb 我安装了 pymysql 但我需要导入 MySQLdb 才能使用该库中的过程 感谢您的帮助 c
  • 在无文本搜索查询中使用 sphinx 与 MySQL

    我有这样的疑问 假设我有一个大表 与一个较小的用户表有关系 这个想法是在那个真正的大表中搜索大于给定日期的日期并按分数 例如大整数 排序 并同时获取相关的用户信息 此查询的结果大约每 10 分钟就会更改一次 所以 没有文本搜索 但我有一个非
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • 如何将另一列的整数值添加到日期列?

    我试图将整数添加到日期 但出现以下错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 6 行的 wp OrderDate INTERVAL WPProduct Duration DAY AS
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • java api签名验证

    https my oschina net KelinM blog 1925209 https blog csdn net u010096717 article details 84558463 https blog csdn net ma
  • 算法刷题【一本通YbtOJ1488】新的开始

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 先说句题外话 这个标题我很喜欢 种
  • 从目标检测到小目标检测

    目标检测 目标检测 object detection 就是在给定的一张图片中精确找到物体所在的位置 并标注出物体的类别 所以 目标检测要解决的问题就是物体在哪里以及是什么的整个流程问题 但是 在实际照片中 物体的尺寸变化范围很大 摆放物体的
  • mysql 数据合并

    最近有这样的需求 由于早期数据库表设计有些问题 为了加速查询速度将几个关联表合并到一张表中 最开始想的是一个字段一个字段进行入库更新 类似于 update tb userinfo 0 a set avatar update count se
  • XML Schema学习总结

    简单类型 1 简单元素 指只能包含文本内容 不能够包含子元素 也没有属性的元素 格式
  • Cesium修改地图颜色代码

    import as Cesium from cesium export default function modifyMap viewer Cesium Viewer 获取地图影像图层 const baseLayer viewer imag
  • 让 Flutter 在鸿蒙系统上跑起来

    鸿蒙系统 HarmonyOS 是华为推出的一款分布式操作系统 那么如何在保证开发迭代效率的前提下 以相对低的成本将移动应用快速移植到鸿蒙平台上呢 美团外卖 MTFlutter 团队近期做了一次技术探索 成功地实现了 Flutter 对于鸿蒙
  • 组合优于继承

    目录 前言 1 什么是继承 2 继承的劣势 问题 3 组合相比继承有哪些优势 4 如何判断该用组合还是继承 参考资料 前言 我们在平时日常开发设计的过程中 经常会有人提到一条经典的设计模式 组合由于继承 其实我们做更深层次的思考 我们想搞清
  • C# try catch finally return

    插眼 参考 https www cnblogs com huangshuqiang p 7850468 html
  • 三十六计之败战计

    败战计故名思意 是在败势中使用的计谋 共六计 美人计 空城计 反奸计 苦肉计 连环计和走为上 第三十一计 美人计 兵强者 攻其将 兵智者 伐其情 将弱 兵颓 其势自萎 利用御寇 顺相保也 兵强者 攻其将 兵智者 伐其情 句意 对兵力强大的敌
  • Java中的IO流详解(进阶五)

    目录 友情提醒 第一章 File类和IO技术概述 1 1 File类和IO技术的作用 1 2 创建File类对象 1 3 File类中的方法 1 4 文件过滤器 FileFileter 第二章 IO流 2 1 IO流的分类 2 2 字节输入
  • RestTemplate转发请求

    需求 服务端A接收到来自于前端的请求后 要使用RestTemplate将请求转发给服务端B 然后将服务端B的返回转发给前端 根据请求类型的不同 分为 常规请求转发 文件上传转发 文件下载转发 常规请求转发 RequestMapping tr
  • HTTP请求报错:405 Request method ‘GET‘ not supported解决方法!!(终极整理)

    1 问题场景 在项目中发送ajax请求时 控制台提示如下错误信息 org springframework web HttpRequestMethodNotSupportedException Request method GET not s
  • 【Python开发】Flask开发实战:个人博客(二)

    Flask 开发实战 个人博客 二 在 Python开发 Flask开发实战 个人博客 一 中 我们已经完成了 数据库设计 数据准备 模板架构 表单设计 视图函数设计 电子邮件支持 等总体设计的内容 本篇博客将介绍博客前台的实现 博客前台需
  • 【AnyQ】遇到的问题整理(二)

    一 version GLIBCXX 3 4 22 not found 问题描述 run server usr lib x86 64 linux gnu libstdc so 6 version GLIBCXX 3 4 22 not foun
  • 华为OD机试 - 最远足迹(Java)

    题目描述 某探险队负责对地下洞穴进行探险 探险队成员在进行探险任务时 随身携带的记录器会不定期地记录自身的坐标 但在记录的间隙中也会记录其他数据 探索工作结束后 探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置 仪器记录坐
  • mongon库加上权限认证后,java程序连接异常

    现象 linux库中mongo库 用超级管理员添加了一个超级管理员 并加了认证 通过spring等相关的配置文件获取Mongo数据库连接 抛出异常 如下 Caused by org springframework data mongodb
  • MySQL——关联查询&组合查询

    1 子查询 SELECT FROM data order WHERE id IN SELECT order id FROM data order detail WHERE goods id IN SELECT id FROM data go
  • 实对称矩阵的特征值一定为实数证明

    虽然不是什么有应用价值的定理 但是每次看到实对称矩阵时总会有疑惑 现在记录下来 证明 设有实对称矩阵 A 它的特征值与对应的特征向量分别为 lambda x 另外记 overline A overline lambda overline x
  • MySQL中的多表查询详解

    目录 多表查询概述 一 多表关系 1 一对多 多对一 2 多对多 3 一对一 二 多表查询概述 1 内连接 1 1 隐式连接 1 2 显示连接 2 外连接 1 左外连接 2 右外连接 3 自连接 4 联合查询 5 子查询 5 1 按照查询结