数据库的视图

视图(view)

视图:视图主要体现在供用户查看,至数据的存储与视图无关。

    视图就是存储sql语句。

MySQL视图就是一种虚拟表,实际数据的存储是产生视图的sql语句的基表中。

    对基本中数据的更新,会即时返回到视图。

创建视图:

create view 视图名 as select语句;

示例:

    create view vw as select * from stu;

查看视图:

    视图也是一种表,

show tables、show create table、show create view、desc、show columns from

修改视图

语法:

    alter view 视图名(字段列表) as sql语句;

视图操作

单表视图:产生视图的sql语句,只用到了一个表

多表视图:产生视图的sql语句,用到了多张表。

对于单表视图,可以执行新增、修改、删除操作。

示例:

多表视图:

创建多表视图:

create view vw1 as select stu.id,s_num,s_name,sex,c_id,c_name,room from stu,class where stu.c_id=class.id;

错误:

示例:

多表视图的操作:

注意:

    创建多表视图,如果出现字段同名,

    create view vw2 as select stu.id s_id,class.id c_id from stu,class where stu.c_id=class.id;

视图的删除

drop view 视图名;

视图算法

    视图也有算法,由于视图是由SQL语句产生的一表,查询视图时还会使用SQL。涉及两个SQL语句。SQL语句中的五子句会有执行顺序的问题。

查看算法:

show create table 视图名;

示例:

MySQL中视图算法分三种:

undefined        (缺省)由MySQL自已决定使用是merge算法还是temptable,为了效率,大多数时,是选择merge算法。

merge            将产生视图的sql语句与查询视图的sql语句进行合并,再一次执行。只执行一次SQL操作

temptable        先执行产生视图的SQL语句,再执行查询视图的SQL语句。执行两次SQL操作。

示例:

1、创建视图

2、为演示不同创建一个实体表

3、对实体表执行分组操作

示例:

4、对视图进行相同的操作

原因是,视图使用的merge算法。

创建视图的语句:

    create view vw3 as select * from stu order by age desc;

查询视图的语句:

    select * from vw3 group by c_id;

两条sql需要先进行合并再执行。

select * from stu group by c_id order by age desc;

\

5、更改视图算法。

6、执行查询操作

提示:

    一般不需要考虑视图算法,但是当视图的创建sql与视图的查询sql的五子句在执行顺序上有先后问题时,才考虑算法法问题。

posted @ 2016-04-06 16:04  尼农小道  阅读(327)  评论(0编辑  收藏  举报