MongoDB常见面试题总结(一)MongoDB面试题及答案

news2025/2/24 23:51:59

在这里插入图片描述

1. MongoDB的特点:

你能简要介绍一下MongoDB吗?它与关系型数据库的主要区别是什么?

MongoDB是一个开源、面向文档的NoSQL数据库,它采用了BSON(Binary JSON)格式存储数据。以下是MongoDB与关系型数据库的主要区别:

  1. 数据模型:

    • MongoDB: MongoDB是面向文档的数据库,数据以文档的形式存储,文档是一种类似于JSON的二进制表示形式(BSON)。文档可以包含嵌套的结构和数组。
    • 关系型数据库: 关系型数据库使用表格结构,数据被组织为行和列,遵循固定的表结构,需要事先定义表的结构。
  2. Schema(模式):

    • MongoDB: MongoDB是schema-less的,即不需要提前定义文档的结构,每个文档可以有不同的字段。这使得MongoDB更加灵活,适合处理半结构化或不确定结构的数据。
    • 关系型数据库: 关系型数据库需要提前定义表的结构,包括列名、数据类型等,数据必须符合预定义的模式。
  3. 查询语言:

    • MongoDB: MongoDB使用丰富的查询语言,支持丰富的查询表达式和嵌套文档的查询。
    • 关系型数据库: SQL是关系型数据库的查询语言,使用表连接等方式进行查询。
  4. 扩展性:

    • MongoDB: MongoDB具有良好的横向扩展性,支持分片(Sharding),可以轻松地扩展存储和处理能力。
    • 关系型数据库: 通常采用垂直扩展,通过升级硬件来增加性能,这有一定的限制。
  5. 事务支持:

    • MongoDB: MongoDB在某些版本中引入了事务支持,但在早期版本中是不支持原子事务的。事务支持主要用于处理多文档的操作。
    • 关系型数据库: 关系型数据库通常具有原子性、一致性、隔离性和持久性(ACID)的事务支持。
  6. 复杂性:

    • MongoDB: MongoDB相对较简单,尤其适合处理大量文档之间存在嵌套关系的场景,如JSON格式数据。
    • 关系型数据库: 关系型数据库具有强大的关联性和复杂的查询功能,适合需要复杂关系和事务的应用。

MongoDB更适用于需要灵活性、快速迭代和半结构化数据的场景,而关系型数据库更适用于具有固定模式、需要严格事务和复杂查询的场景。

MongoDB的数据存储格式是什么?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MongoDB使用BSON(Binary JSON)作为数据的存储格式。BSON是一种类似于JSON的二进制表示形式,它支持一些额外的数据类型,如日期、二进制数据和特定于MongoDB的数据类型。BSON的二进制表示形式使得数据在传输和存储时更为紧凑和高效。

BSON的基本数据类型包括:

  1. Double: 64位双精度浮点数。
  2. String: UTF-8字符串。
  3. Object: 嵌套文档。
  4. Array: 数组。
  5. Binary Data: 二进制数据。
  6. Undefined: 未定义的数据类型(已弃用)。
  7. ObjectID: 文档的唯一标识。
  8. Boolean: 布尔类型。
  9. Date: 日期类型。
  10. Null: 空值。
  11. Regular Expression: 正则表达式。
  12. JavaScript Code: JavaScript代码。
  13. Symbol: 符号(已弃用)。
  14. JavaScript Code with Scope: 包含作用域的JavaScript代码。
  15. 32-bit Integer: 32位整数。
  16. Timestamp: 时间戳。
  17. 64-bit Integer: 64位整数。
  18. Decimal128: 128位十进制浮点数(从MongoDB 3.4版本开始支持)。
  19. Min Key: 最小键值。
  20. Max Key: 最大键值。

BSON的灵活性和二进制格式的特性使得MongoDB能够高效地存储和检索各种类型的数据。

2. 数据建模和Schema设计:

什么是文档(Document)?MongoDB的文档是如何组织的?

在这里插入图片描述

在MongoDB中,文档(Document)是数据的基本单元,它相当于关系数据库中的行。一个文档是一个由键值对组成的数据结构,它使用了 BSON(Binary JSON)格式进行存储。文档是MongoDB中数据的原子单位,可以包含多种类型的数据,包括嵌套文档和数组。

