视图的作用是什么 有关视图的基本概念( 二 )


SELECT vuc.username, vuc.coursenameFROM view_user_course vucWHERE vuc.username = \'小张\'

视图的作用是什么 有关视图的基本概念

文章插图
05实例2-增删改数据操作尝试在视图view_user_course上做增删改数据操作,如下:
update view_user_course set username=\'test\',coursename=\'JAVASCRIPT\' where id=3操作失败,提示错误信息如下:
[SQL] update view_user_course set username=\'test\',coursename=\'JAVASCRIPT\' where id=3[Err] 1393 - Can not modify more than one base table through a join view \'demo.view_user_course\'因为不能在一张由多张关联表连接而成的视图上做同时修改两张表的操作;
那么哪些操作可以在视图上进行呢?
视图与表是一对一关系情况:如果没有其它约束(如视图中没有的字段 , 在基本表中是必填字段情况),是可以进行增删改数据操作;
如创建用户关键信息视图view_user_keyinfo , 如下:
-- ------------------------------ View structure for `view_user_keyinfo`-- ----------------------------DROP VIEWIF EXISTS `view_user_keyinfo`;CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `view_user_keyinfo` AS SELECT `u`.`id` AS `id`, `u`.`account` AS `account`, `u`.`name` AS `username`FROM `user` `u`;进行增删改操作如下,操作成功(注意user表中的其它字段要允许为空,否则操作失败):
INSERT INTO view_user_keyinfo (account, username)VALUES (\'test1\', \'test1\');DELETEFROM view_user_keyinfoWHERE username = \'test1\';UPDATE view_user_keyinfoSET username = \'updateuser\'WHERE id = 1视图与表是一对多关系情况:如果只修改一张表的数据,且没有其它约束(如视图中没有的字段,在基本表中是必填字段情况),是可以进行改数据操作,如以下语句,操作成功;
update view_user_course set coursename=\'JAVA\' where id=1;update view_user_course set username=\'test2\' where id=3;以下操作失败:
delete from view_user_course where id=3;insert into view_user_course(username, coursename) VALUES(\'2\',\'3\');总结视图这个概念还是比较容易理解的,也没啥好讲,主要注意一下视图中的查询语句性能要调到最优,修改视图操作时要小心,不经意可能会修改了基本表里的多条数据 。。。
后面会分享更多devops和DBA方面的内容 , 感兴趣的朋友可以关注一下~