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;
  • 相关阅读:
    Java 8 lambda maxBy取最大/minBy取最小取平均值counting计数partitioningBy分隔/groupingBy分组
    mybatis xml参数传递详解
    java中判断字符串是否为纯数字,正则表达式判断
    OAuth 2.0 的四种方式
    Spring Boot 日志配置(超详细)
    SpringBoot基础系列-使用日志
    zuul动态配置路由规则,从DB读取
    TypeError: this.getOptions is not a function
    mysql索引类型和索引方法
    SpringBoot 处理异常的几种常见姿势
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/4645825.html
Copyright © 2011-2022 走看看