SQL基础——集合运算

news2025/1/24 9:27:40

集合运算

  • 前言
  • 思维导图
  • 表的加减法
    • 表的加法——UNION(并集)
      • 代码示例7.1 创建表Product2
      • 代码示例7.2 将数据插入到表Product2中(MYSQL)
      • 代码示例7.3 使用UNION对表进行加法运算
    • 包含重复行的集合运算——ALL选项
      • 代码示例7.5 保留重复行
        • 执行结果
    • 选取表中公共部分——INTERSECT(交集)
      • 代码示例 7.6 使用INTERSECT选取出表中公共部分
        • 执行结果
    • 记录的减法——EXCEPT(差集)
      • 代码示例7.7 使用EXCEPT对记录进行减法运算
        • 执行结果
      • 代码示例7.8 被减数和减数位置不同,得到的结果也不同
        • 执行结果
  • 联结(以列为单位对表进行联结)
    • 什么是联结
    • 内连接——INNER JOIN
      • 代码示例7.9 将两张表进行内联结
        • 执行结果
        • 内联结要点①——FROM子句
        • 内联结要点②——ON子句
        • 内联结要点③——SELECT子句
      • 代码示例7.10 内联结和WHERE子句结合使用
        • 执行结果
    • 外联结——OUTER JOIN
      • 代码清单7.11 将两张表进行外联结
        • 执行结果
      • 外联结要点①——选取出单张表中全部信息
      • 外联结要点②——每张表都是主表吗?
      • 代码示例7.12 使用左外联结
    • 3张以上的表的联结
      • 代码示例 7.14 对3张表进行内联结
        • 执行结果
    • 交叉联结
      • 代码示例7.15 将两张表进行交叉联结
        • 执行结果
  • 如果博主的文章对您有所帮助,可以<font color=orange>评论、<font color=green>点赞、<font color=bule>收藏,<font color=black>支持一下博主!!!

前言

系统学习SQL的笔记,用于记录学习过程。

思维导图

在这里插入图片描述

表的加减法

集合运算就是对满足同一规则的记录进行的加减等四则运算。

表的加法——UNION(并集)

在学习具体的使用方法之前,先添加一张表

代码示例7.1 创建表Product2

CREATE TABLE Product2 (
    product_id CHAR ( 4 ) NOT NULL,
    product_name VARCHAR ( 100 ) NOT NULL,
    product_type VARCHAR ( 32 ) NOT NULL,
    sale_price INTEGER,
    purchase_price INTEGER,
regist_date DATE,
PRIMARY KEY ( product_id ));

为表Product2添加记录,商品编号(product_id)为0001-0003的商品与之前Product表中的商品相同,而编号为0009和手套和0010的水壶是Product表中没有的商品。

代码示例7.2 将数据插入到表Product2中(MYSQL)

--指定mysql
START TRANSACTION;
INSERT INTO Product2
VALUES
    ('0001', 'T恤衫', '衣服', 1000, 500, '2008-09-20' );
INSERT INTO Product2
VALUES
    ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11' );
INSERT INTO Product2
VALUES
    ('0003', '运动T恤', '衣服', 4000, 2800, NULL );
INSERT INTO Product2
VALUES
    ('0009', '手套', '衣服', 800, 500, NULL );
INSERT INTO Product2
VALUES
    ('0010', '水壶', '厨房用具', 2000, 1700, '2009-09-20' );
COMMIT;

进行两张表的加法运算,Product表+Product2表的加法运算

代码示例7.3 使用UNION对表进行加法运算

SELECT
    product_id,
    product_name 
FROM
    Product UNION
SELECT
    product_id,
    product_name 
FROM
    Product2;

执行结果为两张表的全部商品
在这里插入图片描述
注意: 集合运算符会除去重复的记录

集合运算的注意事项
注意事项①——作为运算对象的记录的列数必须相同
注意事项②——作为运算对象的记录中列的类型必须相同
注意事项③——可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次

包含重复行的集合运算——ALL选项

在UNION的结果中保留重复行的语法。只需要在UNION后面添加ALL关键字就可以了。

代码示例7.5 保留重复行

SELECT
    product_id,
    product_name 
FROM
    Product UNION ALL
SELECT
    product_id,
    product_name 
