dreamhua 2020-02-14
对于一个重要的表,比如支付宝的用户表,它包含了账户余额,但是我并不希望下级开发人员能看到这个用户的余数字段,怎么办呢?
我就做了一个另一个表,只给出指定的几个字段,下级开发人员对这个表的增删改依然能作用到我原有的表上。
完美!
我做的这另一个表,就叫视图。
注意:视图的创建需要dba权限。也就是说,只有管理员才能创建视图。
注意:有dba权限的用户才能创建视图
--创建一个表tb
create table tb(
c1 varchar(100),
c2 varchar(100),
c3 varchar(100),
c4 varchar(100)
)
select * from tb
insert into tb values(‘值1‘,‘值2‘,‘值3‘,‘值4‘)
--创建一个给定字段的视图tb_v1
create view tb_v1 as select c1,c2,c4 from tb;
select * from tb_v1
--可对给定字段正常增删改查
insert into tb_v1 values(‘值1‘,‘值2‘,‘值4‘)
select * from tb_v1;
select * from tb
--但不能对视图没有的字段(原表中有单没给视图的字段)进行操作
update tb_v1 set c3 = ‘新值3‘ --报错
--创建一个只读视图tb_v2
create view tb_v2 as select c1,c2,c3 from tb with read only;
--可查
select * from tb_v2
--不可增删改
insert into tb_v2 values(‘值1‘,‘值2‘,‘值3‘)
delete from tb_v2
update tb_v2 set c1 = ‘新值1‘drop view 视图名