视图创建完成以后可以像操作基本表一样去操作视图,例如通过如下语句即可完成从院系学生名单视图v_yxxsmd中筛选出“信息技术学院”的院系名称和学生姓名的任务。
mysql> SELECT dept_name,s_name
-> FROM v_yxxsmd
-> WHERE dept_name='信息技术学院';
与直接操纵数据表相比,视图具有以下优点和作用。
1)使用视图可以合理地组织数据,简化用户操作。如有了视图v_yxxsmd,本任务中的查询代码就非常变得简单。
2)使用视图有利于提高数据的独立性。在应用系统开发中,前端应用通过视图而不是通过基础表访问数据,这样当修改基础表结构时,前端应用就不会受到影响。当升级以前建立的应用系统时,也可以通过建立视图来模仿以前存在但已被更改的表。
3)使用视图可以提高数据的安全性。视图可以用作安全机制,通过视图只允许用户查看或修改其所能看到的数据,而不是允许其访问基础表的所有数据,有利于提高数据的安全性。
当某个视图不再被需要时,就需要将其从数据库中删除。在删除时,可以选择使用Navicat等图形工具或直接使用SQL语句。
1)图形工具只需要在对象浏览器窗口中选中相应视图,然后右击选择“删除视图”即可。
2)SQL语句使用DROP VIEW语句删除视图,其语法格式如下。
DROP VIEW [IF EXISTS] 视图名
其中,IF EXISTS为可选参数,用于判断视图是否存在,如果存在则执行,不存在则不执行。例如使用 DROP VIEW IF EXISTS v_yxxsmd语句即可完成视图 v_yxxsmd的删除工作。
视图建立后,可以像表一样使用,可以使用视图查询、更新、删除或插入数据,但如果视图创建的过程中带有检查选项子句WITH CASCADED CHECK OPTION或WITH LOCAL CHECK OPTION,则在更新视图时会受到相应的限制。
如果带有检查选项子句WITH CASCADED CHECK OPTION,则更新视图时MySQL会循环检查视图的规则以及底层表或视图的规则是否满足,如果有一个条件不满足,更新视图都会报错
从MySQL5.7.6开始如果带有检查选项子句WITH LOCAL CHECK OPTION,则更新视图时MySQL会检查带有检查选项WITH LOCAL CHECK OPTION和WITH CASCADED CHECK OPTION的视图规则,如果有相应的条件不满足,则更新视图也会报错。
视图建立后,可以像表一样使用,可以使用视图查询、更新、删除或插入数据,但如果视图创建的过程中带有检查选项子句WITH CASCADED CHECK OPTION或WITH LOCAL CHECK OPTION,则在更新视图时会受到相应的限制,具体说明如下:
1)如果带有检查选项子句WITH CASCADED CHECK OPTION,则更新视图时MySQL会循环检查视图的规则以及底层表或视图的规则是否满足,如果有一个条件不满足,更新视图都会报错。
2)从MySQL5.7.6开始如果带有检查选项子句WITH LOCAL CHECK OPTION,则更新视图时MySQL会检查带有检查选项WITH LOCAL CHECK OPTION和WITH CASCADED CHECK OPTION的视图规则,如果有相应的条件不满足,则更新视图也会报错。
3)检查选项子句WITH CASCADED CHECK OPTION及WITH LOCAL CHECK OPTION为创建视图的可选项,在实际应用的过程中可以根据实际情况灵活选用。
4)如果直接使用WITH CHECK OPTION作用等同于WITH CASCADED CHECK OPTION,正如前面所说 CASCADED为检查选项的默认值。