设为首页 | 加入收藏  
24小时咨询服务热线
18955414928 13335544228 
全站搜索
 中国权威数据恢复与存储安全研发中心 [ 咨询免费 检测免费 ] 24小时电话: 18955414928 13335544228
 您当前的位置:网站首页>> 新闻中心 >> 问题点滴 >> 文章详细内容

SQL点滴—编辑数据
  发布者:  来源: 点击:1286次

select into

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

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

select top(10) *into new_intervalwaitssamplefrom IntervalWaitsSampleselect * from new_intervalwaitssample这个语句就将IntervalWaitsSample表中的前10行数据放在一个新建的表new_intervalwaitssample中。

   

insert into select

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

insert into new_intervalwaitssampleselect * 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连接起来。

insert into select value11 , value12 , value13 union select value21 , value22 , value23 union select  value31 , value32 , value33 … …下面是实例:

insert into new_intervalwaitssampleselect 'ASYNC_NETWORK_IO','2011-05-09 16:50:00.973','0.00' unionselect 'ASYNC_NETWORK_IO','2011-05-09 17:00:00.020','0.00' unionselect 'ASYNC_NETWORK_IO','2011-05-09 17:15:00.123','0.00' unionselect 'ASYNC_NETWORK_IO','2011-05-09 17:25:00.190','0.00'  

从表中“剪切”数据

还有一种情况,假设我们想从一个表中的数据删除几条数据,然后把这些删除的数据放到另外一个表中。这个动作就像使用剪切,粘贴一样。不过这种情况要注意,他只能从用户表中剪切数据,不能从视图中剪切数据。它的语法如下

Delete sourcetableoutput deleted.value1,deleted.value2,deleted.value3into targettablefrom targettable where … …下面是实例

delete WaitStatsoutput deleted.dt,deleted.wait_type,deleted.waiting_tasks_count,deleted.wait_time_ms,deleted.max_wait_time_ms,deleted.signal_wait_time_msinto new_waitestatswhere WaitStats.wait_type='ABR'要注意的是这里有一个很少见的关键字deleted,它是当前要删除的表的别名,这个有点像类中的this关键字。

  

可见即可得的编辑

如果我们是应用程序开发,我相信大多数人还是更愿意使用SQL Server Management Studio中的图像化界面来操作数据,毕竟提供了这么多强大的功能,为什么不用呢。记得我曾经提到过Oracle中可以直接修改sql语句选择得到的数据,当时质问Microsoft SQL Server为何没有提供这样强大的功能。呵呵,今天发现SQL Server还是提供了这样的功能。不过这种修改只能是单独一个表,如果在这个查询语句中有内连接之类的估计就不行了。废话不说,上图:

点击要修改的表右击选择Edit top 200 rows
当打开编辑界面的时候,SQL server上面会多出一个标签 ,鼠标滑到这个标签上,再滑到Panel上,再滑到SQL上,点击SQL,或者在编辑界面右击也能看到。如图1

图1
这时候在上面的文字区就可以编写自己想要修改的数据的查询语句如下列:
SELECT     TOP (1000) dt, wait_type, waiting_tasks_count, wait_time_ms,  max_wait_time_ms, signal_wait_time_msFROM         new_waitestatsWHERE     (wait_type = 'ABR')这里我们想要修改wait_type=’ABR’的数据,点击查询按钮 ,在下面的表格内就可以看到所有符合条件的数据,这时候就可以修改这些数据了,注意改好之后按回车键才会写到数据库里面。这样做是不是很偷懒呢呵呵,不用写update语句,直接在里面修改。
使用编辑器复制粘贴数据

 还有一种情况可以使用编辑器代替上面的insert into select语句, 如果两个表的字段完全一样,我们从一个表中查询得到数据,然后复制到另外一个表中。

首先点击数据行的开头,选中整行,然后点击copy如图2
 
然后右击想要插入数据的第二个表,鼠标拖动滚动条到最后,直到显示一行全部都是空值的一行,然后右击paste,按回车键,这样一条数据就插入进去了。

 

新闻中心

      公司新闻
      行业新闻
      业内动向
      IT技术文章
      从业心得
      问题点滴

硬盘数据恢复支持的品牌

希捷硬盘 希捷硬盘
西数硬盘 西部数据硬盘
迈拓硬盘 迈拓硬盘
IBM硬盘 IBM硬盘
日立硬盘 日立硬盘
三星硬盘 三星硬盘
富士通硬盘 富士通硬盘
东芝硬盘 东芝硬盘

数据恢复支持的操作系统

windows Windows系列
苹果操作系统 苹果操作系统
linux Linux操作系统
freebsd FreeBSD系统
solaris Solaris系统