请教有关创建视图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是来缩小和扩大此视图数据集的结果,这是有实际意义的。这只是一种用法 呵呵 ,三克思... 哎 物化视图 认识不深入呀。。。每次看了过一段时间就忘了。物化视图是不是一个有点象存储过程的原理呀。 |