1.概念
2、视图的基本使用
    2.1 创建视图(基本语法)
    2.2.查看视图-语句和表一样
3.修改视图
4.删除视图
5.重命名视图
6.修改视图内容
7.视图的优点

 

1.概念

  视图是一个虚拟表,是sql的查询结果,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。视图的数据变化会影响到基表,基表的数据变化也会影响到视图(insert update delete )。 创建视图需要create view 权限,并且对于查询涉及的列有select权限;使用alter修改视图,那么还需要改视图的drop权限。

 

2、视图的基本使用

2.1 创建视图(基本语法)

语法:create view  视图名  as  查询语句;

2.2示例

1)

CREATE VIEW cust_view AS 
    SELECT h.HYContractNo,h.hycontracttype,c.`Name` 
    FROM jhycontract h LEFT JOIN jcustomer c ON h.CustomerANo = c.CustomerNo

2)在连接工具可以看到创建的视图

3)打开视图查看,发现和一张真正的表差不多

 

 

2.2.查看视图-语句和表一样

1)查看视图

SHOW TABLES LIKE '%view%'

 

2)查看视图信息

DESCRIBE cust_view

 

3)查看视图创建信息

SHOW create view cust_view

 Create View里面是详细的创建信息

 

3.修改视图  

语法:

    1)alter view 视图名 as select 语句

    2)alter view 视图名 as  select 视图;

 示例: 

alter VIEW cust_view AS 
    SELECT h.HYContractNo,h.hycontracttype,c.`Name` 
    FROM jhycontract h LEFT JOIN jcustomer c ON h.CustomerANo = c.CustomerNo 
    WHERE CustomerANo IS NOT NULL

 

ALTER VIEW cust_view2 AS 
    SELECT * FROM cust_view WHERE NAME LIKE '%李%'

 

4.删除视图

语法:drop view 视图名,视图名....;

drop view cust_view

 

5.重命名视图

语法:rename table 视图名 to 新视图名;

RENAME table cust_view2 to cust_view

 

6.修改视图内容

  对视图内容进行修改会影响基表,对基表内容进行修改也会影响视图

  视图是一个虚拟表,实际的数据来自于基本表,所以通过插入、修改和删除操作更新视图中的数据,实质上是在更新视图所引用的基本表的数据。

  注意:对视图的修改就是对基本表的修改,因此在修改时,要满足基本表的数据定义。

  某些视图是可更新的。也就是说,可以使用 UPDATE、DELETE 或 INSERT 等语句更新基本表的内容。对于可更新的视图,视图中的行和基本表的行之间必须具有一对一的关系。

  还有一些特定的其他结构,这些结构会使得视图不可更新。更具体地讲,如果视图包含以下结构中的任何一种,它就是不可更新的:

      聚合函数 SUM()、MIN()、MAX()、COUNT() 等。

      DISTINCT 关键字。

      GROUP BY 子句。

      HAVING 子句。

      UNION 或 UNION ALL 运算符。

      位于选择列表中的子查询。

      FROM 子句中的不可更新视图或包含多个表。

      WHERE 子句中的子查询,引用 FROM 子句中的表。

      ALGORITHM 选项为 TEMPTABLE(使用临时表总会使视图成为不可更新的)的时候。

 

7.视图的优点

1)数据安全性

  对于表中存在很重要的几个列的信息,某些信息需要保密,不能随便给别人看。这样子,可以创建一个视图,只保留可以看的信息。给看视图,不给看基表,这样子,其他人来查看视图就只能看到开放的数据

2)灵活

  视图可以灵活的映射到多张表的数据。对数据结构进行重构。

3)复用性

提高了重用性