我有一个-也许简单-如何的问题create view
,并select ... from viewname
进行评估。我知道如何创建视图并使用它们,但是我必须以图形方式和我学校的文字说明这两个命令的过程。
好吧,我做了以下工作(目前我正在使用Microsoft SQL Server 2012,但这没关系,对吗?如果有区别,我也想对MySQL知道):
-- create a Schema for the test
create schema TEMP
go
-- create the view
create view TEMP.VLT as
select LNR,TNR,MENGE
from LTP.LTP
go
-- select the data from the view
select * from TEMP.VLT
Aview
就像是选择查询的别名,它是在子查询中求值的,对吗?如果是这样,我是对的,那
select * from TEMP.VLT
是相同的
select * from (select LNR,TNR,MENGE from LTP.LTP) as VLT
?
我的意思是,我知道它给出了相同的结果,但是实际上是以相同的方式进行评估的,还是我错了?
谢谢您的回应!艾森巴芬
您的理解是非常正确的。首先,数据库之间的视图可能有所不同。特别是MySQL,有很多限制,例如该FROM
子句中没有子查询。但是,实际上,MySQL几乎按照您的描述进行操作。
一般而言,您具有正确的理解。视图的代码将合并到引用它的查询中。这是文档中的特定语言:
当SQL语句引用非索引视图时,解析器和查询优化器将分析SQL语句和视图的源,然后将它们解析为一个执行计划。对于SQL语句,没有一个计划,而对于视图,没有一个单独的计划。
有一种称为“索引视图”的视图实际上可以实现数据。在这种情况下,该视图的代码不会实际运行,但查询中将使用结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句