MongoDB的文档组织方式如下:

  1. 键值对结构: 文档由一个或多个键值对组成,每个键值对包含一个字段名和相应的值。字段名是字符串,而值可以是各种数据类型,包括其他文档、嵌套数组等。

  2. 嵌套结构: 文档可以包含嵌套的文档,形成层级结构。这使得MongoDB支持复杂的数据模型,可以更好地反映应用程序的数据关系。

  3. 动态模式: MongoDB是一个无模式(schema-less)的数据库,允许不同文档拥有不同的字段。这意味着同一集合中的文档可以有不同的结构,而不需要提前定义表结构。

示例MongoDB文档:

{
  "_id": ObjectId("5f5f5e285f3d1a431f6f8b9b"),
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Cityville",
    "zip": "12345"
  },
  "hobbies": ["reading", "traveling", "photography"]
}

在上面的示例中,_id是文档的唯一标识,nameageaddresshobbies都是文档中的字段,其中address是一个嵌套的文档,而hobbies是一个包含多个元素的数组。这种灵活的文档结构使得MongoDB适用于各种数据模型。

如何在MongoDB中设计Schema?有没有固定的Schema?

MongoDB是一个无模式(schema-less)的数据库,这意味着与传统的关系型数据库不同,MongoDB不要求在插入文档之前定义固定的模式(Schema)。文档在同一集合中可以有不同的字段,这使得MongoDB更加灵活,适应了不断变化的数据结构。

在MongoDB中,设计Schema通常涉及以下几个方面:

  1. 灵活性: MongoDB允许文档在同一集合中具有不同的字段,因此可以更灵活地适应不同数据模型和需求。

  2. 索引: 尽管MongoDB是一个无模式的数据库,但仍可以创建索引以提高查询性能。索引通常针对经常查询的字段,通过提供高效的查找和排序来加速查询。

  3. 嵌套文档和数组: 利用MongoDB的嵌套文档和数组功能,可以在一个文档中表示复杂的数据结构,避免使用多个表和外键的关系模型。

  4. 字段命名规范: 为了保持一致性和可读性,可以定义一些字段命名规范,使得字段在文档中有清晰的含义。

尽管MongoDB提供了灵活性,但在实际应用中,为了方便查询和维护,仍然建议在设计时考虑某种结构。合理的设计可以提高查询性能,减少冗余数据,并更好地支持应用程序的需求。例如,可以根据应用程序的查询模式和频率,选择将某些字段嵌套在文档中,或者创建索引以支持特定的查询。

MongoDB支持多少级嵌套文档?如何处理复杂的数据结构?

MongoDB支持多级嵌套文档,可以在文档中嵌套其他文档,形成复杂的数据结构。这样的嵌套文档可以包含字段、嵌套文档或数组。

在MongoDB中,处理复杂的数据结构有几个方面的考虑:

  1. 嵌套文档: 可以在文档中嵌套其他文档,形成层级结构。例如,一个文档可以包含一个字段,该字段的值是另一个文档。

    {
      "_id": 1,
      "name": "John Doe",
      "address": {
        "city": "New York",
        "zip": "10001"
      }
    }
    
  2. 嵌套数组: 可以在文档中嵌套数组,允许表示一对多的关系。例如,一个文档可以包含一个字段,该字段的值是一个包含多个元素的数组。

    {
      "_id": 2,
      "name": "Jane Doe",
      "hobbies": ["reading", "traveling", "photography"]
    }
    
  3. 多级嵌套: 可以将嵌套文档和数组结合使用,形成多级嵌套的数据结构。

    {
      "_id": 3,
      "title": "Book",
      "authors": [
        {
          "name": "Author 1",
          "affiliation": {
            "organization": "University A",
            "department": "Computer Science"
          }
        },
        {
          "name": "Author 2",
          "affiliation": {
            "organization": "University B",
            "department": "Physics"
          }
        }
      ]
    }
    

处理复杂的数据结构时,应根据应用程序的查询需求和数据访问模式选择适当的结构。嵌套结构的使用可以提高查询性能和降低数据冗余,但也需要根据具体情况权衡灵活性和维护成本。

