首页 > 其他分享 >KES中数组和集合类型的区别

KES中数组和集合类型的区别

时间:2024-04-03 17:15:07浏览次数:215  
标签:MY 元素 数据类型 类型 数组 集合 KES

文章概要:

本文属于学习总结系列,总结了一下数组类型和PL/SQL中集合类型及其使用区别。

一,集合(collection)数据

它是存放一组数据类型相同的数据,是一组相同类型元素的集合

集合数据类型分三类:
1).关联数组(index by tables)
元素下标:binary_integer、pls_integer、varchar2字符串等作为下标
个数限制:无限制
初始化:不需要

2).嵌套表(nested table)
元素下标:从1开始,只能为正整数
个数限制:无限制
初始化:赋值前需要

3).可变数组(varray:variable-size arrays)
元素下标:从1开始
个数限制:有最大个数
初始化:赋值前需要

三种类型的典型声明格式(仅举例典型的语法格式):

-- 定义一个可变数组类型 MY_ARRAY,最大容量是100,元素类型是 VARCHAR2
TYPE MY_ARRAY IS VARRAY(100) OF VARCHAR2(15);
-- 定义一个关联数组类型 MY_MAP,键的类型是 PLS_INTEGER,值得类型是 VARCHAR2
TYPE MY_MAP IS TABLE OF VARCHAR2(15) INDEX BY PLS_INTEGER;
-- 定义一个嵌套表类型 MY_ROW,元素类型是 VARCHAR2
TYPE MY_ROW IS TABLE OF VARCHAR2(15);

二,数组类型

KES允许在表或块中定义一维或者多维数组。可以创建元素是任何内建或用户定义的基类、枚举类型、组合类型或者域的数组。

一个数组数据类型可以通过在数组元素的数据类型名称后面加上方括号([])来命名,可以在[]指定大小,也可以不指定。

但指定长度与未指定长度的数组相同,即不做个数限制,当前的实现也不会强制所声明的维度数。

一个特定元素类型的数组全部被当作是相同的类型,而不论其尺寸或维度数。

比如,我们可以声明带数组的表

CREATE TABLE sal_emp (
    name            text,
    pay_by_quarter  integer[],
    schedule        text[3][3]
);

三,数组和集合类型的区别

数组类型和PL/SQL中的集合类型主要有以下区别:

  1. 语法:

声明时,在PG中,数组使用方括号([])表示,例如:integer[] 表示整数数组。而在PL/SQL中,集合使用关键字来表示,例如:TYPE array_name IS TABLE OF integer; 表示整数集合。

  1. 数据结构:

数组是有序的,元素可以按照索引进行访问。而集合是无序的,元素没有固定的顺序。

  1. 元素的重复性:

数组允许元素的重复,可以在数组中存储多个相同的元素。而集合不允许重复元素,每个元素在集合中只能出现一次。

  1. 插入和删除操作:

由于数组是有序的,插入和删除元素需要移动其他元素以保持顺序。而集合不需要维持元素的顺序,因此插入和删除操作更加高效。

  1. 查询操作:

数组可以通过索引直接访问元素,因此在查询特定位置的元素时更快。而集合需要进行遍历才能找到特定元素。

四,小结

数组和集合作为能存储相同类型的元素的数据类型,总的来说,数组适用于需要有序访问和允许重复元素的场景,数据操作和数据交互不多的场景。

而PL/SQL中的集合适用于不需要保持顺序并且需要确保元素唯一性、数据操作多的场景。

在选择使用哪种数据类型时,需要根据具体的应用需求进行判断。

标签:MY,元素,数据类型,类型,数组,集合,KES
From: https://www.cnblogs.com/kingbase/p/17736788.html

相关文章

  • 代码随想录 Day34 贪心算法 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
    1005.K次取反后最大化的数组和 classSolution{public:intlargestSumAfterKNegations(vector<int>&nums,intk){sort(nums.begin(),nums.end());intsum=0;inti=0;while(k>0){nums[i]=0-nums[i]......
  • Go_ if else语句 ,,循环,,switch,,数组
    if-else语句//if语法if定义变量;条件{}elseif条件{}else{}//输入分数,打印成绩等级packagemainimport"fmt"//iffuncmain(){ //1接收用户输入 varscoreint=0 fmt.Print("请输入分数:") fmt.Scan(&score) showLevel(score)......
  • Java集合框架详解:List、Set、Map及其实现类的使用与特性 第一章
    目录一、引言定义:重要性:文章目的:二、Java集合框架概述集合框架结构:常用接口概览:集合框架通用特性:一、引言Java集合框架是Java语言提供的一套统一、灵活且高效的API,用于存储、操作和管理对象集合的数据结构。它作为Java标准库的核心组成部分,对于任何Java开发者而......
  • Java集合框架详解:List、Set、Map及其实现类的使用与特性 第二章
    目录一、List接口及其常见实现类List接口定义与特性:ArrayList:Vector与Stack:二、Set接口及其常见实现类Set接口定义与特性:HashSet:TreeSet:LinkedHashSet:一、List接口及其常见实现类List接口定义与特性:List接口是Java集合框架中一个重要的接口,继承自Collection接口......
  • Java集合框架详解:List、Set、Map及其实现类的使用与特性 第三章
    目录一、JavaMap接口及其常见实现类Map接口定义与特性HashMapTreeMapLinkedHashMapHashtable与ConcurrentHashMap一、JavaMap接口及其常见实现类Map接口定义与特性Map接口是Java集合框架中的一个重要接口,它提供了一种键值对(Key-ValuePair)的存储结构。Map的主要......
  • Java集合框架详解:List、Set、Map及其实现类的使用与特性 第四章
    目录一、Java集合框架的选择与优化选择策略性能优化二、结论一、Java集合框架的选择与优化选择策略根据数据特性和应用需求,选择合适的Java集合类型应考虑以下几个关键因素:是否允许重复:不允许重复:如果元素必须唯一,应选择Set接口的实现类,如HashSet(无序,查找速度快)或T......
  • 集合
    集合set定义1.由一系列不重复的不可变类型变量组成的可变映射容器。2.相当于只有键没有值的字典(键则是集合的数据)。基础操作1.创建空集合:集合名=set()集合名=set(可迭代对象)2.创建具有默认值集合:集合名={1,2,3}集合名=set(可迭代对象)3.添加元素:集合名.......
  • 集合set-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 剑指Offer题目笔记24(集合的组合、排序)
    面试题79:问题:​输入一个不含重复数字的数据集合,找出它的所有子集。解决方案:​使用回溯法。子集就是从一个集合中选出若干元素。如果集合中包含n个元素,那么生成子集可以分为n步,每一步从集合中取出一个数字,此时面临两个选择,将该数字添加到子集中或不将该数字添加到子集......
  • 转轮数组
    1、题目要求给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]2、题解1class......