mysql视图插⼊删除_能否向Mysql视图中插⼊更新删除数据要通过视图更新基本表数据,必须保证视图是可更新视图,即可以在INSET、UPDATE或DELETE等语句当中使⽤它们。对于可更新的视图,在视图中的⾏和基表中的⾏之间必须具有⼀对⼀的关系。还有⼀些特定的其他结构,这类结构会使得视图不可更新。
如果视图包含下述结构中的任何⼀种,那么它就是不可更新的:
(1)聚合函数;
(2)DISTINCT关键字;
(3)GROUP BY⼦句;
(4)ORDER BY⼦句;
(5)HAVING⼦句;
(6)UNION运算符;
(7)位于选择列表中的⼦查询;
(8)FROM⼦句中包含多个表;
(9)SELECT语句中引⽤了不可更新视图;
(10)WHERE⼦句中的⼦查询,引⽤FROM⼦句中的表;
(11)ALGORITHM 选项指定为TEMPTABLE(使⽤临时表总会使视图成为不可更新的)。
1、插⼊数据
使⽤INSERT语句通过视图向基本表插⼊数据
mysql中delete语句例: 创建视图CS_XS,视图中包含计算机专业的学⽣信息,并向CS_XS视图中插⼊⼀条记录:('081255','李牧','计算机',1,'1990-10-21',50,NULL,NULL)。
⾸先创建视图CS_XS:(以下的删除、修改都是⽤该表)
CREATEOR REPLACE VIEW CS_XS
www.2cto
AS SELECT* FROM XS
WHERE 专业名 = '计算机' WITH CHECK OPTION;
注意:在创建视图的时候加上WITH CHECK OPTION⼦句,是因为WITH CHECK OPTION⼦句会在更新数据的时候检查新数据是否符合视图定义中WHERE⼦句的条件。WITH CHECKOPTION⼦句只能和可更新视图⼀起使⽤。
接下来插⼊记录:
INSERTINTO CS_XS
VALUES('081255', '李牧', '计算机', 1, '1990-10-14',50, NULL, NULL);
注意:这⾥插⼊记录时专业名只能为“计算机”。
这时,使⽤SELECT语句查询CS_XS视图和基本表XS,就可发现XS表中该记录已经被添加。
当视图所依赖的基本表有多个时,不能向该视图插⼊数据,因为这将会影响多个基本表。例如,不能向视图CS_KC插⼊数据,因为CS_KC 依赖两个基本表:XS和XS_KC。
对INSERT语句还有⼀个限制:SELECT语句中必须包含FROM⼦句中指定表的所有不能为空的列。例如,若CS_XS视图定义的时候不加上“姓名”字段,则插⼊数据的时候会出错。
2、修改数据 使⽤UPDATE语句可以通过视图修改基本表的数据 例: 将CS_XS视图中所有学⽣的总学分增加8。 UPDATECS_XS SET 总学分 = 总学分+ 8; 该语句实际上是将CS_XS视图所依赖的基本表XS中所有记录的总学分字段值在原来基础上增加8。 若⼀个视图依赖于多个基本表,则⼀次修改该视图只能变动⼀个基本表的数据。 例: 将CS_KC视图中学号为081101的学⽣的101课程成绩改为90。 UPDATECS_KC SET 成绩=90 WHERE 学号='081101' AND 课程号='101'; 本例中,视图CS_KC依赖于两个基本表:XS和
XS_KC,对CS_KC视图的⼀次修改只能改变学号(源于XS表)或者课程号和成绩(源于XS_KC表)。 以下的修改是错误的:
UPDATECS_KC SET 学号='081120',课程号='208' WHERE 成绩=90; 3、删除数据 使⽤DELETE语句可以通过视图删除基本表的数据 例: 删除CS_XS中⼥同学的记录。 DELETEFROM CS_XS WHERE 性别 = 0; 注意:对依赖于多个基本表的视图,不能使⽤DELETE语句。例如,不能通过对CS_KC视图执⾏DELETE语句⽽删除与之相关的基本表XS及XS_KC表的数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论