zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    洛谷 P1226 【模板】快速幂||取余运算 题解
    洛谷 P2678 跳石头 题解
    洛谷 P2615 神奇的幻方 题解
    洛谷 P1083 借教室 题解
    洛谷 P1076 寻宝 题解
    洛谷 UVA10298 Power Strings 题解
    洛谷 P3375 【模板】KMP字符串匹配 题解
    Kafka Shell基本命令
    Mybatis与Hibernate的详细对比
    MyBatis简介
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/4645825.html
Copyright © 2011-2022 走看看