数据库之视图

avatar
作者
猴君
阅读量:0

目录

一、视图概述

二、创建视图

1.在单表上创建视图

2.在多表上创建视图

三、查看视图

1.查看视图基本信息

2.查看视图定义语句

3.通过views表查看视图详细信息

四、修改视图

1.使用CREATE OR REPLACE VIEW语句修改视图

2.使用ALTER语句修改视图

五、删除视图

六、操作视图中数据

1.修改视图中数据

2.删除视图中数据

3.向视图中插入数据


一、视图概述

视图是从数据库中的一张或多张表中导出的表。创建视图时所引用的表称为基表。视图中的数据并不是像表中那样存储在数据库中,它只是读取基表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除等操作。在对视图中的数据进行修改时,相应的基本表中的数据也会发生变化;同时,若基本表的数据发生变化,则这种变化也会反映到视图中。


与直接操作数据表相比,视图主要有以下优势:

简单:视图中看到的即是需要的,用户完全不需要考虑对应的表结构、关联条件和筛选条件。对于用户来说,经常使用的查询可以被定义为视图。

安全:视图可以作为一种安全机制。通过视图,用户只能查看和修改他们所看到的数据,数据库中的其他数据或表既看不见也不可以访问,这样的用户就被限制在了数据的不同子集上。

数据独立:视图可以使应用程序和数据表在一定程度上独立,创建视图之后,应用程序可以建立在视图之上,从而使程序与数据表分隔开来,这样就可以屏蔽表结构变化带来的影响。


二、创建视图

视图可以以一张表为基础创建,也可以以多张表为基础创建。创建视图使用CREATE VIEW语句,其基本语法格式如下:

CREATE [OP REPLACE] VIEW view_name [(column_list)]

AS SELECT_statement;

上述语句中,view_name表示视图的名称,column_list表示视图的字段列表,SELECT_statement表示SELECT语句。

创建视图时应注意以下几点:

定义中引用的任何表或视图都必须存在。如果在创建视图后,删除定义时应用的表或视图,则使用视图时将导致错误。

创建视图不能引用临时表。

SELECT语句中最大列名长度为64个字符。


1.在单表上创建视图

默认情况下,视图的字段名与基表的字段名相同。但是,为了增加数据安全性,也可以为视图字段指定不同的名称。

示例:

CREATE VIEW v_table2(goods_id,goods_name) AS SELECT id,name FROM goods;


2.在多表上创建视图

示例:

CREATE VIEW v_table3(o_id,name) AS SELECT orders.o_id,goods.name FROM goods

JOIN orders ON goods.id=orders.goods_id;


三、查看视图

1.查看视图基本信息

使用DESC语句可以查看视图的结构,其基本语法格式如下:

DESC 视图名;

视图中不存在主键,并且也不能在视图上创建索引,因为它实际上只是一个结果集。


2.查看视图定义语句

使用SHOW CREATE VIEW语句可以查看视图定义语句,其基本语法格式如下:

SHOW CREATE VIEW 视图名;


3.通过views表查看视图详细信息

在MySQL中,所有视图的详细信息都存储在系统数据库information_schema下的views表中。通过views表,可以查看数据库中所有视图的详细信息。

SQL语句如下:

SELECT * FROM information_schema.views \G

主要参数及其意义:

TABLE_CATALOG:表示视图的目录。

TABLE_SCHEMA:表示视图所属的数据库。

TABLE_NAME:表示视图名称。

VIEW_DEFINITION:表示视图定义语句。

IS_UPDATABLE:表示视图是否可以更新。

DEFINER:表示创建视图的用户。

SECURITY_TYPE:表示视图的安全类型。

CHARACTER_SET_CLIENT:表示视图的字符集。

COLLATION_CONNECTION:表示视图的排序规则。


四、修改视图

1.使用CREATE OR REPLACE VIEW语句修改视图

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

CREATE OR REPLACE VIEW view_name [(column_list)] AS SELECT_statement;


2.使用ALTER语句修改视图

使用ALTER语句修改视图的语法形式如下:

ALTER VIEW view_name [(column_list)] AS SELECT_statement;


五、删除视图

使用DROP VIEW语句可删除一个或多个视图。其基本语法格式如下:

DROP VIEW [IF EXISTS] 视图1,......视图n;

其中参数IF EXISTS表示当视图不存在时,系统不会报错;后面的视图名可以有多个,各视图之间用逗号隔开。


六、操作视图中数据

1.修改视图中数据

当视图中的数据被修改,基表中的数据会同时被修改。同样,当基表中的数据被修改,视图中的数据也会被修改。

示例:

UPDATE v_table2 SET goods_name=’雷伊’ WHERE goods_id=1;


2.删除视图中数据

删除视图中数据的方法与删除表中数据相同。

示例:

DELETE FROM v_table2 WHERE goods_id=10;


3.向视图中插入数据

向视图中插入数据的方法与向表中插入数据相同。

示例:

INSERT INTO v_table2 values(10,’红楼梦’,138);

在向视图中插入数据时,应注意视图中必须包含基表中不允许为NULL的所有列,否则在插入数据时将会报错。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!