当想由一张表的字段作为条件获取其他表对应的信息的时候。
- 有外键就使用连表操作。
- 没有外键就使用原生逻辑(先获取一张表对应的信息,然后将获取的信息当成一张表再进行筛选)。
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创建的结果:
说明:
利用查询语句构建成的表,当原表数据进行变化的时候,创建视图的数据也会跟着变化。
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
说明:
就是将结果当成一张单独的表来时使用,只是这张所谓的表,并非真实的表。