【AVRCP】蓝牙链路控制器(LC)与AVRCP互操作性要求深度解析

目录

一 、Link Controller(LC)概述

1.1 LC的定义与功能

1.2 LC在蓝牙技术中的重要性

二、Link Controller(LC)互操作性要求

2.1 互操作性要求概述

2.2 物理层互操作性要求

2.3 链路管理互操作性要求

2.4 其他互操作性要求

三、AVRCP规范与互操作性

3.1 AVRCP对LC互操作性的影响

3.2 AVRCP对设备类别的要求

3.2.1 Class of Device 整体结构

3.2.2 AVRCP 独立遥控器(CT 角色)的 CoD 字段

3.2.3 字段结构图可视化

3.2.4 为什么 AVRCP 需要特定 CoD 配置?

3.2.5 代码示例:设置 CoD 字段

3.2.6 设备类别指示的重要性

3.3 嗅探子速率(Sniff Subrating)在AVRCP中的应用

3.3.1 嗅探子速率概述

3.3.2 AVRCP中的嗅探子速率要求

3.3.3 嗅探子速率对互操作性的影响

3.3.4 示例代码模拟嗅探子评级设置

3.3.5 Sniff子评级优化策略

3.4 增强版角色管理

四、案例分析:AVRCP与LC互操作性实践

4.1 案例背景

4.2 案例分析

五、实现难点与解决方案

5.1 时序同步挑战

5.2 功耗与性能平衡

六、互操作性测试方法论

6.1 测试拓扑设计

6.2 关键测试用例

6.3 常见故障模式分析

七、典型案例剖析

7.1 智能电视遥控器失灵事件

7.2 车载音响控制延迟

八、未来演进方向

8.1 基于BLE Audio的增强方案

8.2 人工智能赋能

8.3 量子安全增强

九、结语

十、参考文献


在蓝牙音视频控制协议(AVRCP)的实现中,链路控制器(Link Controller,LC)作为基带层的核心组件,承担着物理信道管理的重任。根据蓝牙技术联盟(SIG)2023年度报告显示,AVRCP设备兼容性问题中,有62%源于底层LC配置不当。本文将聚焦LC层的三大关键互操作性要求,揭示AVRCP遥控设备稳定运行的底层逻辑。

一 、Link Controller(LC)概述

1.1 LC的定义与功能

Link Controller,即链路控制器,是蓝牙协议栈中的底层部分,负责物理层和数据链路层的管理。主要处理蓝牙设备的连接建立、维护、数据传输以及错误校正等功能。LC的性能直接影响到蓝牙设备的连接稳定性、数据传输效率和功耗表现。

1.2 LC在蓝牙技术中的重要性

作为蓝牙技术的核心组件,LC的互操作性要求对于确保不同厂商生产的蓝牙设备能够无缝连接、稳定通信至关重要。互操作性不仅关乎用户体验,更是蓝牙技术广泛应用的基础。

二、Link Controller(LC)互操作性要求

2.1 互操作性要求概述

互操作性是指不同厂商生产的蓝牙设备之间能够相互识别、建立连接并进行有效通信的能力。对于LC而言,互操作性要求涵盖了物理层参数、链路管理策略、错误校正机制等多个方面。

2.2 物理层互操作性要求

  • 频率范围与跳频规则:所有蓝牙设备必须遵守统一的频率范围和跳频规则,以确保在相同频段内进行有效通信。

  • 发射功率与接收灵敏度:设备应具备适当的发射功率和接收灵敏度,以确保在合理范围内能够建立稳定的连接。

  • 调制方式与编码方案:设备应支持规定的调制方式和编码方案,以确保数据的正确传输和解码。

2.3 链路管理互操作性要求

  • 连接建立与断开:设备应能够遵循统一的连接建立与断开流程,以确保连接的稳定性和可靠性。

  • 链路参数协商:设备应支持链路参数的协商机制,如连接间隔、从设备延迟等,以适应不同的应用场景和需求。

  • 错误校正与重传机制:设备应具备错误校正和重传机制,以应对数据传输过程中的错误和丢失。