3. 查询语言和操作:

如何在MongoDB中执行查询?可以提到一些基本的查询操作。

在MongoDB中,查询操作是通过使用find方法进行的,这是一个非常灵活且功能强大的查询工具。以下是一些基本的MongoDB查询操作:

  1. 查找所有文档: 使用find方法,不带参数,将返回集合中的所有文档。

    db.collectionName.find()
    
  2. 指定查询条件: 可以使用find方法的参数指定查询条件,以筛选满足条件的文档。

    db.collectionName.find({ key: value })
    
  3. 投影: 使用find方法的第二个参数指定投影,以选择要返回的字段。

    db.collectionName.find({}, { field1: 1, field2: 1, _id: 0 })
    
  4. 条件操作符: 使用条件操作符,如$eq$ne$gt$lt等,进行更复杂的条件查询。

    db.collectionName.find({ field: { $gt: value } })
    
  5. 逻辑操作符: 使用逻辑操作符,如$and$or$not,结合多个条件进行查询。

    db.collectionName.find({ $or: [{ key1: value1 }, { key2: value2 }] })
    
  6. 正则表达式: 使用正则表达式进行模糊匹配。

    db.collectionName.find({ field: /pattern/ })
    
  7. 排序: 使用sort方法对结果进行排序。

    db.collectionName.find().sort({ field: 1 }) // 升序
    
  8. 限制返回结果数量: 使用limit方法限制返回结果的数量。

    db.collectionName.find().limit(10)
    

这些是MongoDB中一些常见的基本查询操作,但还有更多高级功能,如索引的使用、聚合管道等,可根据具体需求选择合适的查询方式。

什么是索引,为什么在MongoDB中使用索引很重要?

在MongoDB中,查询操作是通过使用find方法进行的,这是一个非常灵活且功能强大的查询工具。以下是一些基本的MongoDB查询操作:

  1. 查找所有文档: 使用find方法,不带参数,将返回集合中的所有文档。

    db.collectionName.find()
    
  2. 指定查询条件: 可以使用find方法的参数指定查询条件,以筛选满足条件的文档。

    db.collectionName.find({ key: value })
    
  3. 投影: 使用find方法的第二个参数指定投影,以选择要返回的字段。

    db.collectionName.find({}, { field1: 1, field2: 1, _id: 0 })
    
  4. 条件操作符: 使用条件操作符,如$eq$ne$gt$lt等,进行更复杂的条件查询。

    db.collectionName.find({ field: { $gt: value } })
    
  5. 逻辑操作符: 使用逻辑操作符,如$and$or$not,结合多个条件进行查询。

    db.collectionName.find({ $or: [{ key1: value1 }, { key2: value2 }] })
    
  6. 正则表达式: 使用正则表达式进行模糊匹配。

    db.collectionName.find({ field: /pattern/ })
    
  7. 排序: 使用sort方法对结果进行排序。

    db.collectionName.find().sort({ field: 1 }) // 升序
    
  8. 限制返回结果数量: 使用limit方法限制返回结果的数量。

    db.collectionName.find().limit(10)
    

这些是MongoDB中一些常见的基本查询操作,但还有更多高级功能,如索引的使用、聚合管道等,可根据具体需求选择合适的查询方式。

MongoDB中的聚合框架是用来做什么的?

MongoDB中的聚合框架是用于进行数据聚合和转换的工具,通过构建管道操作链,可以对文档进行多个阶段的处理。聚合框架的主要目的是在数据库中执行复杂的数据处理操作,类似于关系型数据库中的SQL聚合函数。

