视图

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

所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。为了提高复杂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.检索(查询)数据 通过视图查询数据与通过表查询数据完全相同,只不过通过视图查询比表更安全、更简单、实用。在实现时,只需要把表名换成视图名即可。 2. 利用视图操作基本表 对视图内容的更新(添加、删除和修改记录)会直接影响基本表。

相关推荐
熠速几秒前
ITTIA DB Platform——实时嵌入式数据管理软件产品家族
数据库·嵌入式实时数据库
热爱编程的小曾32 分钟前
sqli-labs靶场 less 8
前端·数据库·less
THRUSTER1111141 分钟前
MySQL-- 函数(单行函数):数值函数, 字符串函数
数据库·mysql·函数·navicat·单行函数
橙序研工坊1 小时前
MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则
数据库·sql·mysql
Bruce-li__1 小时前
深入理解Python asyncio:从入门到实战,掌握异步编程精髓
网络·数据库·python
小脑斧爱吃鱼鱼1 小时前
鸿蒙项目笔记(1)
笔记·学习·harmonyos
阿linlin1 小时前
OpenCV--图像预处理学习01
opencv·学习·计算机视觉
小光学长1 小时前
基于vue框架的智能服务旅游管理系统54kd3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
Bonnie_12151 小时前
07-MySQL-事务的隔离级别以及底层原理
数据库·mysql
ETLCloud数据集成社区1 小时前
ETLCloud是如何通过Oracle实现CDC的?
数据库·oracle·etl·实时数据同步