我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 视图

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL  视图

MySQL  视图

 

视图的概念

视图是一张虚表,将查询结果集保存起来,作为视图使用。实际存在的表叫作基本表。

 

 

视图的作用

  • 安全性。grant授权用户只操作视图、只读,可以保护基本表中的数据。
  • 提高查询性能。视图只是基本表的一部分,查视图比查全表快。尤其是多表查询的时候,查视图一张表比连接多张表查询要快。

 

 

视图的常用操作


#创建视图
create view view_computer_dep as (select * from tb_student where dep_id=1); #把计算机系的学生信息保存为视图
#以后要查询计算机系的学生信息直接从视图中查,肯定比从tb_student全表里查要快。把多表查询的结果集保存为视图一张虚表,查询性能提升更加明显。


#从视图中查数据
select * from view_computer_dep;

#修改视图
create or replace view view_computer_dep as (select id,name from tb_student where dep_id=1); #视图名要相同。会使用新的结果集替换原来的结果集。
#必须要有create or,不能直接replace,语法不允许。
#如果视图不存在,会自动创建


#删除视图
drop view view_computer_dep;

 

 


 

 

 

创建视图的完整语法

create [algorithm=merge|temptable|undefined] view view_computer_dep as (select * from tb_student where dep_id=1) [with check option] ;

主要注意一下2个可选参数。

 

algorithm指定视图的执行机制,有3个可选的值:

(1)merge  合并

合并有2层含义,一是sql语句合并,比如说select * from view_computer_dep 操作视图,执行时会用视图定义替换视图名,实际执行的是select * from  (select * from tb_student where dep_id=1);二是操作合并,对视图中的记录可以进行增改删查(实际是对基本表进行增改删查),所以对视图中记录的增改删会同步到基本表

此种方式不会创建临时表,每次都是操作基本表,并不会提高查询性能

 

(2)temptable  临时表

(select * from tb_student where dep_id=1)  as  view_computer_dep; 
select * from view_computer_dep;
把对基本表的查询结果保存为临时表,每次操作的都是临时表。

此种方式可以提高查询性能,但只能对视图进行查询操作,不能进行增改删。

 

(3)undefined 未定义

缺省此参数时默认就是undefined,由数据库决定是使用merge还是使用temptable,mysql是使用merge。

 

 

如果使用merge,还可以设置一个可选参数:with check option  是否检查条件。

创建视图时设置了条件where dep_id=1(过滤基本表),即视图中的记录都是dep_id=1的。

如果设置了with check option,那往视图中插入记录时记录的dep_id必须是1,必须要满足设置的条件,update更新视图中的记录时,dep_id=1这一个字段也不能改。要保证视图中的记录都满足条件

 

 


 

 

 

不可更新的视图

就算使用merge,也不是所有视图中的记录都可以增删改的。

create view view_computer_dep as (select * from tb_student where dep_id=1)

 

as指定视图的数据来源,如果里面使用了以下任何一种,创建的视图都是不可更新的:

  • 聚合函数
  • group by子句
  • having子句
  • distinct关键字
  • union运算符
  • from来源于多个表或者来源于不可更新的视图

一句话,不是直接来源于一个基本表的,对视图中的记录都只能进行查询操作,不能进行增改删。

 

比如使用了sum():create view view_computer_dep as (select sum(salary) from tb_employees );

你要update更新视图中的sum这个字段,怎么同步到基本表?同步不了。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 视图

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL视图

视图常见的数据库对象视图概述为什么使用视图可以帮助我们使用表中的部分数据,对其修改可以改变原来表中的值可以简化查询控制数据的访问(权限)视图的理解视图是一种虚拟表,本身不具有数据的,占用极少的内存视图建立在已有表的基础上,我们可以视图所依据的表叫做基表视图的创
MySQL视图
2021-05-23

MySQL 视图

视图的概念视图是一张虚表,将查询结果集保存起来,作为视图使用。实际存在的表叫作基本表。  视图的作用安全性。grant授权用户只操作视图、只读,可以保护基本表中的数据。提高查询性能。视图只是基本表的一部分,查视图比查全表快。尤其是多表查询的时候,查视图一张表比
MySQL  视图
2016-06-03
2024-04-02
2023-08-31

MySQL——视图

注意:视图只适用于MySQL5及之后的版本 为什么使用视图? 重用SQL语句。 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。 使用表的组成部分而不是整张表。 保存数据。可以给用户授予表的特定部分的访问权限而不是整张
MySQL——视图
2019-09-26

mysql-视图

mysql视图的定义视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句。因为数据库视图与数据库表类似,它由行和列组成,因此可以根据数据库表查询数据。其内容由查询定义。但是,视图并不在数据库中以存储的数据值集形式存在,行和
2023-01-30

mysql的视图

什么是视图视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由select结果组成的表;视图的特性视图是对若干张基本表的引用,一张虚表,查询
mysql的视图
2018-08-23

MySQL 视图简介

概述数据库中关于数据的查询有时非常复杂,例如表连接、子查询等,这种查询编写难度大,很容易出错。另外,在具体操作表时,有时候要求只能操作部分字段。为了提高复杂 SQL 语句的复用性和表的操作的安全性,MySQL 提供了视图特性。所谓视图,本质上是一种虚拟表,同样
MySQL 视图简介
2019-11-20

MySql 视图 - 纪宇

视图是一个虚拟表,内容由创建时的查询语句定义创建视图create view view_name as 查询语句(select ... from ... where ... )删除视图drop view view_name视图的作用对于需要经常获取的数据,创建对
2020-02-02

MySQL基础-视图

视图定义:本质就是一张虚拟表。从一个或多个表中结合查询出来的结果集,作用和真实表一样。可以使用SELECT 语句查询数据,也可以使用INSERT,UPDATE,DELETE 来修改数据。优点:1) 简单化,数据所见即所得;2) 安全性,用户只能查询或修改他们所
2021-02-05

MySQL基础(4) | 视图

MySQL基础(4) | 视图基本语法1.创建CREATE VIEW AS 语法说明如下。:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。对于创建视图中的 SELEC
MySQL基础(4) | 视图
2019-06-10

编程热搜

目录