计算机专业知识【 轻松理解数据库四大运算:笛卡尔积、选择、投影与连接】
在数据库的世界里,有几个关键的运算操作,就像是神奇的魔法工具,能帮助我们对数据进行各种处理和组合。今天,咱们就来聊聊笛卡尔积运算、选择运算、投影运算和连接运算这四大运算,用超简单的例子让小白也能轻松理解。
一、笛卡尔积运算:数据的大融合
(一)运算定义
笛卡尔积就像是一场盛大的“联姻派对”,把两个关系(简单理解成两张表)中的元组(也就是表中的每一行)进行所有可能的组合。假如有个关系 R R R 有 m m m 个元组,另一个关系 S S S 有 n n n 个元组,那么它们的笛卡尔积 R × S R\times S R×S 就会产生 m × n m\times n m×n 个元组。
(二)实例演示
咱们来看看具体例子。假设有“学生表”和“课程表”两张表。
-
学生表:记录着学生的基本信息。
| 学生 ID | 学生姓名 |
| ---- | ---- |
| 1 | 张三 |
| 2 | 李四 | -
课程表:记录着课程的相关信息。
| 课程 ID | 课程名称 |
| ---- | ---- |
| C01 | 数学 |
| C02 | 语文 |
当学生表和课程表进行笛卡尔积运算时,就好像让每个学生都去和每门课程“配对”,结果如下:
| 学生 ID | 学生姓名 | 课程 ID | 课程名称 |
|---|---|---|---|
| 1 | 张三 | C01 | 数学 |
| 1 | 张三 | C02 | 语文 |
| 2 | 李四 | C01 | 数学 |
| 2 | 李四 | C02 | 语文 |
通过笛卡尔积,我们得到了学生和课程所有可能的组合情况。
二、选择运算:数据筛选小能手
(一)运算定义
选择运算就像是一个严格的“质检员”,从一个关系中找出满足特定条件的元组,它主要是对行进行筛选操作。可以想象成从一堆物品里挑出符合特定要求的那些。
(二)实例演示
还是以学生表为例,假如我们要找出学生 ID 为 1 的学生。
- 选择条件:学生 ID = 1
- 操作后结果
| 学生 ID | 学生姓名 |
| ---- | ---- |
| 1 | 张三 |
通过选择运算,我们精准地从学生表中找到了符合条件的那一行数据。
三、投影运算:聚焦关键数据
(一)运算定义
投影运算就像是一个“聚焦镜”,从一个关系中选取某些属性(也就是表中的列)组成一个新的关系,它主要是对列进行筛选操作。好比从一幅画中只提取出你感兴趣的颜色部分。
(二)实例演示
对于学生表,现在我们只关注学生姓名这一列。
- 投影列:学生姓名
- 操作后结果
| 学生姓名 |
| ---- |
| 张三 |
| 李四 |
通过投影运算,我们把注意力集中在了我们关心的列上,忽略了其他列的信息。
四、连接运算:数据的无缝拼接
(一)运算定义
连接运算就像是一个“拼接大师”,将两个或多个关系(表)按照一定的条件组合成一个新的关系。常见的连接类型有等值连接、自然连接等,自然连接是在等值连接的基础上,去除重复的属性列。
(二)实例演示
除了学生表和课程表,我们再引入一个“选课表”,它记录着学生选择的课程信息。
- 选课表
| 学生 ID | 课程 ID |
| ---- | ---- |
| 1 | C01 |
| 2 | C02 |
现在进行自然连接操作,以“学生 ID”和“课程 ID”作为连接条件,把学生表、课程表和选课表连接起来。
- 操作后结果
| 学生 ID | 学生姓名 | 课程 ID | 课程名称 |
| ---- | ---- | ---- | ---- |
| 1 | 张三 | C01 | 数学 |
| 2 | 李四 | C02 | 语文 |
通过连接运算,我们把三个表中相关的数据组合在了一起,形成了一个更完整、更有价值的信息表。
总结一下,笛卡尔积是对两个表进行全面组合,产生大量可能的组合结果;选择是按条件筛选行,精准定位符合要求的数据行;投影是选取列,让我们聚焦关键信息;连接是将多个表按条件组合,把分散的数据整合在一起。
相关文章:
计算机专业知识【 轻松理解数据库四大运算:笛卡尔积、选择、投影与连接】
在数据库的世界里,有几个关键的运算操作,就像是神奇的魔法工具,能帮助我们对数据进行各种处理和组合。今天,咱们就来聊聊笛卡尔积运算、选择运算、投影运算和连接运算这四大运算,用超简单的例子让小白也能轻松理解。 …...
C/C++字符串格式化全解析:从printf到std::format的安全演进与实战指南
目录 C 语言中的格式化函数对比 1. printf / fprintf / sprintf 的异同 C 中的字符串格式化 1. 流式输出 (std::ostringstream) 2. C20/23 格式化库 (std::format,需编译器支持) 跨语言对比与最佳实践 实战建议 总结 C 语言中的格式化函数对比 1. printf / …...
【C++】stack 和 queue 的适配器模式与实现
> 🍃 本系列为初阶C的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞 …...
【python】You-Get
文章目录 1、介绍2、安装与使用文档3、下载图片4、下载视频5、下载音乐6、参考 1、介绍 You-Get is a tiny command-line utility to download media contents (videos, audios, images) from the Web, in case there is no other handy way to do it. 源码:https…...
PHP基础部分
但凡是和输入、写入相关的一定要预防别人植入恶意代码! HTML部分 语句格式 <br> <hr> 分割符 <p>插入一行 按住shift 输入! 然后按回车可快速输入html代码(VsCode需要先安装live server插件) html:<h1>标题 数字越大越往后</h1> <p…...
gitee SSH 公钥设置教程
Gitee 提供了基于 SSH 协议的 Git 服务,在使用 SSH 协议访问仓库仓库之前,需要先配置好账户 SSH 公钥。 1、生成秘钥 Windows 用户建议使用 Windows PowerShell 或者 Git Bash,在 命令提示符 下无 cat 和 ls 命令。 ssh-keygen -t ed25519 -C "Gitee SSH Key"中间…...
Java零基础入门笔记:(3)程序控制
前言 本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。 【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili Scanner对象 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类&…...
鸡兔同笼问题
鸡兔同笼问题是这样一个问题: 现有鸡、兔合装在一个笼子里。数头一共100个头,数脚一共300只脚。问有多少只鸡多少只兔? 在这里讨论这个问题的解法当然太小儿科了。但是y_tab这个C语言解释器只提供了1维数组。如果需要用到2维数组时ÿ…...
【Pytorch 库】自定义数据集相关的类
torch.utils.data.Dataset 类torch.utils.data.DataLoader 类自定义数据集示例1. 自定义 Dataset 类2. 在其他 .py 文件中引用和使用该自定义 Dataset torch_geometric.data.Dataset 类torch_geometric.data.Dataset VS torch.utils.data.Dataset 详细信息,参阅 tor…...
electron打包基本教程
从0开始搭建 概要步骤基础软件运行项目打包项目 注意事项 概要 将html打包成桌面的主流有electron和nwjs,nwjs更加简单,但是使用效果不如electron,electron打包比较麻烦,但是效果比较好,反正各有优势和缺点 步骤 基…...
实现pytorch注意力机制-one demo
主要组成部分: 1. 定义注意力层: 定义一个Attention_Layer类,接受两个参数:hidden_dim(隐藏层维度)和is_bi_rnn(是否是双向RNN)。 2. 定义前向传播: 定义了注意力层的…...
深入Flask:如何优雅地处理HTTP请求与响应
哈喽,大家好,我是木头左! 本文将带你深入了解如何在Flask中优雅地处理HTTP请求和响应,让你的应用更加高效、安全和用户友好。 创建一个简单的Flask应用 让从创建一个最简单的Flask应用开始: from flask import Flaskapp = Flask(__name__)@app.route(/) def...
JVM ②-双亲委派模型 || 垃圾回收GC
这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后,我们再了解其他两个较为重要的机制,这些都是面试中常考的知识点,有必要的话建议背出来,当然不是死记硬背,而是要有理解的背~~~如果对 JVM …...
jQuery介绍(快速、简洁JavaScript库,诞生于2006年,主要目标是简化HTML文档操作、事件处理、动画和Ajax交互)
文章目录 **核心功能 & 亮点**1. **简化 DOM 操作**2. **链式调用**3. **跨浏览器兼容**4. **便捷的事件绑定**5. **Ajax 封装**6. **动画效果** **现状与适用场景**- **传统项目维护**:许多旧系统(如 WordPress 插件、老企业网站)仍依赖…...
python旅游推荐系统+爬虫+可视化(协同过滤算法)
✅️基于用户的协同过滤算法 ✅️有后台管理 ✅️2w多数据集 这个旅游数据分析推荐系统采用了Python语言、Django框架、MySQL数据库、requests库进行网络爬虫开发、机器学习中的协同过滤算法、ECharts数据可视化技术,以实现从网站抓取旅游数据、个性化推荐和直观展…...
Ubuntu 22.04.5 LTS 安装企业微信,(2025-02-17安装可行)
一、依赖包(Ubuntu 20.04/Debian 11) 点击下载https://www.spark-app.store/download_dependencies_latest 1、 下载最新的依赖包。 请访问星火应用商店依赖包下载页面, 下载最新的依赖包。2、解压依赖包 </...
【Excel笔记_6】条件格式和自定义格式设置表中数值超过100保留1位,超过1000保留0位,低于100为默认
方法一:自定义格式 选中需要设置格式的单元格区域。右键选择设置单元格格式,或者在工具栏中选择开始 -> 数字 -> 自定义格式。在类型框中输入以下自定义格式: [>1000]0;[>100]0.0;G/通用格式解释: [>1000]0&…...
UDP与TCP
用UDP一定比用TCP快吗? 假设我们需要在a电脑的进程发一段数据到b电脑的进程我们可以选择使用TCP或UDP协议进行通信。 对于TCP这样的可靠性协议每次消息发出后都能明确知道对方有没有收到,就像打电话一样,只要“喂喂"两下对方就能回你个…...
Web开发技术概述
Web开发技术涵盖了前端和后端开发,以及数据库技术。前端开发包括使用HTML、CSS、JavaScript等原生技术,以及jQuery、Bootstrap、AngularJS、React、Vue等框架。后端开发则涉及ASP.NET、PHP、Python Web(Flask、Django)、Java Web&…...
解压rar格式的软件有哪些?8种方法(Win/Mac/手机/网页端)
RAR 文件是一种常见的压缩文件格式,由尤金・罗谢尔(Eugene Roshal)开发,因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩,大幅减小存储空间,方便数据传输与备份。然而…...
ChatGPT 根本看不懂你的项目?我写了个工具专门解决这个问题
一、问题:AI 根本“读不懂”你的项目 最近在用 ChatGPT / Claude 做代码分析的时候,遇到一个很现实的问题: 👉 项目太大,根本喂不进去,压缩包读取费力,幻觉严重 具体表现: 仓库文…...
告别SignalTap!用Quartus Prime 21的ISSP工具实时调试FPGA内部信号(保姆级图文)
颠覆传统调试:Quartus Prime 21的ISSP工具实战指南 在FPGA开发的世界里,调试环节往往是最耗费时间和资源的阶段。传统SignalTap II虽然功能强大,但对于资源紧张的中低端Cyclone或MAX 10系列FPGA项目来说,它就像一台豪华跑车——性…...
Windows GUI自动化实战:基于OpenClaw-Win的Python桌面应用操控指南
1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫pitthawat7/openclaw-win。乍一看这个标题,你可能会有点懵——“OpenClaw”是啥?“Win”又代表什么?这其实是一个专门为Windows平台设计的开源自动化工具,核…...
Pydantic V2迁移踩坑实录:从V1.10升级到V2,我总结了这5个关键变化和避坑指南
Pydantic V2迁移实战:5个核心变更与平滑升级策略 如果你正在维护一个使用Pydantic V1.x的项目,升级到V2版本可能会让你既期待又忐忑。作为一个刚从V1.10成功迁移到V2的开发者,我想分享一些关键变化和实战经验,帮助你避开那些我踩过…...
如何彻底改造你的B站体验:BiliRoamingX完整解锁与个性化定制终极指南
如何彻底改造你的B站体验:BiliRoamingX完整解锁与个性化定制终极指南 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations and patches powered by ReVanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations 你…...
使用 Taotoken CLI 工具一键配置团队开发环境
使用 Taotoken CLI 工具一键配置团队开发环境 1. Taotoken CLI 工具概述 Taotoken CLI 工具(taotoken/taotoken)是为开发者提供的命令行工具,旨在简化团队开发环境中的大模型接入配置流程。通过该工具,团队管理员可以快速为成员…...
Perl脚本自动化日志分析与数据批量处理实操案例
Perl脚本自动化日志分析与数据批量处理实操案例 一、案例背景 在服务器运维、业务系统运行过程中,会产生海量日志文件,包含运行报错、接口请求、访问流量、异常告警等各类信息。人工逐条筛查日志效率极低,且容易遗漏关键故障信息。Perl语言具…...
在 Node.js 后端服务中集成 Taotoken 实现异步聊天补全调用
在 Node.js 后端服务中集成 Taotoken 实现异步聊天补全调用 1. 准备工作 在开始集成 Taotoken 之前,请确保已完成以下准备工作。首先登录 Taotoken 控制台,在「API 密钥」页面创建一个新的密钥并妥善保存。随后访问「模型广场」页面,记录您…...
AI 幻觉与可信度:大模型的阿喀琉斯之踵
系列:每日 AI 知识点 期数:第 03 期 主题:AI 幻觉与可信度 难度:⭐⭐(入门) 一句话:AI 会一本正经地"编造"答案。了解幻觉的成因和类型,学会判断什么时候该信任 AI,是安全使用 AI 的必修课。 一、什么是 AI 幻觉? 2023年,美国律师 Steven Schwartz 在一起…...
2025届学术党必备的五大AI辅助写作神器横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 使文本里人工智能生成所留痕迹得以降低,能够采用下面这些指令优化策略。首先&…...
