数据库之视图
创始人
2024-11-11 12:09:39
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的所有列,否则在插入数据时将会报错。

相关内容

热门资讯

4分钟秘籍!免费辅助神器app... 4分钟秘籍!免费辅助神器app,超凡辅助软件(辅助)好像真的有脚本(哔哩哔哩)1、很好的工具软件,可...
第3分钟指南!哈糖菠萝怎么挂,... 第3分钟指南!哈糖菠萝怎么挂,海贝之城辅助(辅助)其实真的有安装(哔哩哔哩)1、哈糖菠萝怎么挂脚本辅...
8分钟指南!新金龙辅助工具,葫... 8分钟指南!新金龙辅助工具,葫芦娃辅助软件(辅助)果然是有下载(哔哩哔哩)葫芦娃辅助软件透视方法中分...
三分钟攻略!微信小程序财神十三... 三分钟攻略!微信小程序财神十三脚本app,三哥玩辅助器免费下载(辅助)确实真的有辅助(哔哩哔哩)1、...
第8分钟绝活儿!免费雀神挂件怎... 第8分钟绝活儿!免费雀神挂件怎么安装,三哥玩辅助器免费下载(辅助)都是有挂辅助(哔哩哔哩)1、玩家可...
第5分钟经验!新道游正版辅助,... 第5分钟经验!新道游正版辅助,财神破解版全自动脚本(辅助)竟然有挂工具(哔哩哔哩)1、起透看视 财神...
第七分钟机巧!威信茶馆有挂的吗... 第七分钟机巧!威信茶馆有挂的吗,新518互游辅助(辅助)原来真的有辅助(哔哩哔哩)1、进入游戏-大厅...
4分钟大纲!决战十水三修改器,... 4分钟大纲!决战十水三修改器,新天道怎么看底牌(辅助)切实是有app(哔哩哔哩)1、实时新天道怎么看...
两分钟资料!新九哥破解版,火神... 两分钟资料!新九哥破解版,火神微信辅助(辅助)一贯存在有脚本(哔哩哔哩)一、新九哥破解版游戏安装教程...
第9分钟法子!阿拉斗牌辅助,新... 第9分钟法子!阿拉斗牌辅助,新星游辅助软件下载(辅助)果然真的是有脚本(哔哩哔哩);1、首先打开新星...