当前位置: 首页 > news >正文

GBase 8s SET集合类型简介

在GBase 8s V8.8中,集合数据类型为处理多值属性提供了灵活的解决方案。本文将介绍SET类型的特性、使用方法,并对比LIST、MULTISET两种同类集合类型,帮助开发者根据业务场景选择合适的数据结构。

什么是SET


SET是GBase 8s的一种集合数据类型,具有以下核心特征:

无序:元素没有固定的存储顺序
唯一:每个元素值不可重复,自动去重


常见set的使用方法


数据准备:新建包含set类型的表:
(集合元素不能具有 NULL 值。必须对集合元素指定 NOT NULL约束,且没有任何其他约束有效)

drop database if exists testdb; create database testdb with log; database testdb; create table student ( id int, name varchar(10), course set(varchar(20) not null)); insert into student values( 1, 'xiaohong', set{'c','c++'}); insert into student values( 2, 'xiaoming', set{'js'});



当使用 dbaccess来更新集合类型时,必须更新整个集合。无法在原先set集合中添加新元素或者删除某个元素。以下用法不适用

update student set course = course|| 'python' where id =1; update student set course = course + 'python' where id =1; update student set course = course + {'python'} where id =1; update student set course = course + set{'python'} where id =1;


删除set集合中包含目标元素的记录

delete from student where 'js' in course;


整体修改set集合

update student set course = set{'java'} where id =1;


1.查询set集合中所有元素

select * from table((select course from student where id =1)) as t1(course);

2.查询目标元素是否在set集合中(使用带有 IN 关键字的WHERE 子句来查询目标元素是否在set集合中)

select * from student where 'java' in course;

扩充list、multiset与set


1、list、multiset与set区别
  • set是无序元素集合,每个元素值唯一。
  • MULTISET 是无序元素集合,每个元素值可重复。
  • LIST 是有序元素集合,每个元素值可重复。
  • 注:set、Multiset和list都必须指定not null约束,且没有任何其他约束有效
2、示例


1)创建list、Multiset、set相关的表

create table student1 ( id int, name varchar(10), english set(varchar(20) not null), chinese list(varchar(20) not null), math multiset(varchar(20) not null));

2)集合中插入不同的数据

insert into student1 values( 1, 'lihua', set{'89','88'}, list{'89','88'}, multiset{'89','88'}); select * from student1; id 1 name lihua english SET{'89','88'} chinese LIST{'89','88'} math MULTISET{'89','88'} 1 row(s) retrieved.

3)集合中插入相同的数据

insert into student1 values( 1, 'lihua', set{'88','88'}, list{'88','88'}, multiset{'88','88'}); select * from student1; id 1 name lihua english SET{'88'} chinese LIST{'88','88'} math MULTISET{'88','88'} 1 row(s) retrieved.

插入相同元素时:set不支持重复元素,可以插入成功,但是set会自动去重

http://www.jsqmd.com/news/1102341/

相关文章:

  • 工业4-20mA电流环接收器设计与STM32高精度ADC实现
  • PCF8591与PIC18LF26K42的ADC/DAC信号转换方案详解
  • EM3080-W与STM32L152RE条形码识别系统硬件设计与优化
  • 工业物联网4G LTE Cat 1通信模组与MCU开发实战
  • 多维聚合实战:从GROUP BY到立方体思维的工程跃迁
  • 直流有刷电机控制:挑战与TC78H653FTG解决方案
  • MIC1557与PIC32MX组合的工业定时系统设计
  • 终极指南:如何用DXVK在Linux上免费获得Windows游戏原生级性能
  • 3步掌握思源黑体TTF项目的完整字体构建能力
  • 抖音下载器终极指南:3分钟掌握高效批量下载技巧
  • ICM-42688-P与PIC18F26K40在工业运动感知中的黄金组合
  • PIC18F46K42与A5000安全芯片实现云端安全连接方案
  • 直流有刷电机控制:高效驱动与精准控制方案
  • Java工程师简历突围:MySQL与Redis高并发实战优化指南
  • 嵌入式系统电源管理:TPS65263三重降压方案设计与优化
  • Sora提示词失效真相:当“电影级画质”不再生效——2024Q2模型权重更新后Prompt重构手册
  • 选快充芯片别只看功率!多协议兼容+多重安全防护缺一不可
  • 抖音无水印批量下载工具:从零开始掌握高效内容管理
  • Translumo:3步搞定游戏外语界面,Windows实时屏幕翻译终极指南
  • 深度解析Atmosphere架构:从安全监视器到系统模块的完整技术实现
  • 5分钟快速上手:如何使用MediaCrawler一键采集五大主流平台数据
  • STM32G031K8与EM3080-W的条码读取系统设计与优化
  • 锂离子电池过压保护方案与BQ29200应用详解
  • 云原生技术25-云原生安全:从零信任到容器运行时防护,Kubernetes安全加固:20个必须知道的安全配置
  • PrismLauncher-Cracked完整指南:解锁Minecraft离线账户的终极解决方案
  • 5分钟掌握MediaCrawler:一键采集小红书、抖音、B站等主流平台数据
  • 如何快速完成GTNH汉化:3分钟让格雷科技新视野变中文的完整实用指南
  • KMS智能激活终极指南:3步永久激活Windows与Office的专业解决方案
  • ICM-42688-P与PIC18F47Q10在工业自动化中的黄金组合
  • AI:我用AI写了一篇小说,能署名“我是作者”吗?