MySQL数据库学习(5)

一、概念
视图是数据库中常用对象之一,它的内容是数据库部分数据或以聚合等方式重构的数据。
只存放视图的定义,不存放数据。不存储数据,所以视图是一个虚表。
因为数据存在基本表中,基本表的数据发生变化,视图查询的结果集会随之改变。
视图的数据来源可以是一个表,也可以是多个表。定义好的视图可以和基本表一样进行查询、修改、更新和删除等操作。
视图可以从原有的表上选取对用户有用的信息,那些对用户没用,或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,也保证了系统的安全。
1.视图并不同于数据表,它们的区别在于以下几点:
视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真实表的查询基础上的。
存储在数据库中的查询操作 SQL 语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。
视图没有实际的物理记录,不是以数据集的形式存储在数据库中的,它所对应的数据实际上是存储在视图所引用的真实表中的。
视图是数据的窗口,而表是内容。表是实际数据的存放单位,而视图只是以不同的显示方式展示数据,其数据来源还是实际表。
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL 语句的集合。从安全的角度来看,视图的数据安全性更高,使用视图的用户不接触数据表,不知道表结构。
视图的建立和删除只影响视图本身,不影响对应的基本表。
2.视图的优点:
1) 定制用户数据,聚焦特定的数据
2) 简化数据操作
3) 提高数据的安全性
4) 共享所需数据
5) 更改数据格式
6) 重用 SQL 语句
3.使用视图注意事项:
创建视图需要足够的访问权限
1)创建视图的数目没有限制
2)视图可以嵌套,即从其他视图中检索数据的查询来创建视图
3)视图不能索引,也不能有关联的触发器、默认值或规则
4)视图可以和表一起使用。
5)视图不包含数据,所以每次使用视图时,都必须执行查询中所需的任何一个检索操作。如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。因此,在部署大量视图应用时,应该进行系统测试。
二、创建视图
创建视图语法格式
CREATE VIEW <视图名> AS <SELECT语句>
<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
<SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。
对于创建视图中的 SELECT 语句的指定存在以下限制:
用户除了拥有 CREATE VIEW 权限外,还具有操作中涉及的基础表和其他视图的相关权限。
SELECT 语句不能引用系统或用户变量。
SELECT 语句不能包含 FROM 子句中的子查询。
SELECT 语句不能引用预处理语句参数。

 

 

三、查询视图
视图一经定义之后,就可以如同查询数据表一样,使用 SELECT语句查询视图中的数据,语法和查询基础表的数据一样。
视图用于查询主要应用在以下几个方面:
1)使用视图重新格式化检索出的数据
2)使用视图简化复杂的表连接
3)使用视图过滤数据
查看视图语法如下:DESCRIBE 视图名;
使用视图查看视图的定义:

注意:DESCRIBE 一般情况下可以简写成 DESC,输入这个命令的执行结果和输入 DESCRIBE 是一样的。
查看视图的字段信息和查看视图的详细信息:

所有视图的定义都是存储在 information_schema 数据库下的 views 表中,也可以在这个表中查看所有视图的详细信息,SQL 语句如下:
SELECT * FROM information_schema.views;
不过,通常情况下都是使用 SHOW CREATE VIEW 语句。
四、修改视图
修改视图是指修改 MySQL数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性。
1.语法
语法格式:ALTER VIEW <视图名> AS <SELECT语句>
<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
<SELECT 语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。
2.修改视图内容
视图是基于有实际数据基表的一个虚拟表,插入、修改和删除操作更新视图中的数据,实质上是在更新视图所引用的基本表的数据。
注意:对视图的修改就是对基本表的修改,因此在修改时,要满足基本表的数据定义。
可更新的视图:视图中的行和基本表的行之间必须具有一对一的关系
不可更新的视图:视图包含以下结构中的任何一种都不可更新
聚合函数 SUM()、MIN()、MAX()、COUNT()等
DISTINCT 关键字
GROUP BY 子句
HAVING 子句
UNION 或 UNION ALL 运算符
位于选择列表中的子查询
FROM 子句中的不可更新视图或包含多个表
WHERE 子句中的子查询,引用 FROM 子句中的表
ALGORITHM 选项为 TEMPTABLE(使用临时表总会使视图成为不可更新的)的时候
修改视图内容:

更新视图内容:

修改视图名称:
修改视图的名称可以先将视图删除,然后按照相同的定义语句进行视图的创建,并命名为新的视图名称。
五、删除视图
删除视图是指删除 MySQL数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据。
语法格式:DROP VIEW <视图名1> [ , <视图名2> …]
<视图名> 指定要删除的视图名。
DROP VIEW语句可以一次删除多个视图,但是必须在每个视图上拥有 DROP 权限。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

春风抚微霞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值