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