首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【DB笔试面试442】 Oracle数据类型哪些?

复合类型也叫组合类型,它包含了能够被单独操作内部组件,每个组件都可以单独存放值,所以,一个复合变量可以存放多个值。...记录是由一组相关但又不同数据类型组成逻辑单元。是数据集合,可将数据作为一个整体进行引用和处理。嵌套中之一个嵌套是某些行集合,它在主表中表示为其中。...对主表中每一条记录,嵌套可以包含多个行。在某种意义上,它是在一个中存储一对多关系一种方法。...如果处理单行单列数据那么可以使用标量变量;如果处理单行数据那么可以使用PL/SQL记录;如果处理单列多行数据那么可以使用PL/SQL集合。...需要注意是,该数据类型是PL/SQL数据类型,不能应用于表列。 下图是在PL/SQL可以使用预定义类型。 ?

1.5K10

PLSQL 嵌套记录与记录集合

将多个逻辑上不相关组合到一起形成了PL/SQL记录类型,从而可以将记录类型作为一个整体对待来处理。而且PL/SQL记录类型可以进行 嵌套以及基于PL/SQL记录来定义联合数组,嵌套等。...本文首先回顾了PL/SQL记录几种声明形式,接下来主要描述PL/SQL记录嵌套以及基于 记录集合。    ...有关PL/SQL 记录语法、以及在SQL中使用PL/SQL记录,请参考:PL/SQL --> PL/SQL 记录 1、下面的示例同时描述了基于,基于游标,以及基于用户自定义记录 DECLARE...可以在记录类型中包含对象、集合和其他记录(又叫嵌套记录)。...,注意嵌套需要扩展 --我们知道,游标通常为单条记录,而联合数组,嵌套以及变长数组为单列多行 --因此记录类型与集合类型复合我们可以将其想象成一张二维,因此对于这种类型操作,更高效是直接使用

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

PLSQL 联合数组与嵌套

通常情况下,在PL/SQL中,处理单行单列数据可以使用标量变量,而处理单行数据则使用PL/SQL记录是不错选择。...单列多行数据 则由联合数组或嵌套来完成,其特点是类似于单列数据库。在Oracle 9i 之前称为PL/SQL索引,9i 之后称之为联合数组。...下标可以为负值,且下标的数据类型支持binary_integer,pls_integer,varchar2 其数据元素个数无限制 不能作为表列数据类型使用,即只能作为PL/SQL复合数据类型使用...1、嵌套特点: 元素下表从1开始,个数没有限制.即元素个数可以动态增长 嵌套数组元素值可以是稀疏,即可以使得中间某个元素没有赋值 嵌套语法与联合数组类似,不同是仅仅是少了index...如果初始化为空值,则后续需要使用extend来扩展其大小 嵌套初始化时为密集,但允许有间隙,即允许使用内置过程delete从嵌套中删除元素 嵌套类型可以作为表列数据类型来使用 2、语法

1.3K30

Oracle PLSQL语句基础学习笔记(上)

PL/SQL 不是一个独立产品,他是一个整合到ORACLE服务器和ORACLE工具中技术,可以PL/SQL看作ORACLE服务器内一个引擎,sql语句执行者处理单个sql语句,PL/SQL引擎处理...---- ---- 2、PL/SQL块结构 PL/SQL是一种块结构语言,组成PL/SQL程序单元是逻辑块,一个PL/SQL 程序包含一个或多个逻辑块,每个块都可以划分为三个部分。...PL/SQL块中每一条语句都必须以分号结束,SQL语句可以使多行,但分号表示该语句结束。一行中可以多条SQL语句,他们之间以分号分隔。...每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由–标示。 ---- (3).PL/SQL命名和匿名 PL/SQL程序块可以一个命名程序块也可以一个匿名程序块。...---- ---- 8、嵌套 程序块内部可以一个程序块这种情况称为嵌套

2.7K10

PLSQL 集合初始化与赋值

