视图

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

所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。为了提高复杂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. 利用视图操作基本表

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

相关推荐
superman超哥10 分钟前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
engchina1 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina1 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生1 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
威哥爱编程1 小时前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
小华同学ai1 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
cuisidong19971 小时前
5G学习笔记三之物理层、数据链路层、RRC层协议
笔记·学习·5g
Acrelhuang1 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
南宫理的日知录2 小时前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
Mephisto.java2 小时前
【大数据学习 | kafka高级部分】kafka的kraft集群
大数据·sql·oracle·kafka·json·hbase