视图:是从一个或多个表中使用SELECT的FROM子句导出的。那些用来导出视图的表称为基表,视图也可以从一个或多个其他视图中产生。导出视图的SE LECT语句存放在数据库中,而与视图定义相关的数据并没有在数据库中另存一份,所以视图也称为虚表,通过视图看到的是它所基于的表的数据。视图的行为如同一个表,可以通过视图查询表的数据,或修改表的数据。
视图的功能:
?筛选表中的行
?防止未经许可的用户访问敏感数据
?降低数据库的复杂程度
?将多个物理数据库抽象为一个逻辑数据库
视图的优点:
?对最终用户的好处
– 结果更容易理解
– 获得数据更容易
?对开发人员的好处
– 限制数据检索更容易
– 维护应用程序更方便
创建视图:
语法:CREATE VIEW <Viewname> AS <Select Statement
>
示例:USE Northwind
GOCREATE VIEW dbo.ShipStatusView
ASSELECT OrderID, RequiredDate, ShippedDate,
ContactName FROM Customers c INNER JOIN Orders o
ON c.CustomerID = O.CustomerID
WHERE RequiredDate < ShippedDate
创建视图的指导原则:
?只能在当前数据库中创建视图
?视图名称应与表名近似
?视图名称应遵循标识符的命名规则
?可以基于其他视图建立视图
?不能将默认值、规则和触发器与视图相关联
?不能为视图建立索引
?创建视图时不能使用临时表。
?即使表被删除,视图定义仍将保留。
?定义视图的查询不能包含以下语句:
-ORDER BY
-COMPUTE 子句
-COMPUTE BY 子句
-INTO 关键字
修改视图:
满足下列条件时,可以使用视图修改表中的数据:
?视图定义的FROM 子句中应至少包含一个表。
?选择没有使用聚合函数或GROUP BY、UNION、DISTINCT或TOP子句。但是,可以在from 子句中定义的子查询中使用聚合函数,前提是不修改聚合函数生成的派生值。
?视图的select 列表中不包含派生列。派生列是指用简单的列表达式(如使用函数或加法或减法运算符)以外的任何其他方式生成的结果集列。
示例:USE Northwind
GO
ALTER VIEW dbo.EmployeeView
AS
SELECT LastName, FirstName, Extension
FROM Employees
注意:只有在ALTER VIEW执行前后列名称不变的情况下,列上的权限才会保持不变
更新视图:
1 首先要满足可更新视图的基本条件
2 插入数据使用 insert into 表名语句,注意当视图的基表是多个时,不能向视图插入数据;
3 修改数据使用 update 语句,注意当视图的基表是多个时(不包括分区视图),一次修改只能变动一个基表;
4 删除数据使用 delete 语句,注意当视图的基表是多个时(不包括分区视图)
删除视图:
?不再需要某个视图时,可以将其删除以释放资源。
?删除视图对基表不产生任何影响。
语法:
DROP VIEW view_name示例:DROP VIEW NewMoon_employee
查询视图:
有4种方法可以查看视图的信息:
1使用企业管理器;
2使用Transact-SQL语句;
3使用系统存储过程;
4查询information_schema.views获得视图的信息。
CREATE VIEW bbbbb AS --创建视图
SELECT e.bz,p.id
FROM tb_dingdan as e, tb_orderlist as p
WHERE e.ID = p.ID AND e.sumprice = p.sumprice
drop view bbb --删除视图
alter view bbbbb --重新定义视图(将原视图中的字段删除后增加新的字段)
as
select a.turename,a.id,a.sumprice,b.username from tb_dingdan as a , tb_orderlist as b