视图

一、视图概述---为什么使用视图

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

视图的作用

Ø 使操作变得简单;

Ø 避免数据冗余;

Ø 增强数据安全性;

Ø 提高数据的逻辑独立性;

Ø 简化数据查询和处理:视图可以为用户集中多个表中的数据,使用户可以将注意 力集中在他们关心的数据上,简化用户对数据的查询和处理;

Ø 屏蔽数据库的复杂性:数据库表的更改不影响用户对数据库的使用,用户也不必 了解复杂的数据库中的表结构。例如,那些定义了若干张表连接的视图,就将表与 表之间的连接操作对用户隐蔽起来了;

Ø 安全性:如果想要使用户只能查询或修改用户有权限访问的数据,也可以只授予 用户访问视图的权限,不授予访问表的权限,这样就提高了数据库的安全性。

视图的行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。也就是说视图中的数据随着源表中的数据实时更新。

视图的优点

Ø 查看方便,占空间小,安全性高。

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

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

Ø 可以通过隐藏字段功能,实现查看数据的权限管理。

二、创建视图

使用 create view语句创建视图语法为:

create [or replace] //创建新视图或替换已有的视图

[algorithm ={ undefined |merge |temptable }] //视图的三种算法的选择

view 视图名[(列名列表)] //视图名,后可自定义视图列表名

as select语句 //视图内容的定义

[with[ cascaded|local] check option ] ; //权限设置

说明:

Ø create :表示创建新的视图; or replace :表示如果该视图已经存在, 则用新创建的视图代替原视图.

Ø algorithm子句 : 表示为视图选择算法,有三个选项,一般情况下我们不设置此选项。使用第一个参数"undefined",表示MySQL自动选择算法;默认即为此。

Ø view_name : 为视图名。默认情况下,在当前数据库下创建视图,若想给其他数据创建视图,必须在视图名前指定目标数据库名称 ,写为"数据库名.视图名"的形式: db_name.view_name,视图名不能与任何同个库中的表名重名;

Ø column_list : 可以给视图中的列取列名称,多个列用逗号隔开;

Ø select_statement :用来创建视图的select语句,给出了视图所需内容。默认情 况下,select语句检索的列名就是视图的列名称。若想给列名取别的名字,可 使用column_list字句,但注意两者数目必须相等。

Ø With check option :用于视图更新时,保证在视图的权限范围内;要求具有针对视图的create view语句权限,以及针对有select 语句选择列上的某些权限。

Øcascaded | local : 可选参数;

 cascade:默认值,更新视图时要满足所有相关视图和表的条件;

 local :表示更新视图时满足该视图本身的定义即可。

 视图不仅可以从一个基表导出,还可以从多张基表导出来;

 并且还可以在已有的视图基础上导出新的视图;

 因此可以将视图的创建分为三种情况:在单表中创建视图;在多表中创建视图;在已有视图中创建新的视图。

视图是从一个或者多个表、或其他视图中通过select语句导出的虚拟表;

数据库中只存放了视图的定义,而并没有存放视图中的数据;

浏览视图时产生的数据均来自定义视图查询所引用的基表,并且在引用视图时动态生成;

通过视图可以实现对基表数据的查询或修改。

三、查看视图 SQL语句:

  1. SHOW TABLES------只查看视图名
  2. SHOW TABLE STATUS from 数据库名 like "视图名"------查看视图详细信息
  3. SHOW CREATE VIEW 视图名------查看视图定义信息
  4. DESCRIBE|DESC 视图名------查看视图设计信息
  5. select * from 视图名------查看视图中的详细信息

四、删除视图

语法形式:DROP VIEW 视图名1(,视图名2,...,视图名n);

视图作为数据库的一个对象,删除时如表删除相同,都是用drop。可以同时删除多个视图。

五、修改视图

方案1 先删除已经建立的视图,再重建。

方案2 用创建视图时的语句,其中有create or replace。当已有时,即是执行replace。替换已经建立的视图。

CREATE OR REPLACE VIEW 视图名 as 查询语句;

方案3 用Alter语句修改视图。 ALTER VIEW 视图名 as 查询语句;

六、视图的用途

1.检索(查询)数据

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

  1. 利用视图操作基本表

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

相关推荐
晴天飛 雪1 分钟前
Grafana监控PostgreSQL
数据库·postgresql·grafana
斗-匕1 分钟前
Spring事务管理
数据库·spring·oracle
一行玩python32 分钟前
SQLAlchemy,ORM的Python标杆!
开发语言·数据库·python·oracle
MXsoft6181 小时前
华为服务器(iBMC)硬件监控指标解读
大数据·运维·数据库
TheITSea1 小时前
云服务器宝塔安装静态网页 WordPress、VuePress流程记录
java·服务器·数据库
Hacker_Oldv1 小时前
网络安全的学习路线
学习·安全·web安全
蒟蒻的贤1 小时前
vue学习11.21
javascript·vue.js·学习
高 朗1 小时前
【GO基础学习】基础语法(2)切片slice
开发语言·学习·golang·slice
码上有前2 小时前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
王ASC2 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle