外观
视图操作
查看视图
查看视图指查看数据库中存在的视图,需要具有SHOW VIEW权限。查看视图的方法如下。
DESCRIBE 视图名;
DESC 视图名;
SHOW TABLE STATUS LIKE '视图名';
SHOW CREATE VIEW 视图名;以上四种方法都可以查看已创建的视图,下面都进行演示。
desc v_employees;
show table status like 'v_employees';
show create view v_employees;
修改视图
修改视图指的是修改数据库中已存在的表的定义。当基本的表字段发生改变时,可以通过修改视图来保持视图和表保持一致。修改视图的语法如下:
CREATE OR REPLACE VIEW [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW 视图[(属性清单)] AS SELECT语句 [WITH [CASCADE|LOCAL] CHECK OPTION];ALTER [algorithm={undefined|merge|template}] VIEW view_name [(column_list)] AS select_statement [with [cascaded|local] CHECK OPTION];若在创建视图时使用了WITH CHECK OPTION、WITH ENCRYPTION、WITH SCHEMABING或VIEW_METADATA选项,修改视图时项保存这些选项提供的功能,必须在ALTER VIEW语句中将它们包括进去。
下面分别使用这两个语句修改上文创建的视图,这里我们先使用CREATE OR REPLACE VIEW语句删除字段tele。
create or replace view v_employees (id,name,sex) as select id,name,sex from employees;
再使用ALTER VIEW重新添加字段tele。
alter view v_employees (id,name,sex,tele) as select id,name,sex,telephone from employees;
更新视图
更新视图指对表的更新。但是视图有很多限制条件所以我们一般不更新视图。更新视图的语法如下:
UPDATE view_name SET column_name=value ... [WHERE子句];下面演示如何通过视图更改表的数据,首先看一下视图和表的数据。


然后我们输入下面的语句,然后再查看视图和表的数据。
update v_employees set tele='30003' where id='3';
可见数据被成功修改了。
但是若有以下几种情况是不能更新视图的:
- 视图中包含COUNT()、SUM()、MAX()和MIN()等函数;
- 视图中包含UNION、UNION ALL、DINTINCT、GROUP BY、HAVIG等关键字;
- 常量视图,如
create view view_book as select 'ansheng' as ansheng;; - 视图中SELECT包含子查询;
- 由不可更新的视图导出的视图,如
create view view_book as select * from book_view1;; - 创建视图时ALGORITHM为TMPLTABLE类型;
- 视图对应的表存在没有默认值的列,而且该列没有包含在视图里。
删除视图
语法如下:
DROP VIEW IF EXISTS <视图名> [RESTRICT|CASCADE];该语句从数据字典中删除指定的视图定义;若该视图导出了其他视图,则使用CASCADE级联删除,或者先显式删除导出的视图,再删除该视图;删除基表时,由该基表导出的所有视图必须显式删除。
如我们删除上面创建的v_employees视图。
drop view id exists v_employees;
由于视图是虚拟表,因此查询视图的语法和查询普通表相同,如下图。
运行结果
数据完整性是指数据的统一性和相容性,是为了防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据。一旦定义了完整性约束,MySQL服务器会实时检测处于更新状态的数据库内容是否符合相关的完整性约束,从而保证数据的一致性和正确性。这样既能防止对数据库的意外破坏又能减轻数据库管理人员的维护负担。
