视图

6.1 视图概述

6.1.1 视图的含义

视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,若基本表的数据发生变化,则这种变化可以自动地反映到视图中。

6.1.2 视图的作用

与直接从数据表中读取相比,视图有以下优点:
● 简单性
● 安全性
● 逻辑数据独立性

6.2 创建视图

6.2.1 创建视图的语法形式

创建视图使用CREATE VIEW语句,基本语法格式如下:

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
	VIEW view_name [(column_list)]
	AS SELECT_statement
	[WITH [CASCADED | LOCAL] CHECK OPTION]

6.2.2 在单表上创建视图

MySQL可以在单个数据表上创建视图。

例子

【例6.1】在t表上创建一个名为view_t的视图,代码如下:
首先创建基本表并插入数据,语句如下:

CREATE TABLE t (quantity INT, price INT);
INSERT INTO t VALUES(3, 50);

6.2.3 在多表上创建视图

MySQL中也可以在两个或者两个以上的表上创建视图,可以使用CREATE VIEW语句实现。

例子

创建视图stu_glass,语句如下:

CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,
stu_info.glass
FROM student ,stu_info WHERE student.s_id=stu_info.s_id;

6.3 查看视图

6.3.1 DESCRIBE语句查看视图基本信息

DESCRIBE可以用来查看视图。
DESCRIBE 视图名;

例子

【例6.4】通过DESCRIBE语句查看视图view_t的定义,代码如下:

DESCRIBE view_t;

6.3.2 SHOW TABLE STATUS语句查看视图基本信息

查看视图的信息可以通过SHOW TABLE STATUS的方法。
SHOW TABLE STATUS LIKE '视图名';

例子

【例6.5】下面将通过一个例子来学习使用SHOW TABLE STATUS命令查看视图信息,代码如下:

SHOW TABLE STATUS LIKE 'view_t' \G

6.3.3 SHOW CREATE VIEW语句查看视图详细信息

使用SHOW CREATE VIEW语句可以查看视图详细定义。
SHOW CREATE VIEW 视图名;

例子

【例6.6】SHOW CREATE VIEW查看视图的详细定义,代码如下:

SHOW CREATE VIEW view_t \G

6.3.4 在views表中查看视图详细信息

在MySQL中,information_schema数据库下的views表中存储了所有视图的定义。通过对views表的查询,可以查看数据库中所有的视图的详细信息。
SELECT * FROM information_schema.views;

例子

【例6.7】在views表中查看视图的详细定义,代码如下:

mysql> SELECT * FROM information_schema.views\G

6.4 修改视图

6.4.1 CREATE OR REPLACE VIEW语句修改视图

修改视图,使用CREATE OR REPLACE VIEW语句,语法如下:

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

6.4.2 ALTER语句修改视图

ALTER语句是MySQL提供的另外一种修改视图的方法。

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
     VIEW view_name [(column_list)]
     AS SELECT_statement
     [WITH [CASCADED | LOCAL] CHECK OPTION]

6.5 更新视图

更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。通过视图更新的时候都是转到基本表进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录

6.6 删除视图

当视图不再需要时,可以将其删除,删除一个或多个视图可以使用DROP VIEW语句,删除视图必须拥有DROP权限。

DROP VIEW [IF EXISTS]
     view_name [, view_name] ...
     [RESTRICT | CASCADE]

6.7 综合案例——视图应用

posted @ 2021-09-20 20:27  索匣  阅读(435)  评论(0编辑  收藏  举报