• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Sql Server 视图数据的增删改查教程

    一、视图的基本概念

    视图是用于查询的另外一种方式。 与实际的表不同,它是一个虚表;因此数据库中只存在视图的定义,而不存在视图中相对应的数据,数据仍然存放在原来的基本表中。视图是一种逻辑对象。

    二、 视图能做什么

    导出数据; 在导出数据时,常常需要多个表联合查询,这个时候就可以使用视图;转换字段,如把status(0/1 Int类型)字段转换成启用/停用(文字) ,然后用视图保存定义。

    数据安全,可以给视图加密。

    三、视图操作

    3.1 查询数据

    (一)准备素材:

    使用两张表,其中一张是家电表,另外一张字典表(只需要知道这两张表有一个连接字段brandID-RowID:注意两个表没有强制使用外键约束),准备好素材

    SELECT TOP 1000 [appliancesName]
      ,[appliancesType]
      ,[code]
      ,[**brandId**]
      ,[standard]
      ,[appliancesStatus]
      ,[appliancesIsNew]
      ,[appliancesIsKey]
      ,[appliancesRemark]
      ,[appliancesId]
     FROM sfa_t_appliances

    另外一张表字典表

     SELECT TOP 1000 [**RowID**]
      ,[PRowID]
      ,[DicKey]
      ,[DicVal]
      ,[Status]
     FROM sfa_t_TSysDictionary

    说明:sfa_t_appliances 表中的字段brandId 与 sfa_t_TSysDictionary表中的rowid做关联。

    (二)创建视图:

    create view appliances_view(id,name,brandName)
    as 
    select s.appliancesId,s.appliancesName,d.DicVal
    from sfa_t_appliances s,sfa_t_TSysDictionary d
    where s.brandId = d.RowID

    (三)查询:

    查询数据,可以将视图看做一张实实在在的数据表,能够执行各种查询操作。

    如下图所示,执行一个查询操作:

    (四)备注

    有些书上说:可以对任何查询结果进行排序,但是只有当视图包括Top子句时才能排序视图。这样看来书上确实是有问题的。动手实践出真知

    3.2 插入数据

    实验一

    往视图中插入一条数据:

    解释:

    往视图中插入数据时,能够往sfa_t_appliances 中插入数据。但是视图为什么读取不到呢?

    create view appliances_view(id,name,brandName)
    as 
    select s.appliancesId,s.appliancesName,d.DicVal
    from sfa_t_appliances s,sfa_t_TSysDictionary d
    where s.brandId = d.RowID

    注意视图的创建语法:是通过关联关系获取到的数据。注意观看视图的三个字段的来源。自然,在appliancesID为112233的记录中没有brandID,所以自然不能读取到数据。

    实验二

    说明: 往只含一个基本字段中插入数据是完全没有问题的。上图也插入成功了。

    实验三

    将多个基表的字段都插入试试:

    insert into appliances_view(id,name,brandName) values(112234,'视图','冰箱')

    小节:

    使用INSERT语句进行插入操作的视图必须能够在基表(组成视图查询的表)中插入数据,否则会操作失败。

    如果视图上没有包括基表中所有属性为not null的行,那么插入操作会由于哪些列的NULL值而失败。

    补充

    通过视图可以向数据库表中插入数据,修改数据和删除表中数据。如果视图的SELECT语句中包含了DISTINCT、表达式(如计算列和函数),或FROM子句中引用多个表,或者引用不可更新的视图,或有Group by 或者having子句,那么都不能通过视图操作数据。

    3.3 修改数据

    解释

    能够对数据进行修改,但是只能修改一张表中的数据。

    查看下图,修改基于两个表的字段:

    失败了,说明只能修改一张表中的字段。

    3.4 删除数据

    小结:

    如果一个视图链接了两个以上的基表,则不允许进行数据删除操作。如果视图中的列是常数或者几个字符串列值得和,那么尽管插入和更新操作时不允许的,但是却可以进行删除操作。

    实验:

    (一) 创建基于一个表的视图:

    (二)执行删除操作结果:

    (三)结果说明:

    基于一个表的视图是能够执行删除操作的。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)
    • 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
    • sqlserver查询去掉重复数据的实现
    • sqlserver 实现收缩数据库日志操作
    上一篇:SQL Server查询条件IN中能否使用变量的示例详解
    下一篇:SQL SERVER临时表排序问题的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Sql Server 视图数据的增删改查教程 Sql,Server,视图,数据,的,增,