聚合框架提供了一组强大的操作符和阶段,使用户能够以灵活的方式处理数据。一般而言,聚合框架用于以下一些常见的任务:

  1. 数据过滤和筛选: 可以使用$match阶段来选择符合特定条件的文档。

    db.collection.aggregate([
      { $match: { field: value } }
    ])
    
  2. 数据转换和投影: 使用$project阶段对文档进行投影,选择要返回的字段,并可以进行计算和重命名。

    db.collection.aggregate([
      { $project: { newField: "$existingField", _id: 0 } }
    ])
    
  3. 分组和统计: 使用$group阶段进行分组,可以进行统计操作,如计数、求和、平均值等。

    db.collection.aggregate([
      { $group: { _id: "$field", count: { $sum: 1 } } }
    ])
    
  4. 排序: 使用$sort阶段对结果进行排序。

    db.collection.aggregate([
      { $sort: { field: 1 } }
    ])
    
  5. 限制结果数量: 使用$limit阶段限制返回结果的数量。

    db.collection.aggregate([
      { $limit: 10 }
    ])
    
  6. 联接操作: 虽然MongoDB不支持传统的SQL联接操作,但通过聚合框架可以模拟一些联接操作,如$lookup

    db.orders.aggregate([
      {
        $lookup: {
          from: "products",
          localField: "productId",
          foreignField: "_id",
          as: "product"
        }
      }
    ])
    

聚合框架允许将多个阶段组合在一起,形成一个处理管道。这种灵活性使得MongoDB可以应对各种复杂的数据处理需求。
在这里插入图片描述

4. 性能优化和查询优化:

如何优化MongoDB查询性能?可以考虑索引、合理的查询语句等。

优化MongoDB查询性能涉及多个方面,包括索引的使用、合理的查询语句设计、适当的配置等。以下是一些优化MongoDB查询性能的建议:

  1. 创建索引: 索引是MongoDB中提高查询性能的关键。根据查询的字段和排序需求创建合适的索引。使用db.collection.createIndex()方法创建索引。常见的索引类型包括单字段索引、复合索引、文本索引等。

    db.collection.createIndex({ fieldName: 1 })
    
  2. 避免全表扫描: 尽量避免执行全表扫描,确保查询条件中的字段有索引。全表扫描对性能有较大影响,特别是在数据量较大时。

  3. 合理使用投影: 在查询时使用投影操作符$project,只返回需要的字段,减少数据传输的开销。

    db.collection.find({ /* 查询条件 */ }, { fieldName: 1, _id: 0 })
    
  4. 使用合适的数据类型: 使用适当的数据类型能够减小数据存储的空间占用,并提高查询性能。例如,使用整数而不是字符串存储数字。

  5. 分页查询: 对于大数据集的查询,使用limit()skip()进行分页查询,而不是一次性返回所有结果。

    db.collection.find({ /* 查询条件 */ }).skip(10).limit(10)
    
  6. 避免使用$where 避免使用$where,因为它会导致全表扫描,影响性能。

    db.collection.find({ $where: "this.fieldName > 100" })
    
  7. 使用合适的查询运算符: 根据具体查询条件选择合适的查询运算符,例如$eq$gt$lt等。

    db.collection.find({ fieldName: { $gt: 100 } })
    
  8. 利用复制集和分片: 在大规模部署中,使用复制集提高可用性,使用分片实现水平扩展。

  9. 监控和调优: 使用MongoDB提供的工具和驱动程序的性能分析功能,如explain()方法,定期监控查询性能并调整索引和查询语句。

以上建议是通用性的,具体优化策略还需根据应用的实际情况进行调整。在实施任何优化之前,最好先了解应用的查询模式、数据分布等信息。

什么是覆盖索引?为什么它对性能有影响?

覆盖索引是指索引本身包含了查询所需的所有字段,而不需要通过回表(即查询主键)来获取额外的数据。当一个查询可以仅通过索引就能满足所有需要的字段时,就称之为覆盖索引。覆盖索引对性能有积极的影响,原因如下:

  1. 减少IO操作: 覆盖索引能够减少IO操作,因为不需要去访问实际的数据行。索引通常存储在内存中,而实际的数据行可能需要从磁盘读取。通过只读取索引,可以减少对磁盘的IO操作,提高查询速度。

  2. 减少网络传输: 如果查询的数据可以完全由索引提供,那么在查询的过程中需要传输的数据量会减少。这对于分布式系统中的网络开销尤为重要。

  3. 减少CPU开销: 数据库系统在查询时需要进行解析和处理数据,覆盖索引减少了这些处理的工作量,从而减少了CPU的开销。

  4. 提高查询性能: 由于覆盖索引能够减少IO操作、网络传输和CPU开销,整体上提高了查询性能。特别是对于频繁执行的查询,性能的提升尤为显著。

