明留

将何所持,将何所往?此刻惜之!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

嵌套表(就是一张表中包含有另一张表)
  Create type 嵌套类型名 as object(
  字段1  类型[, 字段2  类型, ...]);/
  Create type 嵌套名 as table of 嵌套类型名;/
 
  范例:create type project_ty as object(
  proid  number(4), proname  varchar2(50),
  prodate  date);/
 
  create type project_nt as table of project_ty;/
 
  create table department(
  deptno  number(2) primary key,
  dname varchar2(50) not null,
  projects project_nt) nested table projects store as project_nt_tab_temp;
 
  insert into department(deptno, dname,projects) values(1, '技术部', project_nt(
  project_ty(1001,'emp',sysdate),
  project_ty(1002,'emp',sysdate),
  project_ty(1003,'emp',sysdate)
  );
 
  select * from department;
  
  select * from table(
 select  projects from department where deptno=1);
 
  update table (select  projects from department where deptno=1) pro
  set value(pro)=project_ty(1001,'测试项目‘, to_date(’1998-05-27','yyyy-mm-dd')) where pro.proid=1001;
可变数组:其属于嵌套表的升级版,在可变数组中,实际上就是将内部的嵌套表的内容的长度进行了限制。
  范例:
 
 
  create type worker_info as object(
    id number, name varchar2(50), sex varchar2(6)
  );/
 
  create type worker_info_list as wqray(10) of worker_info;/
 
  create table department(
    deptno number(2) primary key  not null,
 dname  varchar2(50) not null,
 workers work_info_list);
 
  insert into department(deptno, dname,workers) values(1, '技术部', work_info_list(
  work_info(1,'张三','男'),
  work_info(2,'张三','男'),
  work_info(3,'张三','男'))
  );
 
  select * from department;
 
 
--------------------------------------------------
索引(单列索引、复合索引、其他(b树、反向、位图索引))
单列索引是基于单个列所建立的索引,语法格式如下:
 Create index 索引名 on 表名(列名)
复合索引:是基于两列或是多列的索引。在同一张表上可以有多个索引,但是要原列的组合必须不同。格式如下:
 Create index 索引名 on 表名(列名1, 列名2[,...])
索引意义:
   1、在大表上建立索引才有意义
   2、在where子句或是连接条件上经常引用的列上建立索引
   3、索引的层次不要超过4层。
显示表的所有索引
   .在一张表中可以有多个索引,通过查询数据字典视图dba_indexs和user_indexs,可以显示索引信息。其中dba_indexs用于显示数据库所有的索引信息,而user_indexs用于显示当前用户的索引信息。
    select index_name, index_type from user_indexs where table_name='表名';
   .显示索引列
    通过查询数据字段视图user.ind.colums,可以显示索引对应列的信息
 select table_name, colum_name from user_ind_colums where index_name='ind_name';
 还可以通过sql developer工具查看索引信息
--------------------------------------------------
视图(实际上就是封装了一条复杂的查询语句)
创建视图的语法:Create[or replease] view 视图名 as 子查询 [With check option]|[with read  only];
   create view empv20 as select empno,ename,job,hiredate from emp where deptno=20;
视图创建完成之后,就可以像操作表那样直接对视图进行相应的操作。只不过是将表名替换为视图名就可以。
删除视图:drop view 视图名;or      replease是Oracle为修改视图专门提供的,可以直接为视图替换,如果不用这个,则在修改视图的时候,就必须先删除原来的视图,后修改视图。
创建好的视图很多时候都是不允许修改的,而影响到数据库表的,所以在Oracle中,为创建视图的时候提供了两个重要的参数。
|-With check option:不能更新视图的创建条件;(注:创建条件不能更新,但其他的字段可以更新)
|-with  read  only:创建的视图只读(注:创建条件和其他的字段都不能更新)
--------------------------------------------------
数据库设计范式
  1、第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。(保证每个列有意义) 没有主外键的约束
  2、第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。(多对多) 外键约束的添加
  3、第三范式(3NF):(一对多) 主外键约束的添加
--------------------------------------------------

posted on 2012-06-25 22:10  明留  阅读(954)  评论(0编辑  收藏  举报