FROM
    Product2;

执行结果

在这里插入图片描述

法则7.2 在集合运算符中使用ALL选项,可以保留重复行

选取表中公共部分——INTERSECT(交集)

选取两个记录集合中公共部分。
目前仅支持:Oracle SQL Server DB2 PostgreSQL

代码示例 7.6 使用INTERSECT选取出表中公共部分

--目前仅支持:Oracle  SQL Server  DB2  PostgreSQL
SELECT
    product_id,
    product_name 
FROM
    Product INTERSECT
SELECT
    product_id,
    product_name 
FROM
    Product2ORDER BY product_id;

执行结果

在这里插入图片描述

记录的减法——EXCEPT(差集)

代码示例7.7 使用EXCEPT对记录进行减法运算

目前仅支持:SQL Server DB2 PostgreSQL

--目前仅支持:SQL Server  DB2  PostgreSQL
SELECT
    product_id,
    product_name 
FROM
    Product EXCEPT
SELECT
    product_id,
    product_name 
FROM
    Product2 ORDER BY product_id;

执行结果

在这里插入图片描述

代码示例7.8 被减数和减数位置不同,得到的结果也不同

--SQL Server  DB2  PostgreSQL
-- 从Product2的记录中除去Product中的记录
SELECT
    product_id,
    product_nam e 
FROM
    Product2 EXCEPT
SELECT
    product_id,
    product_nam e 
FROM
    Product 
ORDER BY
    product_id;

执行结果

在这里插入图片描述

联结(以列为单位对表进行联结)

什么是联结

