`
huangronaldo
  • 浏览: 220856 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

四、视图

 
阅读更多

视图

创建视图

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')
--
对插入不起作用,但是查询不到

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics