数据库学习笔记和小练习(5)视图
来源:互联网 发布:微软雅黑blod mac 编辑:程序博客网 时间:2024/06/13 22:40
视图是从一个或几个基本表(或视图)导出的虚表。所谓虚表是指数据库中值存放视图的定义,不存放视图对应的数据,数据仍然存放在原来的基本表中。
1.定义视图
create view....
as...
[ with check option]
(这一句的意思是对视图进行update insert delete操作的时候要保证相应的行为满足试图定义中的谓词条件。
(更新一个视图将更新其基表,而且不是所有的视图都是可更新的:很多都不可以)
比如包含有:分组,联结,子查询,并,聚集函数,distinct,导出(计算)列的时候都不可以。
(但是,一般应该将试图用于检索,而非更新)
create view IS_Studentasselect Sno,Sname,Sagefrom Studentwhere Sdept='IS'with check option;这里省略了视图的列名,隐含的由子查询select语句的三个列名组成
create view Is_S1(Sno,Sname,Grade)asselect Student.Sno,Sname,Gradefrom Student,scwhereSdept='IS' andstudent.Sno=SC.Sno andSC.Cno='1';建立了信息系选修1号课程的学生的视图,信息包含了两个表,所以要连接,除此之外,where需要表名信息系和1号课,所以三个条件是清晰地,因为sno是两个表的同名列,所以视图定义需要指出名字。
create view S_G(Sno,Sbirth)asselect Sno,avg(Grade)from scgroup by Sno;
这是使用了分组和聚集函数的分组视图。
2.删除视图
drop view S_G;
注意:如果要删除的视图上导出了视图,那么需要加上cascade才能删除成功。
3.查询视图
像对基本表一样查询即可。
select ... from 视图名;
举例:
select IS_Student.Sno,Snamefrom Is_Student,scwhere IS_Student.Sno=sc.Sno and SC.Cno='1';
4.更新视图
由于视图是不实际存储数据的虚表,因此对视图的更新最重要转换为对基本表的更新
注意:对视图的更新转化为对基本表的增,删,改的时候,要注意基表上建立视图时候的where条件
5 修改视图
(1)alter view 视图名 as 新的select语句。
(2)先drop删掉视图,再create重建。
6.查看视图的创建
show create view viewname;
0 0
- 数据库学习笔记和小练习(5)视图
- 数据库学习笔记和小练习(9)数据库完整性
- 数据库学习笔记和小练习(5)sql定义和查询练习
- 数据库学习笔记和小练习(8)数据库安全性小练习
- 数据库学习笔记和小练习(11)数据库完整性小练习
- 数据库学习笔记和小练习(1)数据定义
- 数据库学习笔记和小练习(2)数据更新
- 数据库学习笔记和小练习(4)中文乱码
- 数据库学习笔记和小练习(3)数据查询
- 数据库学习笔记和小练习(10)触发器
- 数据库学习笔记和小练习(12)事务
- 数据库学习笔记和小练习(14)函数
- 数据库学习笔记和小练习(15)存储过程
- 数据库学习笔记和小练习(16)外键再理解
- 数据库学习笔记和小练习(6)sql查询和更新练习
- 数据库学习笔记和小练习(7)数据库安全性之存取控制
- 数据库学习笔记和小练习(13)过程化SQL
- Oracle数据库学习笔记之视图
- HDU 2046 骨牌铺方格(斐波那契递推 或者 状压DP)
- 在viewpager中嵌套fragment再嵌套viewpager的事件分发问题解决
- 第二十二讲项目4-分支嵌套流程图【五级成绩】
- 【python】Linux服务器下安装python 的 MySQLdb 以及常见报错解决
- elasticsearch zen发现
- 数据库学习笔记和小练习(5)视图
- 20161105提高A组总结
- html form表单提交后不刷新不跳转的实现方法------
- 怎么根据程序读到的ADC值,推算实际电压值?
- C++输入流状态变化的一点小细节
- 树莓派(raspberry pi)初观之虚拟机qemu
- 2016.11.5 NOIP提高组模拟赛 总结
- mysql学习笔记之一
- JAVA多线程实现模拟卖票