数据库中的视图、序列及索引
2015-02-19 18:59
246 查看
一、视图
语法: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;
查询部门名称、部门人数、平均工资以及最低工资的雇员姓名
1、selectd.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的索引表
1、B树索引(二叉树的形式)默认
2、位图索引
如果一张表中有主键,那么会自动创建索引或手动创建:
create index myindex on emp(deptno);---创建索引表
create index myindex on emp(deptno,job);----创建两张索引表
语法: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;
查询部门名称、部门人数、平均工资以及最低工资的雇员姓名
1、selectd.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的索引表
1、B树索引(二叉树的形式)默认
2、位图索引
如果一张表中有主键,那么会自动创建索引或手动创建:
create index myindex on emp(deptno);---创建索引表
create index myindex on emp(deptno,job);----创建两张索引表
相关文章推荐
- Oracle Class4. 数据库对象(同义词,序列,视图,索引,簇)
- 数据库基础知识点二:PLSQL、游标、程序包、存储过程、触发器,序列,视图,索引,数据字典
- Greenplum中定义数据库对象之创建与管理序列、索引以及视图
- 数据库中的事务、视图、序列 、同义词、索引、数据字典、PL/SQL块 、异常处理、存储过程
- 数据库对象 同义词 索引 序列 视图
- 数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引
- Oracle之SQL基础--创建数据库对象(序列 视图)及索引
- 【数据库】[oracle]表,视图,索引,序列,同义词等操作集合
- 【Oracle】曾经的Oracle学习笔记(8-15)ER图,三大范式,数据库字典,视图,索引,序列
- 数据库:DML、事务处理、约束、视图、序列(sequence)、索引
- 【数据库】[oracle]表,视图,索引,序列,同义词等操作集合
- 转帖杂和数据库------- SQL-server 数据库相关知识 事务、索引、视图
- 数据库中视图、表和索引的区别和联系及表约束和内建DataTy
- 精通数据库SQL——索引与视图的创建
- day20 分页查询 事务 序列 索引 视图
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- oracle 中的视图,索引,序列及同义词数据字典
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- 数据库是否使用外键,及视图,索引,存储过程的一些说明(zz)
- 数据库是否使用外键,及视图,索引,存储过程的一些说明(zz)