mysql视图

当想由一张表的字段作为条件获取其他表对应的信息的时候。

  • 有外键就使用连表操作。
  • 没有外键就使用原生逻辑(先获取一张表对应的信息,然后将获取的信息当成一张表再进行筛选)。
select * from (select nid from tb1 where nid > 2) as A

但是当获取第一张表的信息的时候,结果是由很多操作结合而成的结果,如:可以有很多连表操作等。这样就会导致写很多重复的sql语句。

而获取表1的结果也是动态查询处理的。并不是一成不变的。

因此可以将这些公共的sql语句集合在一起,对其进行单独的命名。而这个名字就指代这个表,以后要想利用这个结果进行操作,直接用这名字即可。就不用再重复写sql语句。


而这些sql语句形成的表,只是一个虚拟表,并不真实的表。这表就是 视图

1、创建视图

格式: create view 视图名称 as sql语句

CREATE VIEW v1 AS 
SELET nid, 
    name
FROM
    A
WHERE
    nid > 4


navicat创建的结果:

image

说明:

利用查询语句构建成的表,当原表数据进行变化的时候,创建视图的数据也会跟着变化。

2、删除视图

格式: drop view 视图名称

DROP VIEW v1


3、修改视图

格式: ALTER VIEW 视图名称 AS SQL语句

ALTER VIEW v1 AS
SELET A.nid,
    B. NAME
FROM
    A
LEFT JOIN B ON A.id = B.nid
LEFT JOIN C ON A.id = C.nid
WHERE
    A.id > 2
AND C.nid < 5


4、使用视图

使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建、更新和删除操作,仅能做查询用。

select * from v1

说明:

就是将结果当成一张单独的表来时使用,只是这张所谓的表,并非真实的表。

原文地址:https://www.cnblogs.com/jayafs/p/7589186.html