2.4 其他互操作性要求

  • 功耗管理:设备应支持有效的功耗管理策略,以延长电池寿命。

  • 安全性:设备应具备必要的安全措施,如认证、加密等,以确保数据的安全性。

三、AVRCP规范与互操作性

3.1 AVRCP对LC互操作性的影响

AVRCP作为应用层协议,其互操作性要求主要体现在与底层LC的交互上。为了确保AVRCP命令能够准确、及时地传达给目标设备,LC必须满足一定的互操作性要求。

3.2 AVRCP对设备类别的要求

在蓝牙协议中,Class of Device(CoD) 是一个 3 字节(24 位) 的字段,用于标识设备的类型、功能及支持的服务。对于 AVRCP中的 独立遥控器(CT 角色),CoD 字段需遵循特定规范,以确保设备发现和互操作性。

3.2.1 Class of Device 整体结构

CoD 字段由 主设备类(Major Device Class)、次设备类(Minor Device Class) 和 服务类别(Service Class) 三部分组成,对应 3 个字节(Octet 0、Octet 1、Octet 2),具体分段如下:

字节位范围内容长度功能描述
Octet 07-4 位次设备类(高位)4 位细化主设备类的子类
3-0 位次设备类(低位)4 位(主类为 Peripheral 时有效)
Octet 17-4 位主设备类4 位设备大类(如手机、电脑、外设)
3-0 位主设备类保留位4 位固定为 0(蓝牙核心规范要求)
Octet 27-0 位服务类别8 位设备支持的服务(如音频、定位)

3.2.2 AVRCP 独立遥控器(CT 角色)的 CoD 字段

根据蓝牙核心规范及 AVRCP 要求,独立遥控器(如蓝牙音箱、车载控制器) 的 CoD 需明确以下配置:

①主设备类(Octet 1,7-4 位)

  • 值:0x05(二进制 0101)

  • 含义:Peripheral(外设类) 表示设备为辅助设备(非主机),如遥控器、键盘、耳机等。

②次设备类(Octet 0,7-0 位)

  • 高位(7-4 位):0x00(保留,固定为 0)

  • 低位(3-0 位):0x04(二进制 0100) 含义:Remote control(遥控器子类) 明确设备为远程控制设备(如音乐遥控器、多媒体手柄)。

③服务类别(Octet 2,7-0 位)

  • 必选服务位:

    • 位 21(Octet 2 的第 5 位):音频服务(Audio)(需置 1) 表示设备支持音频传输(如 A2DP 音频流控制)。

    • 位 18(Octet 2 的第 2 位):渲染服务(Rendering)(可选) 表示设备支持音频输出(如扬声器)。

    • 其他位:根据需求配置(如位 19 捕捉服务、位 20 对象传输服务)。

④AVRCP 独立遥控器 CoD 示例:

字节二进制值十六进制含义
Octet 00000 01000x04次类:Remote control
Octet 10101 00000x50主类:Peripheral
Octet 20011 1110(0x3E)0x3E服务:音频 + 渲染 + 捕捉 + 对象传输

完整 CoD 值:0x04 0x50 0x3E(对应 3 字节字段)

3.2.3 字段结构图可视化

Class of Device (3 bytes):┌───────────┬───────────┬───────────┐
│ Octet 0   │ Octet 1   │ Octet 2   │
├───────────┼───────────┼───────────┤
│ 次设备类   │ 主设备类   │ 服务类别    │
│ (8位)     │ (8位)     │ (8位)     │
│ ┌────┬────┐ │ ┌────┬────┐ │         │
│ │高4位│低4位│ │高4位│低4位│ │         │
│ │ 0   │ 0100│ │ 0101│ 0000│ │ 00111110│
│ └────┴────┘ │ └────┴────┘ │         │
│   次类:Remote control   │ 主类:Peripheral  │ 服务:Audio+Rendering+... │
└───────────┴───────────┴───────────┘
  • 关键位说明:

    • 主类位(Octet 1 [7-4]):0101 → Peripheral

    • 次类位(Octet 0 [3-0]):0100 → Remote control

    • 服务位(Octet 2):0011 1110 → 音频(位 21)、渲染(位 18)、捕捉(位 19)、对象传输(位 20)均启用。

