sql数据库组成视图的多个表中数据增加,视图怎么不同步变啊,愁死了~亲们帮忙呀~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库组成视图的多个表中数据增加,视图怎么不同步变啊,愁死了~亲们帮忙呀~相关的知识,希望对你有一定的参考价值。

数据表数据变动如果频率很快 视图中的数据会跟不上

因为每次运行视图查询的同时 需要读取每张表内的数据

如果数据变动频繁 开始读取大量数据的同时 已经变动

那数据肯定不是同步变的

例如:

表1 20万条数据
表2 30万条数据

视图1 整合了表1表2的数据 叉乘 约35万条

读取视图1 需要15秒

先读取表1 用去了8秒
在读取表2 在读表2的时候表1的数据如果已经变化了 那就不是实时的数据了

所以不能同步变 希望有帮到你
参考技术A 不可能啊,视图里面的数据不能直接添加,就是通过相关表中添加数据,实现视图数据的添加的啊 参考技术B 一定是新增记录不符合视图中表的连接条件,好好分析一下视图中各表是以什么条件连接的吧。追问

我只上传了employee里的e_number,e_name,s_id,e_birthdate,e_workdate,e_idcard,e_photo,e_move,c_id,d_id,cp_id,u_id且上传成功,可是视图里没有更新的内容,高手请看下连接条件里有问题吗?

追答

上传字段倒是不缺,所有连接ID都有,只是会不会某些ID没有存在于与EMPLOYEE连接的表中?
你如果把INNER JOIN 改成 left join ,然后处理一下与EMPLOYEE连接表字段的空值(使用ISNULL(字段名,'')或ISNULL(字段名,0)),就会发现问题了,你会发现有的边接表为空值,缺少某ID值。
你可以把图片中的语句用文本发上来,帮你改一下。

追问

FROM dbo.units INNER JOIN
dbo.employee ON dbo.units.u_id = dbo.employee.u_id INNER JOIN
dbo.culture ON dbo.employee.c_id = dbo.culture.c_id INNER JOIN
dbo.duties ON dbo.employee.d_id = dbo.duties.d_id INNER JOIN
dbo.competence ON dbo.employee.cp_id = dbo.competence.cp_id INNER JOIN
dbo.sex ON dbo.employee.s_id = dbo.sex.s_id好的,感谢~发不了这么多,就发了下半段~

追答

下半段这样改:
FROM dbo.units LEFT JOIN
dbo.employee ON dbo.units.u_id = dbo.employee.u_id LEFT JOIN
dbo.culture ON dbo.employee.c_id = dbo.culture.c_id LEFT JOIN
dbo.duties ON dbo.employee.d_id = dbo.duties.d_id LEFT JOIN
dbo.competence ON dbo.employee.cp_id = dbo.competence.cp_id LEFT JOIN
dbo.sex ON dbo.employee.s_id = dbo.sex.s_id
你先试一下,如果查询结果允许空值,就没问题了。如果不允许空值,你就需要把上半段再发过来

追问

恩恩,这个都改成left join就能直接显示了!可是还一个视图是用这个视图跟其它几个表组成的,再用这种方法却依然不能同步显示~

我同时增加了trainlog里的e_number,ts_id,tk_id,tsite_id,w_id,tl_stdate,tl_ovdate,tl_text,tl_result,tl_number,tl_exdate和employee里的数据,刚刚的视图Emp_Units同步了,这个怎么还不行呢?

追答

你这个视图前题是TRAINLOG的TK_ID字段必须要在TRAINKIND中存在才能够显示出来。
即然可以显示空记录,那么你可以把第一个连接改成FULL JOIN ,或者把TRANLOG表放到第一个位置才行。

本回答被提问者采纳

视图的概述

视图是保存在数据库中的select查询,是一张虚拟表,能够从多个表中提取诗句,并以单个表的形式展现的数据。

视图中不存放数据

数据存放在视图所引用的原始表中,一个原始表根据不同用户的不同需求,可以创建N多个不同的视图

 查询与视图有哪些异同点:

不同点: 存储上: 视图存储在数据库中,查询以.sql文件形式保存。

 排序上: 要排序必须有TOP关键字,查询无要求。

 安全上: 视图可以加密,查询不可以。

相同点: 都是通过SQL语句定义的。

创建视图的方式

 使用SSMS创建视图

 使用T-SQL语句创建视图

 

视图的创建

使用T-SQL语句创建视图

 

CREATE VIEW view-name
AS
 <select 语句>
 
使用T-SQL数据删除视图

if existsselect * from sysobjects where name=view-name’)
drop view view-name

使用T-SQL语句查看视图
select * from view-name

 

以上是关于sql数据库组成视图的多个表中数据增加,视图怎么不同步变啊,愁死了~亲们帮忙呀~的主要内容,如果未能解决你的问题,请参考以下文章

sql视图实例

SQL Server创建视图——视图的作用

索引视图SQL优化以及数据库存储过程

SQL 视图:将初始表与分析表进行比较以返回初始表中不存在的值

SQL视图是什么?视图的作用,视图可以更改么?

视图的概述