【一文看懂SQL系列】SQL视图 |进阶干货,面试必备

SQL视图

本文首先谈一下视图的含义和应用场景,之后对视图的创建、修改、删除、查看和更新进行讲解,最后对比了视图和表的异同。

含义
视图是MySQL 15.1 版本出现的新特性

  1. 视图是动态生成的,系统中只保存了视图的SQL逻辑,不保存查询结果
  2. 视图是一张虚拟表,但可以像使用普通表一样使用视图;

应用场景

  1. 当多个地方都用到相同的查询结果时
  2. 当该查询结果使用的SQL语句较复杂时

一、创建视图:

语法

CREATE VIEW 视图名
AS
查询语句

案例

两张表学生表stuinfos 和 专业表major
查询姓张的学生姓名和专业名

SELECT stuname, majorname
FROM stuinfos s
INNER JOIN major m ON s.majorid = m.id
WHERE s.stuname LIKE '张%'

如果查询学生姓名和对应的专业名很常用,那么可以将之封装起来,创建视图:

CREATE VIEW v1
AS
SELECT stuname, majorname
FROM stuinfos s
INNER JOIN major m ON s.majorid = m.id

使用试图查询 张同学的信息

SELECT * 
FROM v1
WHERE stuname LIKE '张%'

二、视图的修改

修改在这里的意思是整个视图的修改,注意和第五大点的视图更新意思不一样

方式一
CREATE OR REPLACE VIEW 视图名
AS
查询语句

方式二
ALTER VIEW 视图名
AS
查询语句

三、删除视图

语法:

DROP VIEW 视图1,视图2,..;

四、查看视图

方式一:
DESC v1; 

方式二:
SHOW CREATE VIEW v1;

五、视图的更新

这里的视图更新是指对局部信息的更新

视图的可更新性和视图中的查询定义有关系,以下类型的视图是不能更新的:

  1. 包含以下关键字的SQL语句:分组函数,DISTINCT, GROUP BY, HAVING, UNION 或UNION ALL
  2. SELECT中包含子查询
  3. JOIN
  4. FROM 一个不能更新的视图
  5. WHERE子句的子查询引用了FROM子句的表

六、视图和表的对比

	创建语法的关键字  是否实际占用物理空间   是否可以增删改查

视图   CREATE VIEW     只保存了SQL逻辑    一般不可以增删改

表 	  CREATE TABLE    是               增删改查
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章