视图是从一个或多个表中导出来的表,是一种虚拟存在的表。就像一个窗口,通过这个窗口可以看到系统专门提供的数据。
这样不用查看整个数据库中的数据,值查看自己想看到的部分,方便操作,且保证数据安全。
数据库中只存放视图的定义,并没有存放视图中的数据,这些数据存放在原来的表中,使用视图时,数据库系统从原来的表中取出对应的数据。
语法规则:
create [ algorithm = {undefined|merge|temptable}] view 视图名 [(属性清单)] as select语句 [ with check option];
在单表上建视图:
create view my_view1 as select * from mytable1;
或:create view myview2 (id,name,fuction) as select d_id ,d_name,fuction from mytable2;
在多表上创建视图:
create view work_view1 (name,dep,sex,age,address)
as select name,department.name,sex,birthday,address from work , department where worker.id = departmeng.id with local check option;
查看视图:
(1) show talbe status like '视图名'; 或 show talbe status like '视图名'\G
显示关键信息:comment:view
(2) show create view 视图名; 或者 show create view 视图名\G
(3) 在views表中查看视图详细信息
select * from information_schema.views;或 select * from information_schema.views\G
修改视图:
create or replace 语句修改视图
create or replace view 视图名 [(属性清单)] as select语句 [ with check option];
与新建视图一样,如果视图存在就修改视图,如果视图不存在,则创建视图。
alter 语句修改视图:
alter view 视图名 [ (属性清单) ] as select语句 [ with check option];
更新视图:
使用update更新视图,和更新表的数据一样
update my_view1 set name='keyan',fuction='chuangxin',address='2lou3hao';
删除视图:
删除视图时,只能删除视图的定义,不会删除数据。使用drop view 来删除视图。
drop view [ if exists] 视图名列表 [restrict|cascade]
其中if exists判断视图是否存在,存在执行,不存在不执行;多个视图之间用逗号分隔。
drop view [if exists ] my_view1 , my_view2;