将查询结果插入到现有表中的方法详解

将查询结果插入到现有表中的方法详解

ID:6661858

大小:27.00 KB

页数:5页

时间:2018-01-21

将查询结果插入到现有表中的方法详解_第1页
将查询结果插入到现有表中的方法详解_第2页
将查询结果插入到现有表中的方法详解_第3页
将查询结果插入到现有表中的方法详解_第4页
将查询结果插入到现有表中的方法详解_第5页
资源描述:

《将查询结果插入到现有表中的方法详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、将查询结果插入到现有表中的方法详解在数据库日常维护工作中,我们可能经常需要把某个查询结果插入到现有的表中。如需要把两张表进行合并、需要把另外一张报纸能够符合条件的的记录插入到现有的表中、需要把另外一张表中的某些字段重新整理后插入到现有的表中等等。但是,我们都知道在数据库中对此进行操作,不想Excel表格那么方便,通过选择、复制、粘贴即可以完成工作表之间的合并。在数据库中,不能够对列直接进行复制与粘贴的操作。那么在数据库中能否有简单而有效的解决措施呢?其实在SQLServer数据库中,灵活使用insertintoSelect(插入结果查询)语句就可以

2、实现这个需求。  如现在由于公司人事部门合并后需要把数据库中的USER_A中的数据复制到表USE_B中。那么就可以利用如下的语句来实现:  InsertintoUSER_B(ad_user_id,Value,name,manager_id)  Selectad_user_id,Value,name,manager_idfromUSER_AWhere(manager_id=100001)  通过如上这条简单的insertintoselect语句就可以把某一张表中符合条件的记录插入到目标表中。不过这条语句虽然比较简单,但是其中的条条框框仍然有很多。具体

3、的来说,在使用这条语句的时候,需要遵守如下的这些条条框框。  一、需要指定源表中需要复制的列。  有时候可能复制与被复制的表表结构不同。如需要把表A中的name(英文名字)字段复制到表B中的name2(中文名字)中。此时原有复制表与被复制表中字段的名称不同,为此需要在上面的语句中,把所需要复制列名称一一列举出来。另外可能只需要把被复制表中的部分列复制到目的表总,此时也有显示的指名所需要复制的列。注意复制对象与目标对象都需要列出,以免发生张冠李戴的现象。笔者在使用这条语句的时候,不管任何情况,及时两者表格中的内容完全一致,笔者也习惯在语句中把字段的名

4、称一一的列出。虽然这会增加一定的工作量,但是却可以提高这条语句执行的准确性。简而言之,就是需要在语句中指定源表zhon纲要复制其内容的列;指定目标表总要向其中复制数据的目标列。即使两这个表中的这些列名称相同,也最好能够显示的指定。此时数据库管理员不能够偷懒,否则的话很容易导致数据插入错误,而一切要重头再来。  二、存储数据时的顺序。  如果现在在源表中有一万条符合条件的记录要保存到目的表中,那么这些记录在数据库中存储的顺序应该是什么呢?默认情况下,其存储的数据顺序就是查询结果所得到的顺序。在没有采用排序语句的情况下,其实就是源表中实际存储的顺序(一

5、般按记录创建的先后顺序来保存)。不过有时候可能这个排序顺序不怎么合理。笔者在认为,最好对需要插入的结果进行恰当的排序,这有利于提高插入记录的查询效率。如在牧地中,可能对员工编号设置了索引;或者在目的表中查询员工的信息是按员工编号来排序的。那么在目的表中插入数据的时候,最好能够按员工的编号来进行排列。是顺序还是逆序排列要跟目的表中保持一致。如此的话,插入数据后进行查询的话,如需要查询所有后来插入的结果,那么就不需要对其进行重新排序。因为存储的时候就是按照员工编号来插入,那么查询出来的数据也是按照员工编号来的。可见,为需要插入的数据设置合理的排序顺序,

6、这有利于提高以后查询的性能。故笔者建议,为了提高数据库的性能,最好在插入数据的时候利用OrderBY语句指定插入数据时的顺序。虽然这不是强制性的,但是笔者建议各位数据库管理员还是要这么做。  三、指定复制行的条件。  需要把某张表中的记录复制到另外一张表中,往往需要指定复制行的条件。也就是说,往往不会把源表中所有的记录都复制到目的表中。如现在需要把员工信息A表中的数据复制到员工信息B表中。可是由于员工离职或者其他的原因,员工信息A表中的记录可能有些已经作废掉了。如果把A表中的数据不加过滤就直接把全部记录都一成不变的复制到B表中,那显然会给B表增加不

7、少的垃圾数据。为此在复制数据到目的表的表的时候,企业用户可能只需要把现在还在职的员工信息复制到B表中。此似,在使用上面的语句时,就需要利用Where条件来限制需要复制的行。如一般在数据库系统设计的时候,都会在表中加入一个isactive类似的控制字段,表示当前记录是否有效。当员工离职时,不会删除这个员工的信息,而是会把其设置为不活跃。在数据库表中反应出来的就是这个字段为N。为此,在上面的语句中,要把isactive列对应的值为N的记录去掉。所以如果在表与表合并的时候,需要根据一定的规则来过滤数据的话,则可以在语句中加入Where语句来进行限制。这个

8、限制虽然不是必须的,但是却可以避免把一些垃圾数据也导入到新表中。  虽然数据库管理员可以先把所有的记录先都复制到目的表中,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。