覆盖索引的效果在于最大限度地减少了从存储引擎中检索数据所需的工作,将所需的数据都存储在索引中。这使得覆盖索引成为优化查询性能的一种重要手段。在设计数据库索引时,考虑覆盖索引对于提升查询性能的影响是一个常用的优化策略。

如何进行分页查询?

在进行分页查询时,可以使用MongoDB提供的limitskip方法。下面是一个基本的分页查询的示例:

# 假设我们有一个集合名为 "exampleCollection"
# 分页参数,假设每页大小为pageSize,请求第pageNum页
pageSize = 10
pageNum = 1

# 计算跳过的文档数量
skip = (pageNum - 1) * pageSize

# 执行分页查询
result = db.exampleCollection.find().skip(skip).limit(pageSize)

# 遍历查询结果
for document in result:
    print(document)

这里的skip用于跳过前面的文档,而limit用于限制返回的文档数量,从而实现分页查询的效果。需要注意的是,skip的性能在大数据集上可能会较低,因为它需要在跳过指定数量的文档后才能返回结果。

在实际应用中,还需要考虑使用合适的索引来优化分页查询的性能,以及处理分页总数等其他分页相关的信息。
在这里插入图片描述

关注公众号 洪都新府笑颜社,发送 “面试题” 即可免费领取一份超全的面试题PDF文件!!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开发】微服务整合Sentinel

目录 前言 1W:什么是Sentinel? 2W:为什么使用Sentinel? 3W:如何使用Sentinel? 1. 在pom.xml中导入Sentinel依赖坐标 2. 配置控制台 3. 访问API接口的任意端点 流量控制 1. 簇点链路 2. 快速入门…

【HTML】1px边框与1px分割线

