视图的操作

一、学习任务1:为什么使用视图

        通过前面章节的知识可以发现,数据库中关于数据的查询有时候非常复杂,例如表连接、子查询等,这种査询会让程序员感到非常痛苦,因为它逻辑太复杂、编写语句比较多。当这种査询需要重复使用时,则不会次次都能编写正确,从而降低了数据库的实用性。

        在具体操作表前,有时候要求只能操作部分字段,而不是全部字段。例如,在公司中员工的工资一般是保密的,如果因为程序员一时疏忽向查询中多写入了关于“工资的字段,则会让员工的 工资显示给所有能够查看该查询结果的人,这时就需要限制程序员操作的字段。

        为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表, 并且在具体引用视图时动态生成。

        视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务。这样程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。

视图的特点如下:

视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。

视图是由基本表(实表)产生的表(虚表)。

视图的建立和删除不影响基本表。

对视图内容的更新(添加、删除和修改)直接影响基本表。

当视图来自多个基本表时,不允许添加和删除数据。

注意:MySQL数据库管理系统从5.0.1版本开始提供视图新特性。

二、学习任务2:创建视图

        视图的操作包括创建视图、查看视图、删除视图和修改视图。本节将详细介绍如何创建视图。在创建视图时,首先要确保拥有CREATE VIEW的权限,并且同时确保对创建视图所引用的表也具有相应的权限。

创建视图的语法形式

虽然视图可以被看成是一种虚拟表,但是其在物理上是不存在的,即数据库管理系统没有专门的位置为视图存储数据。根据视图的概念可以发现其数据来源于查询语句,因此创建视图的语法为:

create view view_name AS查询语句

和创建表一样视图名不能和表名、也不能和其他的视图名重名。根据上述语法可以发现,视图的功能实际上就是封装了复杂的查询语句。

三、学习任务3:查看视图

创建完视图后,经常需要査看视图信息。那么如何在MySQL数据库管理系统中查看视图呢?查看帮助文档,可以发现有许多可以实现查看视图的语句,例如,SHOW TABLESSHOW TABLE STATUSSHOW CREATE VIEW如果要使用这些语句,首先要确保拥有SHOW VIEW的权限。

3.1 SHOW TABLES语句查看视图名

MySQL5.1版本开始,执行SHOW TABLES语句时不仅会显示表的名字,同时也会显示出视图的名字。

下面演示通过SHOW TABLES语句查看数据库view中视图和表的功能具体语句如下

USE view;#选择数据库

SHOW TABLES;#查看视图

3.2 SHOW TABLE STATUS语句查看视图详细信息

SHOW TABLE语句一样SHOW TABLE STATUS语句不仅会显示表的详细信息同时也会显示视图的详细信息。SHOWTABLESTATUS语句的语法如下

SHOW TABLE STATUS FROM db_name】【LIKE 'pattern'】;

在上述语句中,参数db_name用来设置数据库,关键字SHOW TABLE STATUS表示将显示所设罝数据库里表和视图的详细信息。

SHOW TABLE STATUS语句返回表示表和视图各种信息的各种字段。

  SHOW TABLE STATUS返回字段含义

字段名

含义

Name

表和视图的名

Engine

表的存储引擎

Version

表的.frm文件的饭本号

Row_format

表的行存储格式

Rows

表中行的数目

Avg_row_length

表中行平均行长度

Dala_length

表数据文件的长度

Max_data_length

表数据文件的最大长度

Index_length

表索引文件的长度

Data_free

表被整序后,但是未使用的宇节的数目

Auto_increment

表中下一个Auto_increment

Create_time

表的创建时间

Update_time

表的最后一次更新时间

Check_time

表的最后一次检査时间

Collation

表的字符集

Checksum

表的活性校验

Create_options

表的额外选项

Comment

表的注解

3.3 SHOW CREATE VIEW语句查看视图定义信息

如果想査看关于视图的定义信息可以通过语句SHOW CREATE VIEW来实现。SHOW CREATE VIEW语句的语法如下

SHOW CREATE VIEW viewname

在上述语句中viewname参数表示所要査看定义信息的视图名称。

3.4 DESCRIBE|DESC语句查看视图定义信息

如果想査看关于视图的设计信息,可以通过语句DESCRIBEDESC来实现。DESCRIBEDESC语句的语法如下:

DESCRIBE | DESC viewname;

在上述语句中viewname参数表示所要査看设计信息的视图名称。

3.5 通过系统表查看视图信息

MySQL数据库安装成功后会自动创建系统数据库information_schema在该数据库中存在一个包含视图信息的表格views,可以通过查看表格views来查看所有视图的相关信息。

四、学习任务4:创建视图

视图的操作包括创建视图、查看视图、删除视图和修改视图。本节将详细介绍如何删除视图。 在删除视图时,首先要确保拥有DROP VIEW的权限。

删除视图的语法形式

通过DROP VIEW语句可以一次删除一个或者多个视图,关于删除视图的语法如下:

DROP VIEW view_name 【,view_name ...

在上述语句中,view_name参数表示所要删除视图的名称。

五、学习任务5:修改视图

对于已经创建好的视图,当使用一段时间后,就会需要进行一些结构上的修改,即视图的修改操作。除了可以使用ALTER语句实现修改视图外,还可以通过CREATE OR REPLACE VIEW语句来修改视图。

5.1 CREATE OR REPLACE VIEW语句修改视图

对于已经创建好的表尤其是已经有大量数据的表。通过先删除,然后再按照新的表定义重建表方式来修改表时,需要做许多额外的工作,例如数据的重新加载等。可是对于视图来说,由于其是虚表,并没有存储数据,所以完全可以通过该方式来修改视图。

5.2 ALTER语句修改视图

与修改表一样,ALTER语句也可以修改视图,修改视图的语法如下:

ALTER VIEW viewname as查询语句

在上述语句中参数viewname用来设置修改视图的名称。

六、学习任务6:利用视图操作基本表

MySQL中可以通过视图检索基本表数据,这是视图最基本的应用,除此之外还可以通过视图修改基本表中的数据。

6.1检索(查询)数据

通过视图査询数据与通过表进行査询完全相同只不过通过视图査询比表更安全、更简单、实用。在具体实现时,只需把表名换成视图名即可。

6.2利用视图操作基本表数据

通过前面章节的知识可以知道不仅可以对视图进行查询数据而且还可以对视图进行更新增加、删除和更新数据操作。由于视图是虚表,所以对视图数据进行的更新操作,实际上是对其基本表数据进行更新操作。在具体更新视图数据时,需要注意以下两点:

对视图数据进行添加、删除和更新操作直接影响基本表。

视图来自多个基本表时,不允许添加和删除数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

the uzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值