手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

MySQL视图篇,更新视图

时间:2024-10-13 17:51:21

更新视图,指的是通过视图来插入、更新、删除表中的数据,使用的INSERT,UPDATE,DELETE语句。需要注意的是修改视图指的是修改视图本身,而更新视图则是更新视图数据

MySQL视图篇,更新视图

工具/原料

电脑

MySQL

Navicat等数据库可视化管理工具

创建测试数据

1、创建用户表DROP TABLE IF EXISTS `t_user`;CREATE TA幞洼踉残BLE `t_user` ( `id` int烫喇霰嘴(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;插入演示用户数据INSERT INTO `t_user` VALUES ('1', '甲');INSERT INTO `t_user` VALUES ('2', '乙');INSERT INTO `t_user` VALUES ('3', '丙');INSERT INTO `t_user` VALUES ('4', '丁');INSERT INTO `t_user` VALUES ('5', '戍');INSERT INTO `t_user` VALUES ('6', '己');INSERT INTO `t_user` VALUES ('7', '庚');INSERT INTO `t_user` VALUES ('8', '辛');INSERT INTO `t_user` VALUES ('9', '壬');INSERT INTO `t_user` VALUES ('10', '癸');

MySQL视图篇,更新视图

2、创建用户信息表DROP TABLE IF EXISTS `t_user_info`;CR苇质缵爨EATE TABLE `t_user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) DEFAULT NULL, `age` varchar(20) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;插入演示信息数据INSERT INTO `t_user_info` VALUES ('1', '1', '11', '男');INSERT INTO `t_user_info` VALUES ('2', '2', '12', '女');INSERT INTO `t_user_info` VALUES ('3', '3', '13', '男');INSERT INTO `t_user_info` VALUES ('4', '4', '14', '女');INSERT INTO `t_user_info` VALUES ('5', '5', '15', '男');INSERT INTO `t_user_info` VALUES ('6', '6', '16', '女');INSERT INTO `t_user_info` VALUES ('7', '7', '17', '男');INSERT INTO `t_user_info` VALUES ('8', '8', '18', '女');INSERT INTO `t_user_info` VALUES ('9', '9', '19', '男');INSERT INTO `t_user_info` VALUES ('10', '10', '20', '女');

MySQL视图篇,更新视图

创建视图

1、CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;

MySQL视图篇,更新视图

2、CREATE VIEW test_view_2(username) AS SELECT `name` FROM t_user;

MySQL视图篇,更新视图

3、CREATE VIEW test_vie嘛术铹砾w_3 (username, userage, usersex) AS SELECT t_user.`name`, t_user_info.age, t_user_info.sexFROM t_user, t_user_infoWHERE t_user.id = t_user_info.uid;

MySQL视图篇,更新视图

更新单表视图

1、单表视图插入数据插入数据INSERT INTO test_view_1 VALUES ('子');查询视图SELECT * FROM test_view_1;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

2、单表视图修改数据UPDATE test_view_1 set tname2 = '丑' where tname2='子';查询视图SELECT * FROM test_view_1;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

3、单表视图删除数据DELETE FROM test_view_1 WHERE tname2='丑';查询视图SELECT * FROM test_view_1;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

更新多表聚合视图

1、查询聚合视图test_view_3的数据SELECT * FROM test_view_3;

MySQL视图篇,更新视图

2、插入数据,错误示范!INSERT INTO test_view_3 (username,userage,usersex) VALUES ('子','21','男');报错了,原因是同时修改两个表的数据

MySQL视图篇,更新视图

3、修改原视图ALTER VIEW test_view_3 (id,uid,username, userage, usersex) AS SELECT t_us髫潋啜缅er.`id`, t_user_info.`uid`, t_user.`name`, t_user_info.age, t_user_info.sexFROM t_user, t_user_infoWHERE t_user.id = t_user_info.uid;查询视图SELECT * FROM test_view_3;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

4、分别对两张表的数据进行两次插入操作INSERT INTO test_view_3(id,username) VALUES (11,'子');INSERT INTO test_view_3(uid,userage,usersex) VALUES (11,21,'男');查询视图SELECT * FROM test_view_3;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

5、修改数据错误示范UPDATE test_view_3 SET username = '丑',userage = 22 where id=11;报错了,同理不可跨表操作

MySQL视图篇,更新视图

6、正确操作UPDATE test_view_3 SET username = '丑' where id=11;UPDATE test_view_3 SET userage = 22 where id=11;查询视图SELECT * FROM test_view_3;

MySQL视图篇,更新视图
MySQL视图篇,更新视图

7、删除操作错误示范DELETE FROM test_view_3 where id = 11;报错了,同理不可跨表操作

MySQL视图篇,更新视图

8、当视图包含以下内容时,视图更新操作将不能碌巫谫浪执行1.视图中不包含及表中定义非空的列;2.在定义视图的SELECT语句后的字段列表使用了数学表达式3.在定义视图的SELECT语句后的栓疠瑕愤字段列表使用了聚合函数4.在定义视图的SELECT语句后的字段列表使用了DISTINCT,UNION,TOP,GROUP BY 或HAVING子句综上,对视图进行增删改非常麻烦,个人不建议使用视图直接进行更新,建议直接对基表进行操作。

MySQL视图篇,更新视图
© 手抄报圈