可以使用系统定 义与集合类型同名函数来初始化集合。我们必须显式地调用构造函数为每一个变长数组和嵌套变量进行初始化操作(对于关联数组来说, 是不需要使用构造函数进行初始化)。         ...有关集合类型描述请参考: PL/SQL 联合数组与嵌套 PL/SQL 变长数组 PL/SQL --> PL/SQL记录 一、联合数组赋值     联合数组不需要初始化,直接赋值即可。...c、如果集合被自动初始化为空值并且程序引用了其中一个元素,PL/SQL会抛出COLLECTION_IS_NULL异常。...我们知道集合通常是针对单列多行数据而言,而记录则是单行。两 者综合,则此时就等同于数据库中一张二维。示例中首先声明用户定义记录类型以及变长数组,接下来基于这两者声明变量。...10、注意理解复合类型之间(嵌套和变长数组中嵌PL/SQL记录)变量元素间传递以及集合方法BULK COLLECT INTO,LAST,EXTEND等。

2.3K50

POSTGRESQL PG VS SQL SERVER 到底哪家强? (译) 应该是目前最全面的比较

为什么翻译这篇文章,因为本人对于这两种数据库是在熟悉不过了,一个10多年经验,一个也有5-6年经验,而且这两种数据库在很多部分很相似,所以翻译了此篇。...另外前两天一个同学告知,他们单位SQL SERVER 被替换成 MYSQL ,OMG 这篇文字更写,明明 SQL SERVER 表兄弟 POSTGRESQL ,非要找 SQL SERVER 他二舅大伯三姨儿媳妇...聚集索引根据键值(索引定义中)对表或视图中数据行进行排序。一个只能有一个聚集索引。非聚集索引存储在数据之外,每个键值条目都有一个指向数据指针。...每个只能包含一个identity。除非强制执行PRIMARY KEY或UNIQUE约束,否则不能保证值唯一性。...这种方式可以方便地存储和读取嵌套数据结构。 在 SQL Server 中,当两个源包含定义关系且其中一个可以与另一个项相关联时,可以创建嵌套。这可以是两个共享唯一标识符。

1.2K20

Oracle笔记

单列索引:           单列索引是基于单个所建立索引,比如:       create index 索引名 on 名(列名)    (2)复合索引:          复合索引是基于两或是索引...在同一张可以多个索引,但是要      求组合必须不同。...要完     成相对简单应用功能,可能只需要编写一个pl/sql块;但是如果要想实现复杂功       能,可能需要在一个pl/sql块中嵌套其它pl/sql块。...主要包括pl/sql记录,pl/sql          ,嵌套,varray。...71.Oracle视图:      视图是一个虚拟,其内容由查询定义。同真实一样,视图包含   一系列带有名称和数据。但是,视图并不在数据库中以存储数据值集   形式存在。

1.3K20

Oracle存储过程详解(一)

ZERO_DIVIDE 除数为 0 SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套或 VARRAY 最大值 SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套或 VARRAY...PL/SQL 应用程序在没有连接 oralce 数据库情况下访问数据 PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl..../SQL系统包 ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量返回类型不兼容 SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法 STORAGE_ERROR...SELECT INTO STATEMENT 将select查询结果存入到变量中,可以同时将多个存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子:...用pl/sql developer debug 连接数据库后建立一个Test WINDOW,在窗口输入调用SP代码,F9开始debug,CTRL+N单步调试 关于oracle存储过程若干问题备忘 1

1.7K30

Oracle数据库学习

由于一个班级可以多个学生,在关系模型中,这两个关系可以称为“一对”,即一个classes记录可以对应多个students记录。...删除是通过DROP COLUMN ...实现 通过一个外键关联到另一个,我们可以定义出一对多关系。有些时候,还需要定义“”关系。...该SQL将查询出students所有数据。注意:查询结果也是一个二维,它包含列名和每一行数据。...在PL/SQL可以使用SQL语句: INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。...ORACLE PL/SQL 组件在对 PL/SQL 程序进行解释时,同时对在其所使用名、列名及数据类型进行检查。 PL/SQL 可以SQL*PLUS 中使用。

1.8K40

Oracle PLSQL随堂笔记总结

/sql基础 -定义并使用变量 在编写pl/sql程序时,可以定义变量和常量;在pl/sql程序中包括: ①标量类型(scalar) 标量定义案例 v_name varchar2.../sql 相当于高级语言中数组,但是需要注意是在高级语言中数组下标不能为负数,而pl/sql可以为负数,并且元素下标没有限制。...(50)); 2).返回值存储过程,可以输入一个员工编号,可以返回员工姓名; 3).返回值存储过程(列表[结果集]),输入一个部门号,返回该部门所有员工信息; ①创建一个包,定义一个类型...test_cursor ②创建一个过程 ③如何在java中调用 4).作业:了上面的基础,相信大家可以完成分页存储过程了,要求:可以输入名,每页显示记录数,当前页。...实例:编写一个存储过程,输入一个名字,工资加1000,如果没有该人,抛出自定义例外。 8.oracle视图 视图是一个虚拟,其内容由查询定义,同真实一样,视图包含一系列带有名称行和数据。

