码迷,mamicode.com
首页 > 数据库 > 详细

你真的会玩SQL吗?数据修改

时间:2015-11-06 09:43:42      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

项目会有种需要将A表中的部分字段与B表中的部分字段联合查询后保存到C表,或更新到C表,那怎么实现呢?

  1. select into
  2. insert select
  3. delete from
  4. update from
  5. insert exec 语句可以把存储过程或动态批处理返回的结果保存到现有表中(这里暂时先不讲)

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。

      1.INSERT INTO SELECT语句

      语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

      要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

--1.创建测试表
    create TABLE Table1
    (
        a varchar(10),
        b varchar(10),
        c varchar(10),
        CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
        (
            a ASC
        )
    ) ON [PRIMARY]

    create TABLE Table2
    (
        a varchar(10),
        c varchar(10),
        d int,
        CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
        (
            a ASC
        )
    ) ON [PRIMARY]
    GO
    --2.创建测试数据
    Insert into Table1 values(,asds,90)
    Insert into Table1 values(,asds,100)
    Insert into Table1 values(,asds,80)
    Insert into Table1 values(,asds,null)
    GO
    select * from Table2

    --3.INSERT INTO SELECT语句复制表数据
    Insert into Table2(a, c, d) select a,c,5 from Table1
    GO

    --4.显示更新后的结果
    select * from Table2
    GO
    --5.删除测试表
    drop TABLE Table1
    drop TABLE Table2

 

2.SELECT INTO FROM语句

      语句形式为:SELECT vale1, value2 into #Table2 from Table1

 要求目标表Table2不存在因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到临时表Table2。示例如下:

--1.创建测试表
    create TABLE Table1
    (
        a varchar(10),
        b varchar(10),
        c varchar(10),
        CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
        (
            a ASC
        )
    ) ON [PRIMARY]
    GO

    --2.创建测试数据
    Insert into Table1 values(,asds,90)
    Insert into Table1 values(,asds,100)
    Insert into Table1 values(,asds,80)
    Insert into Table1 values(,asds,null)
    GO

    --3.SELECT INTO FROM语句创建表Table2并复制数据
    select a,c INTO #Table2 from Table1
    GO

    --4.显示更新后的结果
    select * from #Table2
    GO
    --5.删除测试表
    drop TABLE Table1
    drop TABLE #Table2

 3.delete from

基于联接的delete,如想删除2008年5月6日以后下的订单明细

DELETE  FROM od
FROM    sales.orderdetails AS od
        JOIN sales.orders AS o ON od.orderid = o.orderid
WHERE   o.orderdate >= 20080506

4.update from 

基于联接的update,如想更新由usa客户所下单的发货信息,用customers表中客户的country,region,city改写shipcountry,shipregion,shipcity

UPDATE  o
SET     shipcountry = c.country ,
        shipregion = c.region ,
        shipcity = c.city
FROM    sales.orders AS o
        JOIN sales.customers AS c ON o.custid = c.custid
WHERE   c.country = usa

 今天内容很简单,就不做练习了,多看看文章……

你真的会玩SQL吗?数据修改

标签:

原文地址:http://www.cnblogs.com/zhangs1986/p/4915124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!