MySQL中视图:
1. 视图的列可以来自不同的表;
2. 是由基本表产生的(虚)表;
3. 对视图的create与drop不影响基本表
4. 对view的更新(insert, delete, update)会直接影响基本表;
5. 当view来自多个基本表 或 含有distinct 或 嵌套查询 或 聚集函数 时,则不允许对view进行更新;
6. 若view的字段来自字段表达式或常数时, 不允许insert,update 但可以delete;
7. view中的date来自基本表,一旦基本表中的date变化,那么view中的也随之变化。
注:对view 进行update和delete时,由于在safe mode下直接 update student_view set Sage=20 where Sname='test' 是不被允许的,必须在此之前
加一条语句: set SQL_SAFE_UPDATES=0; 改变其安全等级才可执行对view的更新。 更新过后,可再次输入:set SQL_SAFE_UPDATES=1;
恢复其安全性。
创建视图:create view view_student
as
select Sno, Sname, Sage
from student (where Sdept='IS');
select * from view_student;
用view操作基本数据:
insert into view_test
values(20151221,'test0',17,'IS');
set SQL_SAFE_UPDATES=0;
delete from view_test
where Sname='test0';
视图的作用:
1. 简化用户操作;
2. 使用户能从多个角度看待同一组数据;
3. 对重构数据库提供一定程度的逻辑独立性;
4. 对机密数据提供安全保护;
5. 适当利用视图更清晰的表达查询.(例如: 查询“对每个同学找出他获得最高成绩的课程号” 可先定义一个视图,再求出每个同学获得的最高成绩。)