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,