码迷,mamicode.com
首页 > 数据库 > 详细

数据库中的视图、序列及索引

时间:2015-02-20 00:13:55      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:最低工资   平均工资   create   数据库   count   

一、视图

  语法:create view 视图名称 as 子查询

  例:创建一视图,包含全部的20部门的雇员信息(雇员编号,姓名,工作,雇佣日期)

   create view emp20 as select empno,ename,job,hiredate from emp wheredeptno = 20;

  删除视图:drop view 视图名称

  替换视图:create or replact 视图名称 as 子查询

    更换视图时不需要先执行删除操作,系统会为用户自动删除及重建

    create or replact view emp20 as select * fromemp where deptno = 20;

  查询部门名称、部门人数、平均工资以及最低工资的雇员姓名

  1selectd.deptno,d.dname,ed.c,ed.a,e.ename from emp e,(select deptno,count(empno) c,avg

(sal) a,min(sal) m from emp e group bydeptno) ed,dept d where e.deptno = d.deptno and

e.deptno = ed.deptno and e.sal = ed.m;

  2、先建立一张视图,然后再做查询

   create view ed as select deptno,count(empno) c,avg(sal) a,min(sal) mfrom emp e group by

deptno;

   select d.deptno,d.dname,ed.c,ed.a,e.ename from emp e,ed,dept d wheree.deptno = d.deptno

and e.deptno = ed.deptno and e.sal = ed.m;

 

 with check option  ---> 创建视图后不能再进行更新操作

  :create or replace view emp20 asselect * from emp where deptno =20 with check option;

    update emp20 set deptno = 30 where empno = 7788;  //系统报错,提示:视图  with check

option where  子句违规

    update emp20 set ename = ‘斯科特‘ where empno = 7788;  //更新成功

     总结:with约束后,再更新视图时,除了创建条件不能更新,其他的字段均可更新。即取决于where

后面的条件

 with read only  ---> 创建的视图只读,即只能读取操作

  例:create or replace view emp20 asselect * from emp where deptno = 20 with read only;

     update emp20 set ename = ‘斯科特‘ where empno = 7788;  //提示错误:无法对只读视图进行

DML 操作

二、序列

  语法:create sequence 序列名

       [increment by n] 每次增长的长度

       [start with n] 从第几个序列开始

       [{maxvalue n | nomaxvalue}] 最大值

       [{minvalue n | nominvalue}] 最小值

       [cycle | nocycle] 增长到最大值后,回到最小值,重新开始增加

       [{cachen | nocache}]断开后重新连接,从n开始继续增长

  序列创建完成之后,所有的自动增长由用户自己处理,序列的两种操作:

 nextVal ---> 取得序列的下一个内容

 currVal ---> 取得序列的当前内容

  例:创建一个序列

    create sequence myseq;

     建立一张验证序列的表

    create table testseq(next number,curr number);

     向表中增加数据

    insert into testseq(next,curr)values(myseq.nextval,myseq.currval);

     删除序列:drop sequence 序列名

三、索引

  将某张表中的某一列放入一张索引表中,通过查找索引表就能得到对应的数据

  语法:create index 索引表名

 

  Oracle的索引表

  1B树索引(二叉树的形式)默认

  2、位图索引

  如果一张表中有主键,那么会自动创建索引或手动创建:

 create index myindex on emp(deptno);---创建索引表

 create index myindex on emp(deptno,job);----创建两张索引表


数据库中的视图、序列及索引

标签:最低工资   平均工资   create   数据库   count   

原文地址:http://9882931.blog.51cto.com/9872931/1614883

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!