• SQL Server视图复习


    视图的好处:

    第一点:
    使用视图,可以定制用户数据,聚焦特定的数据。

    第一点:
    使用视图,可以定制用户数据,聚焦特定的数据。


    在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,
    采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没
    有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视
    图,以后他在查询数据时,只需select * from view_caigou 就可以啦。

    第二点:使用视图,可以简化数据操作。

    解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要
    显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能
    会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我
    们只需要select * from view1就可以啦~,是不是很方便呀~

    第三点:使用视图,基表中的数据就有了一定的安全性

    因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以
    将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集
    合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改
    和删除,可以保证数据的安全性。

    第四点:可以合并分离的数据,创建分区视图

    随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很
    多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务
    情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些
    数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字,
    将各分公司的数据合并为一个视图。

    自己做的练习:

     1 --SQL视图的学习篇
     2 
     3 --1.简单视图的创建
     4 
     5 IF OBJECT_ID('Orders_View','V') IS NOT NULL
     6 DROP VIEW Orders_View;
     7 GO 
     8 CREATE VIEW [Orders_View]
     9 AS
    10 SELECT dbo.Orders.OrderID,dbo.Customers.CustomerID FROM dbo.Orders  INNER JOIN dbo.Customers
    11 ON Customers.CustomerID = Orders.CustomerID
    12 GO 
    13 
    14 --1.1视图的使用
    15 SELECT * FROM Orders_View;
    16 
    17 
    18 --2.使用WITH ENCRYPTION,创建加密视图
    19 IF OBJECT_ID('Region_View','V') IS NOT NULL
    20 DROP VIEW Region_View;
    21 GO
    22 CREATE VIEW  Region_View
    23 WITH ENCRYPTION
    24 AS 
    25 SELECT R.RegionID AS R_ID, R.RegionDescription AS R_Desc FROM dbo.Region AS R
    26 INNER JOIN dbo.Territories
    27 ON Territories.RegionID = R.RegionID
    28 GO 
    29 
    30 --2.1使用视图
    31 SELECT * FROM Region_View;
    32 
    33 --2.2加密视图之后,执行下面的语句吗,得到的文本是,这个对象已经加密
    34 EXEC sp_helptext Region_View;
    35 
    36 
    37 --3.使用 WITH CHECK OPTION,并允许对数据进行修改
    38 IF OBJECT_ID('View_Hello','V') IS NOT NULL 
    39 DROP VIEW View_Hello;
    40 GO 
    41 CREATE VIEW View_Hello
    42 AS 
    43 SELECT O.OrderID,C.ContactName,C.City,E.LastName,E.FirstName,S.CompanyName FROM dbo.Orders AS O
    44 INNER JOIN dbo.Customers AS C ON C.CustomerID = O.CustomerID
    45 INNER JOIN dbo.Employees AS E ON E.EmployeeID = O.EmployeeID
    46 INNER JOIN dbo.Shippers AS S ON S.ShipperID = O.ShipVia
    47 WHERE c.City='London'
    48 WITH CHECK OPTION;
    49 GO 
    50 
    51 --视图的使用
    52 SELECT * FROM View_Hello;
    53 
    54 --测试用
    55 SELECT * FROM dbo.Customers WHERE City='London';
    56 --测试用
    57 UPDATE dbo.Customers SET city='London' WHERE City='AAAAAA'
    58 
    59 
    60 --4.使用视图中的内置函数
    61 
    62 IF OBJECT_ID('Orders_GetDate','V') IS NOT NULL
    63 DROP VIEW Orders_GetDate;
    64 GO 
    65 CREATE VIEW Orders_GetDate
    66 AS 
    67 SELECT TOP (50) OrderID,SUM(Freight) AS aaa FROM dbo.Orders
    68 WHERE OrderDate>CONVERT(DATETIME,'1996-08-01') 
    69 GROUP BY OrderID
    70 GO 
    71 
    72 --使用视图
    73 SELECT* FROM Orders_GetDate;
  • 相关阅读:
    2491 玉蟾宫
    1704 卡片游戏
    1020 孪生蜘蛛
    1215 迷宫
    3149 爱改名的小融 2
    1316 文化之旅 2012年NOIP全国联赛普及组
    1664 清凉冷水
    157. [USACO Nov07] 奶牛跨栏
    [SCOI2005]繁忙的都市
    【NOIP2014模拟赛No.1】我要的幸福
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/4645825.html
Copyright © 2020-2023  润新知