T-SQL视图操作

来源:互联网 发布:淘宝兴趣人群海报 编辑:程序博客网 时间:2024/05/17 03:26

视图:是从一个或多个表中使用SELECT的FROM子句导出的。那些用来导出视图的表称为基表,视图也可以从一个或多个其他视图中产生。导出视图的SE LECT语句存放在数据库中,而与视图定义相关的数据并没有在数据库中另存一份,所以视图也称为虚表,通过视图看到的是它所基于的表的数据。视图的行为如同一个表,可以通过视图查询表的数据,或修改表的数据。

视图的功能:
?筛选表中的行

?防止未经许可的用户访问敏感数据

?降低数据库的复杂程度

?将多个物理数据库抽象为一个逻辑数据库

视图的优点:

?对最终用户的好处

– 结果更容易理解

– 获得数据更容易

?对开发人员的好处

– 限制数据检索更容易

– 维护应用程序更方便

创建视图:
语法:CREATE VIEW <Viewname> AS <Select Statement

>           

示例:USE Northwind

GO

CREATE VIEW dbo.ShipStatusView

AS

SELECT 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

0 0
原创粉丝点击