我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL利用视图插入修改删除数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL利用视图插入修改删除数据

这里写自定义目录标题

1. 准备

已有数据库stu,数据表student、course、score:

create database stu;use stu;create table student(sid char(4) primary key,sname varchar(20) not null,sex enum('男','女'),birth date,grade year,department enum('信息工程系','化学工程系','机械电子系') default '信息工程系',addr varchar(50))charset=utf8mb4;create table course(cno char(2) primary key,cname varchar(20) not null,start int,credit float)charset=utf8mb4;create table  score(scid int primary key auto_increment ,sid char(4),cno char(2),result float  check(result >= 0 and result <= 100))charset=utf8mb4;

2.创建视图

create view  v1as select sid,sname,sex,department,year(now())-year(birth) agefrom student where department='化学工程系';create view  v2as select sid,sname,sex,departmentfrom student where department='化学工程系';create view v3as select student.sid,sname,course.cno,cname,resultfrom student,score,coursewhere student.sid=score.sid and course.cno=score.cno;

3.插入数据

利用v1插入记录:

insert v1(sid,sname,sex,department)values('8888','张敏敏','女','信息工程系');

插入失败,错误提示:
Error Code: 1471. The target table v1 of the INSERT is not insertable-into

利用v2插入记录:

insert v2(sid,sname,sex,department)values('8888','张敏敏','女','信息工程系');

插入成功。
v1和v2相比,v1比v2多了个字段计算年龄的表达式year(now())-year(birth)。
插入失败可能原因1:定义视图的select语句后面有数学表达式或聚合函数。

利用v3插入记录

insert v3 values('8888','张敏敏','01','大学英语',90);

Error Code: 1394. Can not insert into join view ‘stu.v3’ without fields list

insert v3(cno,cname) values('55','人工智能');

插入成功
插入失败可能原因2:视图是定义在多个表上,通过视图插入一条记录可能是在多个表中插入记录。

定义视图v4,并在v4上定义视图v5、v6

create  view v4asselect sid,cno,resultfrom scorewhere result>=70 ;create  view v5asselect sid,cno,resultfrom v4where result<=90 with local check option ;create  view v6asselect sid,cno,resultfrom v4where result<=90 with cascaded check option ;

利用v4插入记录,不管是否满足result>=70,均可插入:

insert v4 values('0404','01',60);insert v4 values('0404','02',80);

利用v5插入记录:

insert v5 values('0405','01',60);insert v5 values('0405','02',95);insert v5 values('0405','03',80);

成绩为60、80均可插入,95插入失败:Error Code: 1369. CHECK OPTION failed ‘stu.v5’。因为在v5定义的时候有with local check option,必须满足视图v5本身定义的条件result<=90,对v4的条件result>=70不做要求。
with local check option 只要求满足该视图本身定义的条件

利用v6插入数据:

insert v6 values('0406','01',60);insert v6 values('0406','02',95);insert v6 values('0406','03',80);

只有成绩为80的记录插入成功,60和95均失败,因为在定义v6的时候有with cascaded check option,所以v6和v4定义的条件都必须满足。
with cascaded check option 要求满足所有视图和表定义的条件

插入失败可能原因3:插入记录不满足视图定义的基本条件。
在定义视图时select语句中含distinct、union、top、group by等短语时,插入记录也可能失败,不再举例。

4.修改记录、删除记录

利用v2修改学号8888为6688:

update v1 set sid='6688' where sid='8888';

不报错,不修改数据。提示为:0 row(s) affected Rows matched: 0 Changed: 0 Warnings: 0

利用v2删除8888记录:
delete from v2 where sid=‘8888’;
不报错、不删除。
如果修改v2定义去掉department=‘化学工程系’,则允许修改、允许删除:

create or replace view  v2as select sid,sname,sex,departmentfrom student;update v2 set sid='6688' where sid='8888';delete from v2 where sid='6688';

利用视图修改数据、删除数据时,不满足视图定义条件都不能修改或删除。不报错

5.总结:

利用视图插入数据时:
1.定义视图的select语句后面有数学表达式或聚合函数;
2.视图是定义在多个表上,通过视图插入一条记录是在多个表中插入记录;
3.视图定义时带‘with… check option’,不满足视图定义的条件;
4.视图带distinct、union、top、group by等短语时;
都可能导致插入记录失败。
利用视图修改数据、删除数据时,不满足视图定义条件都不能修改或删除。

来源地址:https://blog.csdn.net/snowzmy/article/details/130215296

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL利用视图插入修改删除数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mariadb数据的插入、删除与修改方法

这篇文章主要讲解了“Mariadb数据的插入、删除与修改方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mariadb数据的插入、删除与修改方法”吧!INSERT插入数据INSERT语句格
2023-06-27

MariaDB中如何实现数据的插入、修改和删除

小编给大家分享一下MariaDB中如何实现数据的插入、修改和删除,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB
2023-06-27

MySQL怎么修改视图数据

要修改MySQL视图数据,可以使用以下语法:UPDATE view_nameSET column1 = value1, column2 = value2, ...WHERE condition;其中,view_name是要修改的视图名
MySQL怎么修改视图数据
2024-04-19

MySQL如何修改视图数据

要修改MySQL视图的数据,您需要进行以下步骤:首先,您需要找到要修改的视图的名称。使用CREATE OR REPLACE VIEW语句来重新定义视图。在这个语句中,您可以使用SELECT语句来指定视图的新定义。执行CREATE OR RE
MySQL如何修改视图数据
2024-04-20

【⑮MySQL | 视图】概述 | 创建 | 查看 | 更新 | 修改 | 删除

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL视图概述 | 创建 | 查看 | 更新 | 修改 | 删除的分享✨ 目录 前言1.视图概述2.创建视图3.查看视图4.更新视图数据5.修改视图6.删除视图总结
2023-08-30

MySQL数据库操作DML 插入数据,删除数据,更新数据

目录DML介绍数据插入数据修改数据删除DML介绍DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。关键字:插入insert删除delete更新update数据
2022-07-11

MySQL视图的概念、创建、查看、删除和修改详解

目录一、什么是视图二、创建视图1.在单表上创建视图2.在多表上创建视图三、查看视图 四、更新视图数据 五、修改视图 六、删除视图 总结一、什么是视图小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试
2022-08-16

MySQL删除和插入数据很慢的问题解决

公司开发人员在测试环境中执行一条 insert 语句时,需要花费 10 几秒才可以执行成功。查看测试环境数据库性能、数据量、死锁等信息,均为发现异常。最后通过修改日志写入方式解决此问题。 1. 修改办法修改/etc/my.cnf文件,将 i
2022-05-14

编程热搜

目录