欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程资源 > 编程问答 >内容正文

编程问答

视图的学习总结 -凯发k8官方网

发布时间:2025/1/21 编程问答 11 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 视图的学习总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.视图的简介

         mysql 支持两种表;基本表和视图,基本表都是使用create table语句创建的,并且是唯一的存储数据的表,而视图只是把基本表中的数据组织起来构成一个“虚拟”表的一种命令或者形式,之所以说“虚拟的”,就是因为只用当视图用于一条语句中的时候,他才能存在。mysql获取构成视图公式的命令,执行它,并且像一个真实的表那样显示给用户。

2.视图的创建

create view towns

select distinct town

from players

一个视图的内容并没有被存储,而是当视图被引用的时候派生了,这就是说嘛,根据定义,视图的内容和基本表的内容一样,对基本的表的更新,就可以再视图中立即看到,用户就不用担心视图内容的完整性,只要维护基本表的完整性。

注意:可以在一个视图公式中声明另一个视图,也就是说视图可以嵌套。

3.更新视图

如果视图中包含了with  check option 字句,使用update,insert和delete对视图做出的所用改变都将进行有效性的检查:

  • 如果更新后的行属于视图的内容,那么一条update语句是正确的,
  • 如果新行属于视图的内容,那么一条insert语句是正确的。
  • 如果删除的行属于视图的内容,那么delete语句是正确的。
  • 注意:前七个是适合更新的,

  • 视图是可以嵌套的,那么with check option的检查在什么样的程度上执行,如果我们声明了 with cascaded check option 检查所有的视图,使用with local check option 只对将要
    更新的视图中的调节进行相关的检查,cascaded是默认的。
  • select 字句不能包含distinct
  • select字句不能包含聚合函数
  • from字句不能包含多个表
  • where字句不能包含一个关联的子查询
  • select语句不能包含group by字句
  • select语句不能包含order by字句
  • select语句不能包含一个集合运算符
  • 不能更新一个虚拟的列
  • select字句必须包含from字句中指定的表中所有的列,但这些列不允许空值或者没有指定默认值
  •  

     

  • 4.       删除视图
  • drop  view用来删除视图,通过使用drop view,引用了被删除的视图的所用的其他视图也会自动被删除,当删除一个基本表的时候,直接或者间接地定义在这表的所用的视图也被删除了。

    例如: drop view towns

  • 5.       视图的应用程序区域
  • 视图可以用在各种应用程序中

    5.1例程语句的简化

    例如

    select *

    from playerno

    where playerno in

    (select playerno

    from penalties

             )

    and town=’straford’

    select town,count(*)

    from players

    where playerno in

             ( select playerno

             from penalties

    )

    group br town

    这两条都使用至少引发一次罚款的球员,因此,可以用一个视图来定义这条语句

    create view pplayers as

    select *

    from playeron

    where playerno in

             (select playerno

             from penalties)

    这样都可以简化前面的语句了

    5.2   select 语句的分部编写

    例子:对于来自stratford中的每个球员,如果他曾经引发一次罚款,并且罚款额比那些2号球队打比赛的球员以及为一只first分级的球队打过一场比赛的球员的平均罚款要高的话,那么就获取他的名字和首字母

    create view greater as

    select distinct playerno

    from penalties

    where amount >

    (select avg(amout)

    from penalties

    where  palayeron in

    (select playerno

    from matches

    where teamno=2)

    )

    在创建一个视图。其中包括了那些为first分级的一支球队比赛过的所用球员

    create view frist as

    select distinct playerno

    from match

    where teamno in(

    select teamno in

    (select teamno

    from teams

    where divison=’first’))

     使用这两个视图,很轻松的回答了问题

    select nam,initials

    from players

    where town=’stratford’

    and playerno in(select playerno

    from greater)

    and playerno in

    (select playerno

    from  first)

    5.3   数据的安全性

    视图可以用来保护表的一部分

    转载于:https://www.cnblogs.com/hylaz/archive/2012/11/05/2756041.html

    总结

    以上是凯发k8官方网为你收集整理的视图的学习总结的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

    网站地图