1.9K40

批量 SQL 之 FORALL 语句

PL/SQL而言,任何PL/SQL块或者子程序都是PL/SQL引擎来处理,而其中包含SQL语句则由PL/SQL引擎发送SQL语句转交到SQL引擎来处 理,SQL引擎处理完毕后向PL/SQL...而使用SAVE EXCEPTIONS可以使得在对应SQL语句异常情形下,FORALL 仍然可以继续执行。如果忽略了SAVE EXCEPTIONS时,当异常发生,FORALL语句就会停止执行。...INDEX BY PLS_INTEGER; TYPE ins_log_type IS TABLE OF PLS_INTEGER -->此处较之前示例声明了一个联合数组...-- 4、使用forall子句将所有有效记录插入到valid_orders,注意此时使用了indices of,因此此时两个嵌套已为稀疏。...-- 7、使用VALUES OF 子句将两个嵌套中对应下表记录插入到对应中。

1.7K20

你真的会玩SQL?无处不在子查询

查询指定节点及其所有父节点方法 你真的会玩SQL?让人晕头转向三值逻辑 你真的会玩SQL?EXISTS和IN之间区别 你真的会玩SQL?无处不在子查询 你真的会玩SQL?...Case也疯狂 你真的会玩SQL?表表达式,排名函数 你真的会玩SQL?简单 数据修改 你真的会玩SQL?你所不知道 数据聚合 你真的会玩SQL?透视转换艺术 你真的会玩SQL?...玩爆你数据报表之存储过程编写(下) 子查询又称内部,而包含子查询语句称之外部查询(又称主查询)。...VT2 4.处理嵌套在外层查询语句,从Sales.Orders中查找满足where条件empid不在虚拟VT2中相等值数据,得到虚拟VT3 5.处理select列表从虚拟VT3中查找empid...C中取出一个元组,将元组相关值custid传给内层查询 2.执行第一层内层查询,Sales.Orders别名O中取出一个元组,将元组相关值custid传给内层查询 3.执行第二层内层查询,Sales.Orders

1.5K70

Oracle数据库相关经典面试题

解释函数,存储过程,包 答∶ 都是命名块,函数与过程是pl/sql代码集合,通常是为了完成一个业务,过程可以不返回任何值,但函数必须有返回值。包是为了完成某个完整功能一组函数与过程集合。...悲观锁是通过在sql语句上加入 for update,乐观锁可以通过增加一version或者timestamp在应用程序中实现,Hibernate采用乐观锁版本戳。 索引作用?...通过索引查询数据比全扫描要快.但是我们也必须注意到它代价索引需要空间来存储,也需要定期维护, 每当记录在中增减或索引被修改时,索引本身也会被修改....因为索引需要额外存储空间和处理,那些不必要索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能。 PL/SQL语句块包含哪些部分?...,完全外部联接把两个都标记为保留)中未找到匹配行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上,则对上一个联接生成结果和下一个重复执行步骤1到步骤3,直到处理完所有的为止

2.2K20

Oracle 数据库拾遗(一)

约束 创建主键约束 基本通常具有包含唯一标识中每一行或一组,这样称为主键(PK),用于强制表实体完整性。...在创建或修改时,可以通过定义 PRIMARY KEY 约束来创建主键。 一个只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中不能接受空值。...唯一性约束即 UNIQUE 约束,在 SQL 基本中,可以使用 UNIQUE 约束确保在非主键中不输入重复值。...外键(FK)是用于建立和加强两个数据之间链接,当创建或修改时可通过定义 FOREIGN KEY 约束来创建外键。...在 Oracle PL/SQL 中,DEFAULT 关键字用来指定某个字段默认值。在 MS T-SQL 中将 DEFAULT 作为约束操作,而 Oracle PL/SQL 将其认为是一个字段值。

1K20

PLSQL变长数组

