四、视图

视图

创建视图

create view v as select * from emp
--v
为视图名,as为必须

查询视图

select * from v

通过视图V向基表emp录入数据
insert into v values(2005,'mikel',1003)

通过视图向基表更新数据

update v set ename='helen' where eid=2005

通过视图删除基表的数据

delete from v where eid=2005

--drop view v

视图不包含主键列

create view v as select ename,did from emp

select * from v
--
可以查询,可以删除,可以更新,不可以插入

/*当所创建的视图不包含基表所有非空列的时候,不能通过该视图进行数据录入*/

 

 

多表视图

重定义视图

alter view v


as select did from emp

create view v as select eid,ename,emp.did as edid,dept.did as did,dname
from emp,dept where emp.did=dept.did
--
创建多表连接的时候,视图中的列名必须唯一
--
如果没有where子句,则结果为两表的笛卡儿积

视图包含所有的列

delete from v
--
不可删除数据,因为修改会影响多个基表

insert into v values(11,'aa',1001,1008)
--
不能录入数据,因为修改会影响到多个基表

update v set ename='ee',dname='cc'
--
更新,影响到一个基表时可以,多个基表则不允许

视图不包含基表的所有非空列

--可以查询,不可删除,插入,
--
更新同上

where条件
alter view v as select * from dept where did>1003
--
定义视图时指定的where条件对查询起作用

delete from v where did=1001
--
对删除起作用

update v set dname='aa' where did=1001
--
对更新起作用

insert into v values(1001,'dd')
--
对插入不起作用,但是查询不到

猜你喜欢

转载自huangronaldo.iteye.com/blog/1335719
今日推荐