SQL视图什么用,下面的语句不新建视图,直接查询该怎么写?
为什么要新建视图呢,直接查询不是更省事么?下面这些#tmp是不是就是新建的一些视图啊,新建这么多,都什么用啊,麻烦给解释下,谢谢。====================...
为什么要新建视图呢,直接查询不是更省事么?
下面这些#tmp 是不是就是新建的一些视图啊,新建这么多,都什么用啊, 麻烦给解释下,谢谢。
=====================================================
select ClientID as kh,count(uxitong02) as xtnum,max(jgdate) as jg
into #tmp001
from Uxxcentertems
where quxiao<>'20001'
group by ClientID
select ClientID as kh,count(uxitong02) as xtnum,max(jgdate) as jg
into #tmp002
from Uxxcentertems
where quxiao<>'20001' and jgdate<>0
group by ClientID
select a.kh as kh,a.xtnum into #tmp003 from #tmp001 a inner join #tmp002 b on a.kh=b.kh where a.xtnum=b.xtnum
select ClientID as kh,max(AuditDate) as jg,max(optime) as sjjg
into #tmp004
from Ujinchang04
group by ClientID
having max(AuditDate)>=DATEDIFF(s, '19700101', '2010-09-1') and max(AuditDate)<DATEDIFF(s, '19700101', '2011-09-29')
and ClientID in(select kh from #tmp003)
select a.*,b.ACCOUNT_X,b.Name,b.Address,b.Litigant,b.Telephone INTO #tmp005 from #tmp004 a inner join HMaterialClient b on a.kh=b.code
select a.kh,a.litigant,a.Telephone,a.ACCOUNT_X as 合同号,a.Name as 项目名称,a.Address as 项目地址,((a.jg+8*3600)/86400+70*365+19) as 录入竣工日期,((a.sjjg+8*3600)/86400+70*365+19) as 实际竣工日期,b.name as 业务员 into #tmp006 from #tmp005 a inner join HEmployee b on a.litigant=b.code
/*含威能已竣工项目*/
select a.*,b.Name as xs,b.Moble into #tmp007
from #tmp006 a inner join HEmployee b on a.litigant=b.code
select a.ClientID,b.Product into #tmp008
from tblSalecontr a inner join tblSalecontrItems b on a.code=b.maincode where uxitong02='20069'
select * from #tmp007 where kh in (select ClientID from #tmp008)
select a.*,b.name into #tmp009 from #tmp008 a inner join tblProduct b on a.Product=b.code 展开
下面这些#tmp 是不是就是新建的一些视图啊,新建这么多,都什么用啊, 麻烦给解释下,谢谢。
=====================================================
select ClientID as kh,count(uxitong02) as xtnum,max(jgdate) as jg
into #tmp001
from Uxxcentertems
where quxiao<>'20001'
group by ClientID
select ClientID as kh,count(uxitong02) as xtnum,max(jgdate) as jg
into #tmp002
from Uxxcentertems
where quxiao<>'20001' and jgdate<>0
group by ClientID
select a.kh as kh,a.xtnum into #tmp003 from #tmp001 a inner join #tmp002 b on a.kh=b.kh where a.xtnum=b.xtnum
select ClientID as kh,max(AuditDate) as jg,max(optime) as sjjg
into #tmp004
from Ujinchang04
group by ClientID
having max(AuditDate)>=DATEDIFF(s, '19700101', '2010-09-1') and max(AuditDate)<DATEDIFF(s, '19700101', '2011-09-29')
and ClientID in(select kh from #tmp003)
select a.*,b.ACCOUNT_X,b.Name,b.Address,b.Litigant,b.Telephone INTO #tmp005 from #tmp004 a inner join HMaterialClient b on a.kh=b.code
select a.kh,a.litigant,a.Telephone,a.ACCOUNT_X as 合同号,a.Name as 项目名称,a.Address as 项目地址,((a.jg+8*3600)/86400+70*365+19) as 录入竣工日期,((a.sjjg+8*3600)/86400+70*365+19) as 实际竣工日期,b.name as 业务员 into #tmp006 from #tmp005 a inner join HEmployee b on a.litigant=b.code
/*含威能已竣工项目*/
select a.*,b.Name as xs,b.Moble into #tmp007
from #tmp006 a inner join HEmployee b on a.litigant=b.code
select a.ClientID,b.Product into #tmp008
from tblSalecontr a inner join tblSalecontrItems b on a.code=b.maincode where uxitong02='20069'
select * from #tmp007 where kh in (select ClientID from #tmp008)
select a.*,b.name into #tmp009 from #tmp008 a inner join tblProduct b on a.Product=b.code 展开
3个回答
展开全部
原因:
1.
正如1楼所言,假设查询一信息需要涉及abc三张表,为方便起见,于是我们在abc三张表上建立一个视图v,以后但凡遇到类似查询时我们便直接操作视图v,不用再操作abc三张表了。
2.
为了数据安全起见,可以建立可修改视图和不可修改视图两种。
可修改视图:可以使用插入、更新和删除操作来改变基础表中数据的视图。对可修改表做的任何变化都将明确地传递到基础表。
不可修改(只读)视图:不支持插入、更新和删除操作的视图。
比如,我只想让你查看到我的营业销售记录,不允许你更改,那么我可以只给你一不可修改视图,而不给你基础表。
1.
正如1楼所言,假设查询一信息需要涉及abc三张表,为方便起见,于是我们在abc三张表上建立一个视图v,以后但凡遇到类似查询时我们便直接操作视图v,不用再操作abc三张表了。
2.
为了数据安全起见,可以建立可修改视图和不可修改视图两种。
可修改视图:可以使用插入、更新和删除操作来改变基础表中数据的视图。对可修改表做的任何变化都将明确地传递到基础表。
不可修改(只读)视图:不支持插入、更新和删除操作的视图。
比如,我只想让你查看到我的营业销售记录,不允许你更改,那么我可以只给你一不可修改视图,而不给你基础表。
展开全部
为什么要新建视图呢,直接查询不是更省事么?
这个取决于你的 系统,是 可执行程序方式的。 还是 Web 浏览方式的。
还有就是你的 系统,能够接受多长时间的停机。
例如你的 系统, 有 100个 客户端, 全部是 exe 程序的。
某天, 某个 sql 语句, WHERE 里面的 业务逻辑要修改。比如加一个固定的条件 ( 时间>今天 )
你说你是 修改程序, 然后更新100个客户端方便呢?
还是 服务器那里, 修改一下 视图方便?
这个取决于你的 系统,是 可执行程序方式的。 还是 Web 浏览方式的。
还有就是你的 系统,能够接受多长时间的停机。
例如你的 系统, 有 100个 客户端, 全部是 exe 程序的。
某天, 某个 sql 语句, WHERE 里面的 业务逻辑要修改。比如加一个固定的条件 ( 时间>今天 )
你说你是 修改程序, 然后更新100个客户端方便呢?
还是 服务器那里, 修改一下 视图方便?
参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/2ae530e82db89b33269791a4.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有时候要查询一个信息需要多个表连接,如果是查一次还好,反复都需要这条信息的话,每次都要写很麻烦,所以就可以创建一个视图,以后就可以直接利用视图查看而不需要每次多次连接查询。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询