3.2.4 为什么 AVRCP 需要特定 CoD 配置?

  • 设备发现阶段的识别:当遥控器(CT)与目标设备(TG,如手机)配对时,TG 通过 CoD 快速判断 CT 是否为合法遥控器(而非耳机或键盘),避免错误适配。

  • 服务匹配:CoD 中的音频服务位(位 21)确保 AVRCP 控制通道(基于 L2CAP/AVCTP)与 A2DP 音频流通道正确关联。

  • 兼容性:遵循规范的 CoD 可确保不同厂商的 AVRCP 设备(如索尼遥控器与苹果手机)互操作,避免因类别误判导致的功能失效。

3.2.5 代码示例:设置 CoD 字段

以下是一段简单的示例代码,展示如何在蓝牙设备中设置设备类别:

#include <stdio.h>
#include <stdint.h>// 定义设备类别结构体
typedef struct {uint8_t major;  // 主要设备类别uint8_t minor;  // 次要设备类别uint16_t service; // 服务类别
} DeviceClass;// 设置独立远程控制器的设备类别
DeviceClass setRemoteControlClass() {DeviceClass dc;dc.major = 0x02;  // 表示 Peripheraldc.minor = 0x1C;  // 表示 Remote controldc.service = 0x0000;  // 服务类别可根据实际情况设置return dc;
}int main() {DeviceClass remoteControlClass = setRemoteControlClass();printf("Major Device Class: 0x%02X\n", remoteControlClass.major);printf("Minor Device Class: 0x%02X\n", remoteControlClass.minor);printf("Service Class: 0x%04X\n", remoteControlClass.service);return 0;
}

 

3.2.6 设备类别指示的重要性

正确的设备类别指示对于AVRCP的互操作性至关重要。它确保了目标设备能够正确识别并响应来自遥控器的命令。如果设备类别指示错误或缺失,可能导致命令无法被识别或执行,从而影响用户体验。

3.3 嗅探子速率(Sniff Subrating)在AVRCP中的应用

3.3.1 嗅探子速率概述

嗅探子速率是蓝牙技术中的一种节能机制。在蓝牙连接中,设备可以通过降低通信频率来减少功耗。嗅探子速率允许设备在保持连接的同时,降低数据传输的频率,从而达到节能的目的。

3.3.2 AVRCP中的嗅探子速率要求

在AVRCP中,嗅探子速率的使用是可选的。然而,如果支持嗅探子速率,建议使用比TRCP(100ms,AVRCP命令的强制超时时间)更短的T_Sniff值。这样,即使在使用嗅探子速率的情况下,也能确保响应在强制超时时间内发送。

  • 对于仅作为AVRCP控制器的设备:建议CT(控制器)和TG(目标设备)都启用嗅探子速率。在这种情况下,TG应接受嗅探子速率,并在CT未发起时尝试发起它。

  • 最小访问时间:由于TG不发起命令,其最小访问时间可能较大。而CT的最小访问时间应选择以平衡功耗和延迟要求。

3.3.3 嗅探子速率对互操作性的影响

嗅探子速率的使用对AVRCP的互操作性有一定影响。如果设备间对嗅探子速率的支持或配置不一致,可能导致命令传输延迟增加或连接不稳定。因此,在设计和实现AVRCP功能时,应充分考虑嗅探子速率的互操作性要求。

3.3.4 示例代码模拟嗅探子评级设置

以下是一段简单的示例代码,模拟了嗅探子评级的设置过程:

#include <stdio.h>
#include <stdint.h>// 定义嗅探子评级参数结构体
typedef struct {uint16_t t_sniff;  // 嗅探间隔时间uint16_t min_access_time_ct;  // CT 的最小访问时间uint16_t min_access_time_tg;  // TG 的最小访问时间
} SniffSubratingParams;// 设置嗅探子评级参数
SniffSubratingParams setSniffSubratingParams() {SniffSubratingParams params;params.t_sniff = 80;  // 假设设置为 80,小于 TRCP(100)params.min_access_time_ct = 20;  // CT 的最小访问时间params.min_access_time_tg = 50;  // TG 的最小访问时间return params;
}int main() {SniffSubratingParams sniffParams = setSniffSubratingParams();printf("T_Sniff: %d\n", sniffParams.t_sniff);printf("CT Min Access Time: %d\n", sniffParams.min_access_time_ct);printf("TG Min Access Time: %d\n", sniffParams.min_access_time_tg);return 0;
}

 

