打Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox
2011-12-27 10:44
459 查看
一 嵌套表概述
嵌套表是集合类型的一种。嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。默认情况下,每个嵌套表列都产生一个额外的RAW(16)隐藏列,并在其上创建了唯一约束,用以指向嵌套表。而嵌套表中有两个隐藏列:SYS_NC_ROWINFO$是作为一个对象返回所有标量元素的一个伪列;另一个NESTED_TABLE_ID的外键回指向父表。
存储在一个数据库中的嵌套表并不与表中的其他数据存放在同一个数据块中,它们实际上被存放在第二个表中。正如没有order by字句select语句不能保证返回任何有顺序的数据,从数据库中取回的嵌套表也不能保证元素的顺序。由于集合数据是离线存储的,对于大型集合嵌套表是 一个不错的选择。
二 嵌套表的语法:
嵌套表的定义语法:TYPE type_name IS TABLE OF element_type [NOT NULL];
三 嵌套表的特性:
嵌套表集合中的元素没有数量限制
嵌套表的存储不与表中其他数据存放在同一个数据块中,存放在第二个表中。
嵌套表集合离线存储
四 嵌套表实例
1)创建嵌套表类型
create type scott.t_tab2_emp as table of varchar2(50);
创建嵌套表类型在oracle日志表现为:50 create type t_tab2_emp as table of
varchar2(50);;
2)创建嵌套表
create table scott.test_coll_nested(departement number,
employees t_tab2_emp);
---创建嵌套表的时候要为嵌套表类型另外创建一个表来保存数据, NESTED 以下的部分就是在干这事。那个表的名称为:
next_table_name,当前实例的那个表的名称为test_table_emp。
创建嵌套表在oracle日志表现为:没有日志
3)获取表信息
desc scott.test_coll_nested;
Name Null? Type
----------------------------------------- --------
----------------------------
DEPARTEMENT NUMBER
EMPLOYEES SCOTT.T_TAB2_EMP
也可以直接通过数据字典来获得嵌套表的信息
select * from all_nested_tables where owner='SCOTT' and
table_name='test_table_emp' AND PARENT_TABLE_NAME='TEST_COLL_NESTED';
4)填充嵌套表数据
insert into scott.test_coll_nested values(1,scott.t_tab2_emp
('hello','world'));
填充嵌套表数据在oracle日志表现为:
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('hello');
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('world');
68 insert into "SCOTT"."TEST_COLL_NESTED"("DEPARTEMENT")
values ('1');
insert into scott.test_coll_nested
values(2,scott.t_tab2_emp('123','456','789','101','120','114','45'));
填充嵌套表数据在oracle日志表现为:
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('123');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('456');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('789');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('101');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('120');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('114');
68 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('45');
68 insert into "SCOTT"."TEST_COLL_NESTED"("DEPARTEMENT")
values ('2');
5)更改嵌套表数据
update scott.test_coll_nested set
employees=scott.t_tab2_emp('welcome','to','china') where DEPARTEMENT=1;
更改嵌套表数据在oracle日志表现为:
99 update "SCOTT"."TEST_COLL_NESTED" set where
"DEPARTEMENT" = '1' and ROWID = 'AABroBAAJAAAlSIAAA';
73 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('welcome');
68 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('to');
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('china');
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'hello' and ROWID = 'AABroCAAJAAAlSAAAA';
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'world' and ROWID = 'AABroCAAJAAAlSAAAB';
6)删除嵌套表数据
delete from scott.test_coll_nested where DEPARTEMENT=1;
删除嵌套表数据在oracle日志表现为:
99 delete from "SCOTT"."TEST_COLL_NESTED" where
"DEPARTEMENT" = '1' and ROWID = 'AABroBAAJAAAlSIAAA';
104 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'welcome' and ROWID = 'AABroCAAJAAAlSAAAJ';
99 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'to' and ROWID = 'AABroCAAJAAAlSAAAK';
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'china' and ROWID = 'AABroCAAJAAAlSAAAL';
7)检索嵌套表数据
select * from scott.test_coll_nested;
DEPARTEMENT----------EMPLOYEES-----------------------------------
2 T_TAB2_EMP('123', '456',
'789', '101', '120', '114', '45')
嵌套表是集合类型的一种。嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。默认情况下,每个嵌套表列都产生一个额外的RAW(16)隐藏列,并在其上创建了唯一约束,用以指向嵌套表。而嵌套表中有两个隐藏列:SYS_NC_ROWINFO$是作为一个对象返回所有标量元素的一个伪列;另一个NESTED_TABLE_ID的外键回指向父表。
存储在一个数据库中的嵌套表并不与表中的其他数据存放在同一个数据块中,它们实际上被存放在第二个表中。正如没有order by字句select语句不能保证返回任何有顺序的数据,从数据库中取回的嵌套表也不能保证元素的顺序。由于集合数据是离线存储的,对于大型集合嵌套表是 一个不错的选择。
二 嵌套表的语法:
嵌套表的定义语法:TYPE type_name IS TABLE OF element_type [NOT NULL];
三 嵌套表的特性:
嵌套表集合中的元素没有数量限制
嵌套表的存储不与表中其他数据存放在同一个数据块中,存放在第二个表中。
嵌套表集合离线存储
四 嵌套表实例
1)创建嵌套表类型
create type scott.t_tab2_emp as table of varchar2(50);
创建嵌套表类型在oracle日志表现为:50 create type t_tab2_emp as table of
varchar2(50);;
2)创建嵌套表
create table scott.test_coll_nested(departement number,
employees t_tab2_emp);
---创建嵌套表的时候要为嵌套表类型另外创建一个表来保存数据, NESTED 以下的部分就是在干这事。那个表的名称为:
next_table_name,当前实例的那个表的名称为test_table_emp。
创建嵌套表在oracle日志表现为:没有日志
3)获取表信息
desc scott.test_coll_nested;
Name Null? Type
----------------------------------------- --------
----------------------------
DEPARTEMENT NUMBER
EMPLOYEES SCOTT.T_TAB2_EMP
也可以直接通过数据字典来获得嵌套表的信息
select * from all_nested_tables where owner='SCOTT' and
table_name='test_table_emp' AND PARENT_TABLE_NAME='TEST_COLL_NESTED';
4)填充嵌套表数据
insert into scott.test_coll_nested values(1,scott.t_tab2_emp
('hello','world'));
填充嵌套表数据在oracle日志表现为:
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('hello');
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('world');
68 insert into "SCOTT"."TEST_COLL_NESTED"("DEPARTEMENT")
values ('1');
insert into scott.test_coll_nested
values(2,scott.t_tab2_emp('123','456','789','101','120','114','45'));
填充嵌套表数据在oracle日志表现为:
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('123');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('456');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('789');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('101');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('120');
69 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('114');
68 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('45');
68 insert into "SCOTT"."TEST_COLL_NESTED"("DEPARTEMENT")
values ('2');
5)更改嵌套表数据
update scott.test_coll_nested set
employees=scott.t_tab2_emp('welcome','to','china') where DEPARTEMENT=1;
更改嵌套表数据在oracle日志表现为:
99 update "SCOTT"."TEST_COLL_NESTED" set where
"DEPARTEMENT" = '1' and ROWID = 'AABroBAAJAAAlSIAAA';
73 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('welcome');
68 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('to');
71 insert into "SCOTT"."TEST_TABLE_EMP"("COLUMN_VALUE")
values ('china');
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'hello' and ROWID = 'AABroCAAJAAAlSAAAA';
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'world' and ROWID = 'AABroCAAJAAAlSAAAB';
6)删除嵌套表数据
delete from scott.test_coll_nested where DEPARTEMENT=1;
删除嵌套表数据在oracle日志表现为:
99 delete from "SCOTT"."TEST_COLL_NESTED" where
"DEPARTEMENT" = '1' and ROWID = 'AABroBAAJAAAlSIAAA';
104 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'welcome' and ROWID = 'AABroCAAJAAAlSAAAJ';
99 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'to' and ROWID = 'AABroCAAJAAAlSAAAK';
102 delete from "SCOTT"."TEST_TABLE_EMP" where
"COLUMN_VALUE" = 'china' and ROWID = 'AABroCAAJAAAlSAAAL';
7)检索嵌套表数据
select * from scott.test_coll_nested;
DEPARTEMENT----------EMPLOYEES-----------------------------------
2 T_TAB2_EMP('123', '456',
'789', '101', '120', '114', '45')
相关文章推荐
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
- 上接稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
- 2.0数据之详解DataGrid, 详解ListBox
- WPF/Silverlight2.0 Binding(数据绑定)机制详解
- silverlight中DataGrid数据高亮显示
- Silverlight DataGrid 在显示数据, 如果遇到全角的符号, 好像会出错. 待测试.
- 推荐一款Silverlight数据列表控件----AgDataGrid
- 通过 IDictionary对Silverlight DataGrid 进行动态数据绑定
- 乱弹琴 Silverlight 2.0 (17) 画笔(Brush)
- 关于silverlight中如何更新(增删改)集合ItemsSource后更新到UI(Listbox、DataGrid等)
- 强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework——Silverlight学习笔记[10]
- Silverlight 教程第五部分:用 ListBox 和 DataBinding 显示列表数据
- 稳扎稳打Silverlight(10) - 2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
- Silverlight 中文教程第三部分:使用 Networking取回数据并填充DataGrid
- SilverLight中datagrid数据绑定的简单使用
- 稳扎稳打Silverlight(15) - 2.0数据之一次绑定, 单向绑定, 双向绑定, INotifyPropertyChanged, 数据转换
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary
- 强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记