SQL点滴之如何编辑数据

发表于:2011-6-24 10:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  数据库中的数据编辑是我们遇到的最频繁的工作,这一个随笔中我来总结一下最常用的数据编辑。

  select into

  经常遇到一种情况是,我们希望创建一个新表,表中的数据来源于原有的一个表;原有一个表,但是这个表中的数据已经很混乱,我们希望把这些数据备份出来,然后把原有的表中的数据清除,重新导入;在这些情况下我们可以使用select into语句。

  如果当前用户拥有建表权限,在select语句使用关键字into可以在数据库中创建新的 表。这个语句只需要把into new_table_name加到选择出的列名之后,from关键字之前,当然数据可以来源于一个或多个表中。需要说明的是在新表中只包含select字句中查询的到的数据,没有任何键,约束,关系。下面实例:

  1. select top(10) *  
  2. into new_intervalwaitssample  
  3. from IntervalWaitsSample  
  4. select * from new_intervalwaitssample

  这个语句就将IntervalWaitsSample表中的前10行数据放在一个新建的表new_intervalwaitssample中。

  insert into select

  现在已经有这个新表了,如果我们想再从原表IntervalWaitsSample中选择一些数据插入到这个新表中呢,这时候就需要使用insert into select语句了,下面实例:

  1. insert into new_intervalwaitssample  
  2. select * from IntervalWaitsSample where wait_type='ASSEMBLY_LOAD'

  这个语句就将原表IntervalWaitsSample中的所有wait_type='ASSEMBLY_LOAD'的数据插入到新表中了。

  insert into select union

  现在如果我们有一些已知的数据想把这些数据一次性写入到目标表里面,应该怎么办呢,这时候union语句就很有用了,可以使用insert into select union语句,注意这个语句和insert into select很相似,差别就在于后面的select语句使用了union把多个select连接起来。

  1. insert into select value11 , value12 , value13   
  2. union select value21 , value22 , value23   
  3. union select  value31 , value32 , value33

  下面是实例:

  1. insert into new_intervalwaitssample  
  2. select 'ASYNC_NETWORK_IO','2011-05-09 16:50:00.973','0.00' union 
  3. select 'ASYNC_NETWORK_IO','2011-05-09 17:00:00.020','0.00' union 
  4. select 'ASYNC_NETWORK_IO','2011-05-09 17:15:00.123','0.00' union 
  5. select 'ASYNC_NETWORK_IO','2011-05-09 17:25:00.190','0.00'

  使用表值构造函数

  我们还可以直接使用表值构造函数,这个更加简单直接,代码如下:

  1. insert into new_intervalwaitssample  
  2. values   
  3. ('ASYNC_NETWORK_IO','2011-05-09 16:50:00.973','0.00'),  
  4. ('ASYNC_NETWORK_IO','2011-05-09 17:00:00.020','0.00'),  
  5. ('ASYNC_NETWORK_IO','2011-05-09 17:15:00.123','0.00'),  
  6. ('ASYNC_NETWORK_IO','2011-05-09 17:25:00.190','0.00')

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号