1.概念和特点
<1>概念:视图(view)是一种虚拟存在的表,本身并不包含数据。它是作为一个select语法查询到的结果集,以此为基表创建的一张虚拟表。对视图的操作对基表有直接影响,[视图中的数据发送了改变,原始表中的数据也会变化,原始表中的数据发生了变化视图中的数据也会变化]。
<2>特点:
- 简单:因为视图是查询语句执行后返回的已经过滤好的复合条件的结果集,所以使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件。
- 安全:使用视图的用户只能访问他们被允许查询的结果集,对于表的权限管理并不能限制到某个行或者某个列,但是通过视图就可以简单的实现。
- 数据独立:一旦视图的结构被确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
<3>视图的作用/好处
- 简化SQL语句的数据,因为视图中封装了原始的复杂查询的结果。
- 视图能够提高我们的查询效率[简化我们的查询操作]。
2.创建/查询视图
初始表:
city表:
country:
如果下方的select查询结果集中有相同字段,那么创建视图必须指定名称
创建视图
标准语法
CREATE VIEW 视图名称 [(列名列表)] AS 查询语句;
-- [(列名列表)]不写默认就是查询语句的结果字段
需求:创建city_country视图,保存城市和国家的信息(使用指定列名)
<1>创建视图
方式一:
CREATE VIEW city_country (city_id,city_name,country_name) AS
SELECT
c1.id,
c1.name,
c2.name
FROM
city c1,
country c2
WHERE
c1.cid =c2.id;
方式二:
CREATE VIEW city_country2 AS
SELECT
c1.id city_id,
c1.name city_name,
c2.name country_name
FROM
city c1,
country c2
WHERE
c1.cid =c2.id;
<2>查询视图
标准语法
SELECT * FROM 视图名称;
查询视图
SELECT * FROM city_country2;
结果:
3.修改视图数据/删除视图
<1>修改视图数据
标准语法
UPDATE 视图名称 SET 列名=值 WHERE 条件;
修改视图结构
标准语法
ALTER VIEW 视图名称 (列名列表) AS 查询语句;
需求1:修改视图数据,将北京修改为深圳。(注意:修改视图数据后,源表中的数据也会随之修改,反之同理)
UPDATE city_country SET city_name = '深圳' WHERE city_name ='北京';
结果:
city表:
city_country 视图:
需求2:将视图中的country_name修改为name
不能针对修改的部分单独做修改,所有列都必须写出
ALTER VIEW
city_country
(city_id,city_name,NAME)AS
SELECT
c1.id,
c1.name,
c2.name
FROM
city c1,
country c2
WHERE
c1.cid =c2.id;
结果:
city_country 视图:
<2>删除视图
删除视图
标准语法
DROP VIEW [IF EXISTS]
;
删除city_country视图
DROP VIEW IF EXISTS city_country