• 0718学习内容


    理解嵌套表

    在数据库中,嵌套表可以被当作单列的数据表来使用。Oracle在往嵌套表中存放数据时是没有特定顺序的。但是,当我们把检索出来的数据存放在PL/SQL变量时,所有行的下标就会从1开始顺序编号。这样,就能像访问数组那样访问每一行数据。

    嵌套表有两个重要的地方不同于数组:

    1. 数组有固定的上限,而嵌套表是没有上界的。所以,嵌套表的大小是可以动态增长的。如下图:
    2. 数组必须是密集的(dense),有着连续的下标索引。所以我们不能从数组中删除元素。而对于嵌套表来说,初始化时,它是密集的,但它是允许有间隙的(sparse),也就是说它的下标索引可以是不连续的。所以我们可以使用内置过程DELETE从嵌套表中删除元素。这样做会在下标索引上留下空白,但内置函数NEXT仍能让我们遍历连续地访问所有下标。

    2、理解变长数组

    VARRAY被称为变长数组。它允许我们使用一个独立的标识来确定整个集合。这种关联能让我们把集合作为一个整体来操作,并很容易地引用其中每一个元素。下面是一个变长数组的例子,如果我们要引用第三个元素的话,就可以使用Grade(3)。

     

    变长数组有一个长度最大值,是在我们定义时指定的。它的索引有一个固定的下界1和一个可扩展的上界。例如变长数组Grades当前上界是7,但我们可以把它扩展到8、9、10等等。因此,一个变长数组能容纳不定个数的元素,从零(空的时候)到类型定义时所指定的最大长度。

    3、理解关联数组(索引表)

    关联数组就是键值对的集合,其中键是唯一的,用于确定数组中对应的值。键可以是整数或字符串。第一次使用键来指派一个对应的值就是添加元素,而后续这样的操作就是更新元素。下面的例子演示了如何使用关联数组:

    DECLARE
      TYPE population_type IS TABLE OF NUMBER
        INDEX BY VARCHAR2(64);

      country_population     population_type;
      continent_population   population_type;
      howmany                NUMBER;
      which                  VARCHAR2(64);
    BEGIN
      country_population('Greenland')       := 100000;
      country_population('Iceland')         := 750000;
      howmany                               := country_population('Greenland');
      continent_population('Australia')     := 30000000;
      continent_population('Antarctica')    := 1000;   -- Creates new entry
      continent_population('Antarctica')    := 1001;   -- Replaces previous value
      which                                 := continent_population.FIRST;
      -- Returns 'Antarctica'
      -- as that comes first alphabetically.
      which                                 := continent_population.LAST;
      -- Returns 'Australia'
      howmany                               :=
                                  continent_population(continent_population.LAST);
      -- Returns the value corresponding to the last key, in this
      -- case the population of Australia.
    END;
    /

    关联数组能帮我们存放任意大小的数据集合,快速查找数组中的元素。它像一个简单的SQL表,可以按主键来检索数据。

    因为关联数组的作用是存放临时数据,所以不能对它应用像INSERT和SELECT INTO这样的SQL语句。

  • 相关阅读:
    Codeforces Round #630 (Div. 2) E. Height All the Same(组合数学 快速幂 逆元)
    Codeforces Round #627 (Div. 3) F. Maximum White Subtree(树型dp 换根法)
    Codeforces Round #630 (Div. 2) F. Independent Set (树型dp)
    权值线段树 简单总结 相关例题
    Codeforces Round #631 (Div. 2) D. Dreamoon Likes Sequences (bitmasks +dp )
    2018,奔波与意义
    geopandas overlay 函数报错问题解决方案
    使用Python实现子区域数据分类统计
    我要做数据分析
    geotrellis使用(四十二)将 Shp 文件转为 GeoJson
  • 原文地址:https://www.cnblogs.com/chuchudongderen/p/3198682.html
Copyright © 2020-2023  润新知