PL/SQL变长数组时PL/SQL集合数据类型中一种,其使用方法与PL/SQL嵌套大同小异,唯一区别则是变长数组元素最大个数是有限 制。...也即是说变长数组下标固定下限等于1,上限可以扩展。下面给出具体描述及其使用方法。...          变长数组下标固定为1,上限可以扩展           与嵌套类似,在变长数组声明时自动设置为NULL值.所谓空值指的是集合本身是空,不是针对它所拥有的元素           ...5 WHERE deptno < 40; 6 7 TYPE name_type IS VARRAY( 10 ) OF dept.dname%TYPE; -->声明一个包含...scott@CNMMBO> CREATE TABLE tb_emp -->创建tb_emp且其中一使用到了变长数组 2 ( 3 empno NUMBER( 4 )

85520

关于IvorySQL和OpenGauss包SPEC与集合类型一些思考

SPEC区 包SPEC区可以定义下面三种类型(本篇只讨论SPEC区情况) 变量 类型(nested table等)(注意这是包内定义类型,与SQL创建不通) 游标 这三种类型在PG原生中,是找不到相似的功能...类型:这里类型特指嵌套、动态数组、关联数组。PG类型全部放在pg_types中,不能在PL层创建。...变量: 每个包应该有自己符号(命名空间),可以由namespace.pkgname唯一指定到某一个符号进行搜索。...SQL嵌套和动态数组 SQL层和PL层使用一套逻辑 SQL层和PL层需要使用两套不同逻辑 原因1:SQL类型用多维嵌套需要落盘,且需要当做标准类型放在pg_type中才能最大化利用...原因2:PL多维嵌套两种,包SPEC和函数内,无论哪一种都是纯内存结构都无需考虑落盘,且因为作用域差异,不能简单放在pg_type中,索引应该做套纯内存多维嵌套结构,逻辑上可参考SQL实现

13820

javaweb-oracle-2-58

文章目录 视图 视图作用 索引 单列索引 复合索引 pl/sql编程语言 pl/sqlif判断 pl/sqlloop循环 游标 存储过程 存储函数使用 out类型参数如何使用...视图为多表查询提供了上层封装,可以屏蔽某些字段查询,可以统一操作各表,防止各表查询等操作不及时,信息不统一 索引 —索引 –索引概念:索引就是在列上构建一个二叉树,相当于一本书目录 —-达到大幅度提高查询效率目的...每次更新都会重构二叉树 单列索引 构建在一上就是单列,构建在列上就是 创建单列索引 create index idx_ename on emp(ename); ---单列索引触发规则,条件必须是索引原始值...(ename, job); ---复合索引中第一为优先检索 ---如果要触发复合索引,必须包含有优先检索原始值。...pl/sql编程语言 pl/sql编程语言是对sql语言扩展,使得sql语言具有过程化编程特性。 —pl/sql编程语言比一般过程化编程语言,更加灵活高效。

93920

FORALL 之 SAVE EXCEPTIONS 子句应用一例

下面的示例来自一个实际应用,撇开原始名与实际应用中处理过程,仅仅通过简单示例来展现。      ...FORALL 语句 批量SQL之 BULK COLLECT 子句 PL/SQL 集合初始化与赋值 PL/SQL 联合数组与嵌套 PL/SQL 变长数组 PL/SQL --> PL/SQL...error: character string buffer too small 上面的错误提示是由于我们声明emp_tab嵌套基于源,因此出现数据缓冲太小错误 PL/SQL procedure...scott@CNMMBO> select * from emp_source; -->可以看到目标已存在数据且源状态被更新 EMPNO...scott@CNMMBO> @test_bulk_ins_err -->再次执行时发现只有empno号为1111记录被插入,而2222和3333都由于错误而未被同步目标 PL/SQL procedure

77010

一条简单更新语句,MySQL是如何加锁

前提三:id如果不是主键,那么id列上有没有索引呢? 前提四:id列上如果有二级索引,那么是唯一索引? 前提五:SQL执行计划是什么?索引扫描?...还是全扫描 根据上面的前提条件,可以九种组合,当然还没有列举完全。...结论:若id是Unique,其上有Unique索引,那么SQL需要加两个X锁,一个对应于id Unique索引上id = 10记录,另一把锁对应于聚簇索引上(name = 'e', id =...如图,可以看出这是一个很恐怖事情,全每条记录要加X锁,每个Gap加上Gap锁,如果上存在大量数据时,又是什么情景呢?...这种情况下,这个,除了不加锁快照读,其他任何加锁并发SQL,均不能执行,不能更新,删除,插入,这样,全锁死。

3.6K20
领券