请教有关创建视图view的问题

Mrpublic 2010-05-23
今天刚看到一本书 书的讲的内容不是很理解
《SQL宝典》是讲创建view
create VIEW <view_name> [(<colum_name>,...)]
AS <query_expression>
[with [cascaded | Local] check option]


书上说 query_expression 是任何有效且具有最小限制的select语句。例如 order by 子句不能包含在视图定义中 ,视图定义不能是循环的;视图不能在它自己的query_expression子句中被引用等。

可后面P77页 讲 创建复杂视图
又将 视图与Group By子句 和聚合函数相结合

例 : create view v_customer_totals
(
  customer_name,
  order_number,
  total_price
) as
(
   select customer.cust_name_s,
          order_header.ordhdr_nbr_s,
          sum(product.prod_price_n*order_line.ordline_ordqty_n)
   from customer,
        order_header,
        order_line,
        product
   where customer.cust_id_n=order_header.ordhdr_custid_fn
    and  order_header.ordhdr_id_n= order_line.ordline_ordhdrid_fn
    and  product.prod_id_n=order_line.ordline_prodid_fn
    and  order_line.ordline_ordqty_n is not null
    Group By customer_cust_name_s,
             order_header.ordhdr_nbr_s

    
)


此处用到了 group by 子句

还用UNION的视图例子

---------------------------------
我就搞不懂了 这不是前后矛盾嘛?
是自己砸自己的脚哦 到底是哪一个是正确的说法?

还是我自己理解有问题

谢谢
starworm 2010-07-25
感觉前后并不矛盾。楼主可以加深了解一下视图的定义,还可以顺便了解“物化视图”。
第一条: query_expression 加入order by是不好的,引用此视图都会带来排序的工作,性能影响不可估量。
第二条:group by 和Union是来缩小和扩大此视图数据集的结果,这是有实际意义的。这只是一种用法
Mrpublic 2010-07-26
starworm 写道
感觉前后并不矛盾。楼主可以加深了解一下视图的定义,还可以顺便了解“物化视图”。
第一条: query_expression 加入order by是不好的,引用此视图都会带来排序的工作,性能影响不可估量。
第二条:group by 和Union是来缩小和扩大此视图数据集的结果,这是有实际意义的。这只是一种用法

呵呵 ,三克思...
哎 物化视图 认识不深入呀。。。每次看了过一段时间就忘了。物化视图是不是一个有点象存储过程的原理呀。
Global site tag (gtag.js) - Google Analytics