联结(JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算。UNION是以行(纵向)为单位进行操作,而联结则是以列(横向)为单位进行的。

在这里插入图片描述

内连接——INNER JOIN

使用product表和Product表表进行练习
相应的建表语句

CREATE TABLE ShopProduct (
    shop_id CHAR ( 4 ) NOT NULL,
    shop_name VARCHAR ( 200 ) NOT NULL,
    product_id CHAR ( 4 ) NOT NULL,
quantity INTEGER NOT NULL,
PRIMARY KEY ( shop_id, product_id ));

插入的数据

--指定mysql
START TRANSACTION;
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000A', '东京', '0001', 30 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000A', '东京', '0002', 50 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000A', '东京', '0003', 15 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000B', '名古屋', '0002', 30 );
INSERT INTO ShopProduct ( sho _id, shop_name, product_id, quantity )
VALUES
    ( '000B', '名古屋', '0003', 120 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000B', '名古屋', '0004', 20 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000B', '名古屋', '0006', 10 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000B', '名古屋', '0007', 40 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000C', '大阪', '0003', 20 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000C', '大阪', '0004', 50 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000C', '大阪', '0006', 90 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000C', '大阪', '0007', 70 );
INSERT INTO ShopProduct ( shop_id, shop_name, product_id, quantity )
VALUES
    ( '000D', '福冈', '0001', 100 );
COMMIT;

Product表

CREATE TABLE `Product` (
  `product_id` char(4) CHARACTER SET utf8 NOT NULL,
  `product_name` varchar(100) CHARACTER SET utf8 NOT NULL,
  `product_type` varchar(32) CHARACTER SET utf8 NOT NULL,
  `sale_price` int(11) DEFAULT NULL,
  `purchase_price` int(11) DEFAULT NULL,
  `regist_date` date DEFAULT NULL,
  PRIMARY KEY (`product_id`)
)

Product表与ShopProduct表的数据
Product:
在这里插入图片描述
ShopProduct:
在这里插入图片描述

代码示例7.9 将两张表进行内联结

--支持 SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name,
    P.sale_price 
FROM
    ShopProduct AS SP
    INNER JOIN Product AS P ON SP.product_id = P.product_id;

执行结果

在这里插入图片描述

内联结要点①——FROM子句

进行联结是需要在FROM子句中使用多张表

内联结要点②——ON子句

ON后面为联结条件,进行内联结时必须使用ON子句,并且要书写在FROM和WHERE之间。

内联结要点③——SELECT子句

使用联结时SELECT子句中的列需要按照<表的别名>.<列名>的格式进行书写,避免书写格式出错。
内连接与WHERE子句结合使用

代码示例7.10 内联结和WHERE子句结合使用

--指定 SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name,
    P.sale_price 
FROM
    ShopProduct AS SP
    INNER JOIN Product AS P  ON SP.product_id = P.product_id 
WHERE
    SP.shop_id = '000A';

执行结果

在这里插入图片描述

外联结——OUTER JOIN

代码清单7.11 将两张表进行外联结

--指定 SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name,
    P.sale_price 
FROM
    ShopProduct AS SP
    RIGHT OUTER JOIN Product AS P  ON SP.product_id = P.product_id;

执行结果

在这里插入图片描述

外联结要点①——选取出单张表中全部信息

可以发现外联结相对于内联结多了两条记录。多出的两条记录是高压锅和圆珠笔,这两条记录在ShopProduct表中并不存在,也就是说,这2种商品在任何商店中都没有销售。由于内联结只能选取同时存在于两张表中的数据,因此只在Product表中存在的2种商品并没有出现在结果之中。

而对于外联结来说,只要数据存在于某一张表中,就能够读取出来。
注意:在实际的业务汇总,如果想生成固定行数的单据时,就需要使用外联结,如果使用内联结的话,根据SELECT语句执行是商品库存状况的不同,结果的行数也会发生改变。

外联结要点②——每张表都是主表吗?

外联结还有一点非常重要,那就是要把那张表作为主表。最终的结果中会包含主表内所有的数据。指定主表的关键字是LEFT和RIGHT。
使用LEFT时FROM子句中写在左侧的表是主表,使用RIGHT时右侧的表是主表。

代码示例7.12 使用左外联结

--指定 SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name,
    P.sale_price 
FROM
    Product AS P
    LEFT OUTER JOIN ShopProduct AS SP  ON SP.product_id = P.product_id;

在这里插入图片描述
注意: 外联结中使用LEFT、RIGHT来指定主表。使用二者所得到的结果完全相同。

3张以上的表的联结

通常联结只涉及到两张表,但是有时候也会出现联结3张以上的表的情况。原则上联结表的数量并没有限制。
先创建一张用于管理库存商品的表。

CREATE TABLE InventoryProduct (
    inventory_id CHAR ( 4 ) NOT NULL,
    product_id CHAR ( 4 ) NOT NULL,
inventory_quantity INTEGER NOT NULL,
PRIMARY KEY ( inventory_id, product_id ));

插入数据

--指定mysql
START TRANSACTION;
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0001', 0 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0002', 120 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0003', 200 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0004', 3 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0005', 0 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0006', 99 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0007', 999 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P001', '0008', 200 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0001', 10 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0002', 25 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0003', 34 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0004', 19 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0005', 99 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0006', 0 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
        ( 'P002', '0007', 0 );
    INSERT INTO InventoryProduct ( inventory_id, product_id, inventory_quantity )
    VALUES
    ( 'P002', '0008', 18 );
COMMIT;

代码示例 7.14 对3张表进行内联结

--指定SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name,
    P.sale_price,
    IP.inventory_quantity 
FROM
    ShopProduct AS SP
    INNER JOIN Product AS P ON SP.product_id = P.product_id
    INNER JOIN InventoryProduct AS IP ON SP.product_id = IP.product_id 
WHERE
    IP.inventory_id = 'P001';

执行结果

在这里插入图片描述

交叉联结

其实这种联结在实际业务中并不会使用,交叉联结本身非常简单,但是其结果有点麻烦。
将Product表和ShopProduct表进行交叉联结。

代码示例7.15 将两张表进行交叉联结

--指定 SQL Server  DB2  PostgreSQL  MySQL
SELECT
    SP.shop_id,
    SP.shop_name,
    SP.product_id,
    P.product_name 
FROM
    ShopProduct AS SP
    CROSS JOIN Product AS P;

执行结果

ShopProduct表中有11条记录,Product表存在8条记录,所以结果中包含了11*8=88条记录。
交叉查询对满足相同规则的表进行交叉联结的集合运算符是CROSS JOIN(笛卡尔积)。进行交叉联结时无法使用内联结和外联结中所使用的ON子句,这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积。

内联结时交叉联结的一部分,“内”可以理解为“包含在交叉联结结果中的部分”。相反,外联结“外”可以理解为“交叉联结结果之外的部分”

注意:交叉联结没有应用到实际业务之中的原因有两个。一其结果没有实用价值,二是由于其结果行数太多,需要花费大量的运算时间和高性能设备的支持。

如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!

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

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

相关文章

自动机器学习-auto-sklearn

1、前言 自动机器学习&#xff08;AutoML&#xff09; 旨在通过让一些通用步骤 (如数据预处理、模型选择和调整超参数) 自动化&#xff0c;来简化机器学习中生成模型的过程。AutoML是指尽量不通过人来设定超参数&#xff0c;而是使用某种学习机制&#xff0c;来调节这些超参数…

阿里微服务架构到底多牛逼:深入解析Apache Dubbo与实战

本书的由来 在Apache Dubbo (以下简称Dubbo)重新开源之前&#xff0c;Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈&#xff0c;很多公司内部也会建立私有分支自己维护&#xff0c;其中Dubbox 就是基于Dubbo分支进行扩展并二次维护的。重新开源后&#xff0c;社区维…

【ESXi 7.x内部升级】ESXi 升级 —— 小版本升级(7.X或8.X版本内升级)

目录4. 小版本升级&#xff08;7.X或8.X版本内升级&#xff09;4.1 示例 — 使用 vSphere Lifecycle Manager升级 ESXi目标&#xff1a;将 VMware ESXi 7.0 U2e 升级为 7.0 U3f&#xff08;1&#xff09;在vSphere Client 中查看需要升级的 ESXi 版本&#xff08;2&#xff09;…

【微信篇】PC端微信文件夹里的“微信号“

【微信篇】PC端微信文件夹里的"微信号" 更新记录最敷衍的软件一微信&#xff01;&#xff01;&#xff01;—【蘇小沐】 文章目录【微信篇】PC端微信文件夹里的"微信号"1.实验环境PC端微信文件夹里的"微信号"总结1.实验环境 系统版本Windows 1…

深度学习入门(六十四)循环神经网络——编码器-解码器架构

深度学习入门&#xff08;六十四&#xff09;循环神经网络——编码器-解码器架构前言循环神经网络——编码器-解码器架构课件重新考察CNN重新考察RNN编码器-解码器架构总结教材1 编码器2 解码器3 合并编码器和解码器4 训练模型5 小结参考文献前言 核心内容来自博客链接1博客连…

分布式任务调度 - PowerJob

一、简介 1、介绍 PowerJob&#xff08;原OhMyScheduler&#xff09;是全新一代分布式任务调度与计算框架&#xff0c;其主要功能特性如下&#xff1a; 使用简单&#xff1a;提供前端Web界面&#xff0c;允许开发者可视化地完成调度任务的管理&#xff08;增、删、改、查&am…

数据库原理及MySQL应用 | 约束

约束是保证数据完整性的一种数据库对象&#xff0c;按约束作用不同&#xff0c;分为七种。 约束从字面上来看就是受到限制&#xff0c;它是附加在表上&#xff0c;通过限制列中、行中、表之间数据来保证数据完整性的一种数据库对象。 在MySQL中&#xff0c;有多种约束&#xf…

设计模式原则 - 开闭原则(五)

开闭原则一 官方定义基本介绍二 案例演示普通实现方式案例分析开闭原则实现案例分析三 注意事项一 官方定义 开闭原则&#xff08; Open Close Principle &#xff09;&#xff0c;又称为OCP原则&#xff0c;他的官方定义如下&#xff1a; Software entities like classes,modu…

基于Java+Swing+Mysql实现停车场管理系统

基于JavaSwingMysql实现停车场管理系统一、系统介绍二、系统展示三、其它1.其他系统实现一、系统介绍 1.系统功能 用户 1.登录系统 2.信息查询 包含计费标准&#xff0c;当前在场信息&#xff0c;用户历史信息&#xff0c;用户个人信息&#xff0c;出入场信息&#xff0c;当前…

Win10提示错误代码0xc0000001的解决办法

​有一些朋友在使用Win10系统的时候会遇到蓝屏故障&#xff0c;提示“无法正常启动你的电脑&#xff0c;在多次尝试后&#xff0c;你的电脑上的操作系统仍无法启动&#xff0c;因此需求对其进行修复。” Win10提示恢复无法正常启动你的电脑0xc0000001 故障原因&#xff1a; 错误…

实战案例:初探工程配置 图标组件热身

点击上方卡片“前端司南”关注我您的关注意义重大原创前端司南前言本文是 基于ViteAntDesignVue打造业务组件库[1] 专栏第 3 篇文章【实战案例&#xff1a;初探工程配置 & 图标组件热身】&#xff0c;我将从业务系统中最基础的图标组件入手&#xff0c;带着读者们练练手找找…

websocket的用处及vue和SpringBoot和nginx的引入-入门

websocket的用处及vue和SpringBoot的引入-入门 为什么要有websocket 微信 想一个场景&#xff0c;扫码登录&#xff0c;服务器并不知道用户有没有扫码&#xff0c;怎么办&#xff0c;一种办法是HTTP定时轮询&#xff0c;1-2秒就请求一次服务端&#xff0c;看看用户有没有扫码…

5.3 常见的电感式和电容式感测原理及应用

常见的电感式和电容式感测应用1、电感式和电容式工作原理1.1 电感式感测工作原理1.2 电容式感测工作原理2 FDC&#xff1a;电容式液位感测2.1 电容技术在液位感测中的优势2.2 电容式液位感测入门3 LDC&#xff1a;电感式触控按钮4 LDC&#xff1a;增量编码器和事件计数5 LDC&am…

再学C语言10:字符串(1)

一、字符串定义 字符串&#xff1a;一个或多个字符的序列 "hello world!" 双引号并不是字符串的一部分&#xff0c;只是用于通知编译器其中包含了一个字符串 C没有为字符串定义专门的变量类型&#xff0c;而是将其存储在char数组中 字符串中的字符存放在相邻的存…

Amazon 4.7 星评,领域新经典,了解服务设计就读它

2011 年&#xff0c;Adaptive Path 公司的 Brandon Schauer 粗略估算&#xff0c;美国每年在服务的规划和设计上大约花费 20 亿美元&#xff0c;但其中仅有 7000 万美元&#xff08;大约 3.5%&#xff09;花在了“服务设计”上。做另外 96.5% 的工作的那些人&#xff0c;从不觉…

参加大学生数学建模大赛,Matlab和Python到底哪个更好?

前言 后台的小伙伴经常会问编程过程中&#xff0c;MATLAB和Python到底哪个更好&#xff1f;这个问题一直困惑很多同学&#xff0c;今天小编来给大家从实用型来综合分析一下&#xff1a; 首先从两者各自的应用做个对比。 一、python的优势 Python相对于Matlab最大的优势&…

Mac M2芯 k8s(minikube)超详细实战 - 单节点部分

概述 我使用的电脑是Mac pro M2芯的&#xff0c;使用的虚拟环境是 Ubuntu 22.04 &#xff0c;M2芯兼容性不是特别好&#xff0c;所以尽量跟我博客中的版本保持一致。 虚拟机环境 Ubuntu 22.04docker &#xff1a;20.10.17minikube&#xff1a;v1.25.2 搭建minikube虚拟机环境…

【强化学习基础】强化学习的基本概念:状态、动作、智能体、策略、奖励、状态转移、轨迹、回报、价值函数

文章目录1.状态&#xff08;State&#xff09;2.动作&#xff08;Action&#xff09;3.智能体&#xff08;Agent&#xff09;4.策略&#xff08;Policy&#xff09;5.奖励&#xff08;Reward&#xff09;6.状态转移&#xff08;State transition&#xff09;7.智能体与环境交互…

高效率的Python开发工具——PyCharm v2022.3正式发布

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 PyCharm v2022.3官方正式版下载(q技术交流&#xff1a;786598704)…

wireshark抓包数据提取TCP/UDP/RTP负载数据方法

wireshark抓包数据提取TCP_UDP_RTP负载数据方法 文章目录wireshark抓包数据提取TCP_UDP_RTP负载数据方法1 背景2 TCP和UDP负载提取方式3 RTP负载提取方式1 背景 在视频抓包分析过程中&#xff0c;有时候需要从TCP、UDP、RTP中直接提取payload数据&#xff0c;比如较老的摄像机…