MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)

目录

一、定义视图

1、建立视图

2、删除视图

二、查询视图

三、更新视图

四、视图的作用


一、定义视图

1、建立视图

语法:CREATE VIEW 视图名 【列名】... AS 子查询 【WITH CHECK OPTION】

WITH CHECK OPTION:加上这个语句后即对视图的修改需要符合定义视图时子查询中的条件表达式。

例1:单个表上的视图

CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept='IS';

解释:建立信息系学生的视图。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第1张图片

例2:多个表上的视图

CREATE VIEW IS_S1(Sno, Sname, Grade) AS SELECT Student.Sno, Sname, Grade FROM Student, SC WHERE Sdept='IS' AND Student.Sno=SC.Sno AND SC.Cno='1';

解释:建立信息系选修了1号课程的学生的视图。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第2张图片

例3:在视图上建立视图

CREATE VIEW IS_S2 AS SELECT Sno, Sname, Grade FROM IS_S1 WHERE Grade>=90;

解释:建立信息系选修1号课程且成绩在90分以上的学生视图。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第3张图片

例4:带虚拟列的视图(带表达式的视图)

CREATE VIEW BT_S(Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2014-Sage FROM Student;

解释:反映学生出生年份的视图。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第4张图片

例5:分组视图

CREATE VIEW S_G(Sno, Gavg) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;

解释:将学生的学号及平均成绩定义为一个视图。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第5张图片

2、删除视图

语法:DROP VIEW 视图名;

例:DROP VIEW S_G;

二、查询视图

视图定义后就可以向对基本表一样对视图进行查询了。

例1:SELECT Sno, Sage FROM IS_Student WHERE Sage<20;

解释:使用刚刚定义的视图IS_Student进行查询年龄小于20岁的学生。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第6张图片

例2:SELECT * FROM IS_S1;

解释:查询刚刚定义的视图IS_S1。

三、更新视图

由于视图是不实际存在的虚表,因此对视图的更新最终要转换为对基本表的更新。

例:UPDATE IS_Student SET Sname='lili' WHERE Sno='201215125';

解释:将信息系学生视图IS_Student中学号为“201215125”的学生姓名改为“lili”。

MySql数据库之视图(定义视图、查询视图、更新视图、视图的作用)_第7张图片

四、视图的作用

      1) 视图能够简化用户的操作

      2) 视图使用户能以多种角度看待同一数据

      3) 视图对重构数据库提供了一定程度上的逻辑独立性

      4) 视图能够对机密数据提供安全保护

      5) 适当利用视图可以更清晰地表达查询

你可能感兴趣的:(数据库)