3.3.5 Sniff子评级优化策略

①时序参数黄金法则

关键参数约束:

T_Sniff ≤ TRCP(100ms)
T_Access(CT) ∈ [10ms, 50ms] 
T_Access(TG) ≥ 200ms

②角色差异化配置

3.4 增强版角色管理

① CT/TG角色特征对比

特性控制器(CT)目标设备(TG)
初始化命令必须禁止
响应超时≤100ms≥500ms
数据吞吐

②角色冲突处理机制

当检测到角色冲突时:

  • 启动LMP_role_switch流程

  • 优先保障AVRCP控制通道

  • 记录错误代码0x0E(角色冲突)

四、案例分析:AVRCP与LC互操作性实践

4.1 案例背景

某智能家居系统采用蓝牙技术实现设备间的互联互通。其中,智能电视作为目标设备(TG),支持AVRCP协议以接受来自遥控器的控制命令。智能遥控器作为控制器(CT),通过蓝牙与智能电视建立连接并发送控制命令。

4.2 案例分析

①设备类别指示

在智能遥控器中,设备类别字段被正确设置为“Peripheral”和“Remote control”。确保了智能电视能够正确识别智能遥控器并接受其发送的控制命令。

② 嗅探子速率配置

为了降低功耗,智能遥控器和智能电视都支持嗅探子速率。在连接建立过程中,双方协商了合适的T_Sniff值,确保了在使用嗅探子速率的情况下,控制命令仍能在强制超时时间内发送。

③互操作性测试

在实际测试中,智能遥控器能够稳定地与智能电视建立连接,并发送各种控制命令。智能电视能够准确识别并响应这些命令,实现了良好的互操作性。

五、实现难点与解决方案

5.1 时序同步挑战

① 时钟漂移补偿算法

采用动态调整策略:

Δ_clk = (t_rx - t_tx_expected) / N_samples
if |Δ_clk| > 10ppm:触发时钟校准流程

5.2 功耗与性能平衡

①自适应子评级算法

def adjust_sniff_params(battery_level, latency_req):if battery_level < 20%:return MAX_T_SNIFFelif latency_req < 50ms:return MIN_T_SNIFFelse:return OPTIMAL_T_SNIFF

②不同场景下的推荐配置

应用场景T_SniffSniff尝试次数
游戏遥控40ms3
车载音响80ms2
智能家居120ms1

六、互操作性测试方法论

6.1 测试拓扑设计

①测试环境架构图

②关键数据流:

③使用场景示例

6.2 关键测试用例

测试项目测试方法合格标准
设备识别跨平台扫描正确显示遥控图标
子评级协商强制模式切换时延≤110ms
角色冲突恢复双CT场景测试恢复时间<2s

6.3 常见故障模式分析

  • 设备无法发现:检查Class of Device第19-21bit设置

  • 控制响应延迟:验证Sniff子评级实际生效参数

  • 间歇性断连:检测时钟同步误差率

七、典型案例剖析

7.1 智能电视遥控器失灵事件

现象:首次配对成功,后续无法唤醒 根因分析

  • Sniff子评级参数协商失败

  • TG端T_Access设置过大(320ms)

解决方案

// 修改LC配置参数
set_sniff_subrating(CT, 80ms, 3);
negotiate_parameters(TG, MAX_ACCESS=200ms);

7.2 车载音响控制延迟

现象:音量调节指令响应慢 问题定位

  • 未启用Sniff子评级

  • 使用基础Sniff模式(160ms间隔)

八、未来演进方向

8.1 基于BLE Audio的增强方案

  • 采用LE Power Control优化功耗

  • 利用Isochronous Channel提升时控精度

8.2 人工智能赋能

  • 构建LSTM网络预测控制指令

  • 实现动态QoS参数调整

