sql server中视图的用途是什么?
可能重复:sql server中视图的用途是什么?,sql,Sql,可能重复: 嗨, 我怀疑什么是观点。我们应该在哪里使用视图?视图的用途是什么。 有什么好的参考意见吗。感谢您请参阅,以获得良好的概述 视图是一个虚拟表,它 由一个或多个字段中的列组成 桌子。虽然它类似于 表,它不存储在数据库中。 它是存储为对象的查询。 因此,视图是一个 从一个或多个 桌子。参考这些表格 作为基表或基础表 视图本质上是“查询”,您可以在不接触主表的情况下从中进行选择 您通常执行的任何select查询(多个表、函数等)都可以是一个视图 视图有两个主要优点 首先,它们允许您重用查看
嗨, 我怀疑什么是观点。我们应该在哪里使用视图?视图的用途是什么。 有什么好的参考意见吗。感谢您请参阅,以获得良好的概述 视图是一个虚拟表,它 由一个或多个字段中的列组成 桌子。虽然它类似于 表,它不存储在数据库中。 它是存储为对象的查询。 因此,视图是一个 从一个或多个 桌子。参考这些表格 作为基表或基础表 视图本质上是“查询”,您可以在不接触主表的情况下从中进行选择 您通常执行的任何select查询(多个表、函数等)都可以是一个视图 视图有两个主要优点 首先,它们允许您重用查看数据的常用方法,而无需反复编写相同的复杂SQL(即模块化)
第二,您可以为特定用户加强源表的安全性,同时允许他们通过视图查看数据。请注意这一点 简而言之,
视图
可以与多个SQL Server一起使用,它是一种SQL标准
通常使用视图
:
视图
,一些“现实”就更简单了CREATE TABLE Vehicules (
VId int IDENTITY(1, 1) PRIMARY KEY
, VDescription nvarchar(20) NOT NULL
)
CREATE TABLE MotoredVehicules (
MvId int IDENTITY(1, 1) PRIMARY KEY
, MvVId int NOT NULL REFERENCES Vehicules (VId)
, MvMake nvarchar(20) NOT NULL
)
CREATE TABLE MotorHP (
MhpId int IDENTITY(1, 1) PRIMARY KEY
, MhpMvId int NOT NULL REFERENCES MotoredVehicules (MvId)
, MhpHP decimal(6, 2) NOT NULL
)
CREATE TABLE VehiculesWheels (
VwId int IDENTITY(1, 1) PRIMARY KEY
, VwVId int NOT NULL REFERENCES Vehicules (VId)
, VwNumberOfWheels int NOT NULL
)
insert into Vehicules (VDescription) values (N'Bicycle')
GO
insert into Vehicules (VDescription) values (N'Motorcycle')
GO
insert into Vehicules (VDescription) values (N'Automobile')
GO
insert into Vehicules (VDescription) values (N'Yacht')
GO
-- Inserting the information about the vehicules that have a motor.
insert into MotoredVehicules (MvVId, MvMake) (
select v.VId
, N'Harley Davidson'
from Vehicules as v
where v.VDescription LIKE N'Motorcycle'
)
GO
insert into MotoredVehicules (MvVId, MvMake) (
select v.VId
, N'Sea-Ray'
from Vehicules as v
where v.VDescription LIKE N'Yacht'
)
GO
insert into MotoredVehicules (MvVId, MvMake) (
select v.VId
, N'Mercedes'
from Vehicules as v
where v.VDescription LIKE N'Automobile'
)
GO
-- Inserting motor HP for the motorized vehicules.
insert into MotorHP (MhpMvId, MhpHP) (
select mv.MvId
, 350
from MotoredVehicules as mv
where mv.MvMake LIKE N'Sea-Ray'
)
GO
insert into MotorHP (MhMvId, MhpHP) (
select mv.MvId
, 280
from MotoredVehicules as mv
where mv.MvMake LIKE N'Mercedes'
)
GO
insert into MotorHP (MhpMvId, MhpHP) (
select mv.MvId
, 930
from MotoredVehicules as mv
where mv.MvMake LIKE N'Harley Davidson'
)
GO
-- Inserting the number of wheels for wheeled vehicules.
insert into VehiculesWheels (VwVId, VwNumberOfWheels) (
select v.VId
, 2
from Vehicules as v
where v.VDescription IN (N'Bicycle', N'Motorcycle')
)
GO
insert into VehiculesWheels (VwVId, VwNumberOfWheels) (
select v.VId
, 4
from Vehicules as v
where v.VDescription LIKE N'Automobile'
)
GO
这种关系模型本身并不十分全面。我们本可以只使用一个表来插入它们的所有规范,并允许没有数据的字段为NULL。然而,由于某些层次结构的原因,我们已经创建了关于不同类型车辆的规格表。因此,当您特别想要获得有关Vehicle的信息时,这是不太实际的,因为您必须时不时地加入表,然后您必须检索信息。在这里,有这样一种观点可能变得切实可行:
然后,每次需要访问有关给定车辆的某些信息数据时,无需写入上述两个创建视图中包含的select,只需查询相应的视图本身即可:
或者任何你需要的信息
免责声明:此代码未经测试,仅为示例目的而直接编写。它可能无法正常工作
我希望这能帮助您更好地理解视图。请参见此处:。在提问之前,请先搜索现有答案。另请参见:好的,实际上我问这个问题是为了更好地解释。如果我在emp表上写视图,是否可以在视图中插入新行(是否可以在视图中写入插入查询)。假设emp表由5行组成,我创建了一个视图。我在emp表中插入了一个新行,然后新创建的行将显示在视图中?是。在幕后,每次使用源表时,视图将始终在源表上运行。好的,因此视图用于基础表的安全性。我们可以对视图应用更新查询吗?re:“每次使用源表时,视图将始终在源表上运行”在一些实现中,存在一些具体化/索引化视图,这些视图在这里有点混乱view@Surya-如果删除基础列,视图将无法工作。。。您必须编辑视图以匹配新的架构。我们可以在视图上编写insert查询吗?旧的但仍然相关,该示例非常好地解释了一个实际用例,即表示可以存储在视图中的复杂查询。但请记住,视图不存储任何内容,它是在查询视图时从真实数据库动态填充的。
CREATE VIEW WheeledMotoredVehiculesView AS
select v.VId
, mv.MvMake
, hp.MhpHP
, vw.NumberOfWheels
, v.VDescription
from Vehicules as v
left join MotoredVehicules as mv on mv.MvVId = v.VId
left join MotorHP as hp on hp.MhpMvId on mv.MvId
left join VehiculesWheels as vw on vw.VwVId = v.VId
GO
CREATE VIEW MotoredVehiculesView AS
select v.VId
, mv.MvMake
, hp.MhpHP
, v.VDescription
from Vehicules as v
left join MotoredVehicules as mv on mv.MvId = v.Id
left join MotorHP as hp on hp.MhpMvId = mv.MvId
GO
CREATE VIEW WheeledVehicules AS
select v.VId
, vw.NumberOfWheels
, v.VDescription
from Vehicules as v
left join VehiculesWheels vw on vw.VwVId = v.VId
GO
select *
from MotoredVehiculesView