MySQL 视图(view)的使用

什么是视图

视图是个很常用的数据库概念和对象,那么视图和数据表的区别是什么呢?视图是为了解决某类问题才产生的一个技术解决手段,它提供了像数据表一样的操作手段,但不是真实的表,而是一个虚拟的表。视图在数据库系统中并不是以存储数据值的形式存在,它的行和列数据来自于定义视图所引用的基本表,并且在使用视图时动态查询和生成这些数据。视图的使用者只关心视图中出现的数据,对于视图中没有引用的数据不必关心,这就提供了一种隔离性,提高了数据库的安全性。

视图的特点如下:

  • 视图的列可以来自不同的数据表,是一种数据表之间的逻辑上的连接关系
  • 视图是由基本表(实表)产生的表(虚表)
  • 对于视图的建立和删除不影响基本表
  • 对于视图内容的更新操作(添加、删除和修改)直接影响基本表
  • 当视图的数据来自于多个表时,不允许添加和删除数据

创建视图

创建视图类似于查询语句:

CREATE VIEW 视图名(列1,列2...)
 AS SELECT (列1,列2...)
 FROM ...;

可以看到,创建视图和查询相比,增加了前面的CREATE VIEW 视图名 AS

修改视图可以使用:

REPLACE VIEW 视图名 AS SELECT [...] FROM [...];

注意:创建视图需要一定的权限:创建视图的语句要求具有针对视图的 CREATE VIEW 权限,以及针对由 SELECT 语句选择的每一列上的某些权限。对于在 SELECT 语句中其他地方使用的列,必须具有 SELECT 权限,如果还有 OR REPLACE VIEW 子句,就必须在视图上具有 DROP 权限。

查看视图

视图属于数据库。默认情况下,将在当前数据库创建新视图。可以在指定的数据库中创建新视图。

视图就是虚拟的表,因此,查看视图的方法和查看表的方法是一样的:

SHOW TABLES;

查看视图详情的方法有两种,一种是和查看表详情一样使用desc 视图名,另外一种方法是show fields from 视图名

DESC 视图名;
或者
SHOW FIELDS FROM 视图名;

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,