8.3 量子安全增强

  • 预研PQC(Post-Quantum Cryptography)算法

  • 试验NTRU加密在LC层的集成

九、结语

通过深入解析LC层的互操作性要求,我们得以窥见AVRCP协议流畅运行的底层奥秘。在万物智联的时代背景下,准确理解和正确实现这些基础性要求,将成为打造高质量蓝牙控制设备的关键。随着蓝牙5.4标准引入新的LC增强特性,建议开发者持续关注以下方向:

  • 增强型子评级机制(Enhanced Subrating)

  • 多角色并发支持(Multi-Role Concurrency)

  • 时敏网络优化(Time-Sensitive Networking)

十、参考文献

[1] Bluetooth Core Specification v6.0, Vol 4, Part E

[2] AVRCP Specification v1.6.3


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go + vscode + cline +qwen 快速构建 MCP Server

go 编译自定义 mcp tool current time tool 代码 package mainimport ("context""fmt""time""github.com/mark3labs/mcp-go/mcp""github.com/mark3labs/mcp-go/server" )func main() {// Create MCP servers : server.New…

C语言-动态内存管理

1.为什么要有动态内存分配 我们现如今已经掌握的内存开辟方式有 int main() {int a 0;int arr[30] { 0 };return 0; } 这两种方式&#xff0c;但是这种开辟空间的方式有两个特点&#xff1a; 1.空间开辟大小是固定的 2.数组在申明的时候&#xff0c;必须指定数组的长度&…

Java复习

在开篇前首先申明一下&#xff0c;本文虽不够系统&#xff0c;但复习够用&#xff0c;尤其是快速回忆( •̀ ω •́ )✧与提问。 主打一个速度。 本文将会从Java的基础语法、面向对象、API、字符串、集合、进阶...等六方面讲起。 一、Java的基础语法&#xff1a; 1、Java入门…

Vue+ElementUI 字符串数组标签化展示组件

一. 效果 数据&#xff1a;‘[“苹果”,“香蕉”]’ 可添加&#xff0c;编辑&#xff0c;删除。 二. 组件源码 <template><div><div v-for"(item, index) in items":key"index"><el-inputv-if"inputVisible && ed…

识别并脱敏上传到deepseek/chatgpt的文本文件中的身份证/手机号

本文将介绍一种简单高效的方法解决用户在上传文件到DeepSeek、ChatGPT,文心一言,AI等大语言模型平台过程中的身份证号以及手机号等敏感数据识别和脱敏问题。 DeepSeek、ChatGPT,Qwen,Claude等AI平台工具快速的被接受和使用,用户每天上传的文本数据中潜藏着大量敏感信息,…

UR5e机器人位姿

UR5e 作为一款 6 自由度协作机器人&#xff0c;其末端执行器的位姿&#xff08;位置与姿态的组合&#xff09;控制是实现精准操作的核心。在笛卡尔坐标系中&#xff0c;位姿通常用齐次变换矩阵表示&#xff0c;包含末端的三维位置&#xff08;x, y, z&#xff09;和三维姿态&am…

小白闯AI:Llama模型Lora中文微调实战

文章目录 0、缘起一、如何对大模型进行微调二、模型微调实战0、准备环境1、准备数据2、模型微调第一步、获取基础的预训练模型第二步:预处理数据集第三步:进行模型微调第四步:将微调后的模型保存到本地4、模型验证5、Ollama集成部署6、结果测试三、使用总结AI是什么?他应该…

Linux基础开发工具——gdb/cgdb(7)

文章目录 前言一、生成可调试文件二、调试打开与关闭启动调试l 查看代码退出调试运行与断点单行与单步 三、查看变量bt 查看调用堆栈p 临时查看变量display 常显示变量 四、快速跳转until 指定行finish 函数c 断点 五、其他指令disable 断点使能set var 设置条件ptype 查看变量…

Python 3.13.2安装教程(安装包)Python 3.13.2 快速安装指南

文章目录 前言一 、Python 3.13.2下载二、Python 3.13.2安装教程1.运行安装程序2.选择安装方式3.自定义安装选项4.开始安装5.安装完成6.打开程序7.验证安装 前言 Python 作为一门通用编程语言&#xff0c;在全球拥有庞大的用户群体。其简洁易读的语法和丰富的库&#xff0c;使…

游戏MOD伴随盗号风险,仿冒网站借“风灵月影”窃密【火绒企业版V2.0】

游戏MOD&#xff08;即游戏修改器&#xff09;是一种能够对游戏进行修改或增强的程序&#xff0c;因其能够提升游戏体验&#xff0c;在玩家群体中拥有一定的市场。然而&#xff0c;这类程序大多由第三方开发者制作&#xff0c;容易缺乏完善的安全保障机制&#xff0c;这就为不法…

【读点论文】Chain Replication for Supporting High Throughput and Availability

在分布式系统中&#xff0c;强一致性往往和高可用、高吞吐是矛盾的。比如传统的关系型数据库&#xff0c;其保证了强一致性&#xff0c;但往往牺牲了可用性和吞吐量。而像 NoSQL 数据库&#xff0c;虽然其吞吐量、和扩展性很高&#xff0c;但往往只支持最终一致性&#xff0c;无…

新书速览|云原生Kubernetes自动化运维实践

《云原生Kubernetes自动化运维实践》 本书内容&#xff1a; 《云原生Kubernetes自动化运维实践》以一名大型企业集群运维工程师的实战经验为基础&#xff0c;全面系统地阐述Kubernetes&#xff08;K8s&#xff09;在自动化运维领域的技术应用。《云原生Kubernetes自动化运维实践…

Linux驱动学习笔记(六)

平台总线 1.平台总线模型也叫platform总线模型&#xff0c;平台总线是Linux系统虚拟出来的总线, 引入总线的概念可以对驱动代码和设备信息进行分离。平台总线模型将一个驱动分成了两个部分&#xff1a;platform_device和platform_driver&#xff0c;例如可使用文件device.c和d…

高频GNSS同震形变计算方法

高频GNSS&#xff08;通常采样率为 1Hz-50Hz&#xff09;可以提供高时间分辨率的地震形变信息&#xff0c;计算同震形变&#xff08;coseismic displacement&#xff09;的方法主要包括 趋势线法 和 基线法。

从简单探测到业务模拟:IT监控如何突破传统监控边界

探测是一种用于主动检测和评估IT系统、网络设备、应用服务等目标对象运行状态和性能指标的技术手段。它通过模拟用户操作、发送测试信号或执行特定的检查任务&#xff0c;实时获取目标对象的响应情况和相关数据&#xff0c;从而帮助运维人员及时发现潜在问题、评估系统健康状况…

卡特兰数在数据结构上面的运用

原理 Catalan数是一个数列&#xff0c;其第n项表示n个不同结点可以构成的二叉排序树的数量。Catalan数的第n项公式为&#xff1a; &#xfffc; 其中&#xff0c;&#xfffc;是组合数&#xff0c;表示从2n个元素中选择n个元素的组合数。 Catalan数的原理可以通过以下方式理解&…

CCBCISCN复盘

AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…

【sgAutocomplete_v2】自定义组件:基于elementUI的el-input组件开发的搜索输入框(支持本地保存历史搜索关键词、后台获取匹配项)

特性&#xff1a; 支持本地记录搜索关键词后台接口匹配搜索关键词支持自定义填充字段名支持user或address两种匹配列表布局样式 sgAutocomplete_v2 <template><div :class"$options.name" mouseover"inside true" mouseout"inside false…

算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)

文章目录 前言一、背包问题溯源&#xff08;动态规划&#xff09;1.1 动态规划的概念1.2 动态规划的基本步骤1.3 动态规划的实际应用 二、背包问题2.1 背包问题衍生2.2 0-1背包2.2.1 0-1背包描述2.2.2 0-1背包图解2.2.3 0-1背包代码刨析 2.3 完全背包2.3.1 完全背包描述2.3.2 完…

数据库原理及应用mysql版陈业斌实验一

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 实验一&#xff1a;数据库与数据表的定义和数据操作 1.实验数据如下 …