首页 新闻网正文

Mysql升阶三板斧(一)陪你完全弄懂View主视图的基本原理及运用

主视图的发源虚似表动态性转化成对话框4、安全系数5、协调能力Y表明有建立的管理权限


2、单表上创建视图

#在职工表有创建视图


CREATE VIEW S_VIEW1(ID, SNAME, SEX, AGE,CLASS,GRADE,HOBBY) AS SELECT ID, SNAME, SEX,AGE,CLASS,GRADE,HOBBY FROM student;

#随后是显示信息內容:


SELECT * FROM S_VIEW1


3、多表上创建视图

CREATE VIEW V_VIEW2(ID, SNAME, SEX, AGE, CLASS, GRADE, HOBBY, TOTAL_SCORE, RANK) AS SELECT a.ID, a.SNAME, a.SEX, a.AGE,a.CLASS, a.GRADE, a.HOBBY, b.TOTAL_SCORE, b.RANKFROM student a,student_score b WHERE a.ID=b.SID;

#随后是显示信息內容


SELECT * FROM V_VIEW2


4、查询主视图详细信息

(1)DESCRIBE :查寻主视图构造


DESCRIBE V_VIEW2


(2)SHOW TABLE STATUS : 查寻主视图情况


show TABLE status LIKE 'V_VIEW2'

(3)SHOW CREATE view :


show CREATE view V_VIEW2


5、改动主视图SQL

(1)CREATE OR REPLACE 指令


CREATE OR REPLACE VIEW S_VIEW1(ID, SNAME, SEX) AS SELECT ID, SNAME, SEX  FROM student;


(2) ALTER 指令


ALTER VIEW S_VIEW1(ID, SNAME) AS SELECT ID, SNAME FROM student;

#查寻该主视图


SELECT * FROM S_VIEW1


6、升级主视图数据信息


在MySQL中,升级主视图就是指根据主视图来插进(INSERT)、升级(UPDATE)和删掉(DELETE)原表中的数据信息。由于主视图是一个虚似表,在其中沒有数据信息,因此根据主视图升级时,全是变换到基础表来升级。


升级主视图时,只有升级管理权限范畴内的数据信息。超过了范畴,就不可以升级。


例如,我觉得将我的成绩改高一些。升级前以下:



#COOL!!将我的总成绩改为1000分了!!升级后发觉忘记了换名。。還是并排倒数第一 -_-''|(升级句子以下):


UPDATE V_VIEW2 SET TOTAL_SCORE=1000 WHERE SNAME='陈嘿嘿'


#相匹配的真正表上的数据信息也发生改变了


SELECT * FROM student_score


#不能升级的主视图:


一些主视图是可升级的。换句话说,能够 在例如UPDATE、DELETE或INSERT等句子中应用他们,以升级基表的內容。针对可升级的主视图,在主视图中的行和基表中的行中间务必具备一对一的关联。


也有一些特殊的别的构造,这类构造会促使主视图不能升级。更实际地讲,假如主视图包括以下构造中的一切一种,那麼它便是不能升级的:


· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。· DISTINCT· GROUP BY· HAVING· UNION或UNION ALL· 坐落于挑选目录中的子查询· Join· FROM子句中的不能升级主视图· WHERE子句中的子查询,引入FROM子句中的表。· 仅引入文本值(在该状况下,沒有要升级的基础表)。· ALGORITHM = TEMPTABLE(应用临时表都会使主视图变成不能升级的)。

#留意


主视图中尽管能够 升级数据信息,可是有很多的限定。一般状况下,最好是将主视图做为查寻数据信息的虚似表,而不必根据主视图升级数据信息。由于,应用主视图升级数据信息时,要是没有全方位考虑到在主视图中升级数据信息的限定,就将会会导致数据信息更新失败。


CASCADED和LOCAL能否决策主视图是不是能升级?


WITH[CASCADED|LOCAL] CHECK OPTION能否决策主视图是不是能升级?这两个主要参数的基础界定以下:


LOCAL:表明升级主视图时要是考虑该主视图自身界定的标准就可以。CASCADED:表明升级主视图时必须考虑全部有关主视图和表的标准。沒有指出时,该主要参数为初始值。

#With check option的用法:with check option针对沒有where标准的主视图失灵的


CREATE VIEW S_VIEW3(ID, SNAME, SEX, AGE, CLASS, GRADE, HOBBY) AS SELECT ID, SNAME, SEX, AGE, CLASS, GRADE, HOBBY FROM student WHERE CLASS='18班' WITH LOCAL CHECK OPTION;

#表明只限制插进班集体为18班的人。



#随后插进一条:


注:向视图中插进数据信息时没法开启基础表的全自动增长特性,因此ID不可以立即写null,不然出错([Err] 1048 - Column 'ID' cannot be null


INSERT INTO S_VIEW3(ID, SNAME, SEX, AGE, CLASS, GRADE, HOBBY) VALUES('7','陈子凝','女',15,'18班','9年级','看电视剧');

#看看結果:


SELECT * FROM S_VIEW3


#另外看真正表格中的数据信息,早已取得成功插进:



#再说插进一条别的班集体的数据信息:


INSERT INTO S_VIEW3(ID, SNAME, SEX, AGE, CLASS, GRADE, HOBBY) VALUES('7','快手吴迪','男',15,'20班','9年级','吹牛');


数据显示插进不成功


针对with check option用法,小结以下:


根据有with check option选择项的主视图实际操作基表(仅仅应对单表,对联接多表的主视图已经寻找答案),有下列结果: 插进后的数据信息,根据主视图可以查寻出去就合乎WITH CHECK OPTION 不然就不符;


最先主视图只实际操作它能够 查寻出去的数据信息,针对它查寻出不来的数据信息,即便基表有,也不能根据主视图来实际操作。


1.针对update,有with check option,要确保update后,数据信息要被主视图查寻出去


2.针对delete,有没有with check option都一样


4.针对insert,有with check option,要确保insert后,数据信息要被主视图查寻出去


针对沒有where 子句的主视图,应用with check option是不必要的


7、删掉主视图

DROP VIEW IF EXISTS '主视图名'


现阶段在职人员Java开发设计,假如你如今也在学习培训Java,在基础学习Java的全过程之中欠缺基本新手入门的教程视频, 能够 关心并私聊我:01。免费领今年全新Java基本精解教程视频,学习手册,面试问题,开发环境,PDF文档书本实例教程,下列材料截屏:














关心并私聊我:01。就可以领到之上学习材料。


评论

好文推荐

最新留言