对比图 箭头标注的是处理过的 1px分割线 使用transform的scaleY进行缩小 码 <div class"mini-heriz"></div><br><div style"border: solid 1px black; width: 300px;height: 1px;"></div> <style> .mini-heriz {wi…

Java的变量类型详解

目录 局部变量 实例变量 类变量&#xff08;静态变量&#xff09; 参数变量 实例分析 总结 在Java这门静态类型的编程语言中&#xff0c;如何巧妙地使用变量&#xff0c;就像是掌握了一把精准的雕刻刀&#xff0c;能让你在编码的世界里自由地创造。变量在Java中的应用无处…

2024年了,SEO优化是不是已经穷途末路了呢?(川圣SEO)蜘蛛池

baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; 2024年了&#xff0c;SEO优化是不是已经穷途末路了呢&#xff1f;#蜘蛛池SEO SEO优化并没有穷途末路。虽然随…

pcl弧度角度换算:rad2deg,deg2rad

角度弧度换算公式: 代码及结果在:cmath 中cos sin等常用函数的坑(弧度角度换算)-CSDN博客 pcl也有自带的rad2deg,deg2rad: 头文件 #include<pcl/common/angles.h> 代码如下 #include <iostream> #include<pcl/common/angles.h> int main() {vector<…

Linux编程4.3 网络编程-数据封装

1、数据封装 2、Internet协议&#xff08;IP&#xff09; IP的主要目的是为数据输入/输出网络提供基本算法&#xff0c;为高层协议提供无连接的传送服务。这意味着在IP将数据递交给接收站点以前不在传输站点和接收站点之间建立对话&#xff08;虚拟链路&#xff09;。它只是封…

「哈哥赠书活动 - 50期」-『AI赋能写作:AI大模型高效写作一本通』

⭐️ 赠书 - 《AI赋能写作&#xff1a;AI大模型高效写作一本通》 ⭐️ 内容简介 本书以ChatGPT为科技行业带来的颠覆性革新为起点&#xff0c;深入探讨了人工智能大模型如何为我们的创作提供强大支持。本书旨在帮助创作者更好地理解AI的价值&#xff0c;并充分利用其能力提升写…

ubuntu安装开源汇编调试器NASM

安装 安装很简单&#xff0c;直接在终端输入以下命令即可 sudo apt-get install nasm 安装完成后&#xff0c;如果可以查看到nasm的版本号即可视为安装成功 nasm -version 测试 创建汇编文件 创建一个asm文件 vim hello.asm 文件内容如下 section .datahello: db …

《ElementPlus 与 ElementUI 差异集合》el-button 属性 type=“text“ 被删除

差异 element-ui el-button中&#xff0c;属性 type"text" 定义文字按钮&#xff0c;也是链接按钮&#xff1b;element-plus el-button中&#xff0c;改为新增属性 link 并与其它 type 值配合使用&#xff1b; // element-ui <el-button type"text"&g…

网络流量监控软件AnaTraf:优化性能、排除故障的最佳选择

目录 导言 网络流量监控的重要性 AnaTraf网络万用表的功能与优势 网络故障排除与优化网络性能 结论 导言 在当今数字化时代&#xff0c;计算机网络已经成为企业和组织的核心基础设施。然而&#xff0c;网络流量的管理和监控对于确保网络性能的稳定和优化至关重要。本文将介…

商业模式的定义及其成功的四大特点

商业模式&#xff0c;作为企业运营和发展的核心架构&#xff0c;描述了企业如何创造价值、传递价值和获取价值的基本逻辑和方法。简单来说&#xff0c;商业模式就是企业为了实现其市场定位、满足客户需求、实现盈利目标而采取的一系列经营策略和行动的总和。 一个成功的商业模式…

【Linux】进程控制与进程调度

Linux进程介绍 进程的基本概念 Linux是多用户、多任务的操作系统。在这样的环境中&#xff0c;各种计算机资源的分配和管理都是以进程为单位进行的。 Linux操作系统包括三种不同类型的进程&#xff1a; 1&#xff09;交互进程&#xff1a;一种由Shell启动的进程。交互进程既可…

Java项目:基于springboot实现的OA协同办公系统(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

matplotlib系统学习记录

日期&#xff1a;2024.03.12 内容&#xff1a;将matplotlib的常用方法做一个记录&#xff0c;方便后续查找。 基本使用 # demo01 from matplotlib import pyplot as plt # 设置图片大小,也就是画布大小 fig plt.figure(figsize(20,8),dpi80)#图片大小&#xff0c;清晰度# 准…

AssetBundle打包与加载

官方文档 参照视频 1.AssetBundle打包 1.1设置资源的命名和后缀 命名只支持小写 1.2创建Editor文件夹&#xff0c;在里面创建编辑器打包AssetBundle的脚本 using UnityEditor; using System.IO;public class CreateAssetBundles {[MenuItem("Assets/Build AssetBun…

Linux:好用的Linux指令

进程的Linux指令 1.查看进程信息 ​​​​ps ajx | head -1 && ps ajx | grep 进程名创建一个进程后输入上述代码&#xff0c;会打印进程信息&#xff0c;当我们在code.exe中写入打印pid&#xff0c;ppid&#xff0c;这里也和进程信息一致。 while :; do ps ajx | he…

力扣日记3.8-【回溯算法篇】37. 解数独

力扣日记&#xff1a;【回溯算法篇】37. 解数独 日期&#xff1a;2023.3.8 参考&#xff1a;代码随想录、力扣 37. 解数独 题目描述 难度&#xff1a;困难 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只…

上位机图像处理和嵌入式模块部署(qmacvisual串口输出结果)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们谈到了图像的输入、算法的添加&#xff0c;一切看上去都没有问题。但是这中间缺少了一个重要的环节&#xff0c;那就是结果的输出。如果我…

Java中的参数传递

程序设计语言将实参传递给方法&#xff08;或函数&#xff09;的方式分为两种&#xff1a; 值传递&#xff1a;方法接收的是实参值的拷贝&#xff0c;会创建副本。引用传递&#xff1a;方法接收的直接是实参所引用的对象在堆中的地址&#xff0c;不会创建副本&#xff0c;对形…

一文掌握mysql中的查询语句

目录 1. 聚合查询1.1 聚合函数1.2 GROUP BY子句1.3 HAVING 2. 联合查询2.1 内连接2.2 外连接2.3 自连接2.4 子查询2.5 合并查询 1. 聚合查询 1.1 聚合函数 常见的统计总数、计算平局值等操作&#xff0c;可以使用聚合函数来实现&#xff0c;常见的聚合函数有&#xff1a; 函…