T-SQL Recipes------Insert, Update, Delete语句

来源:互联网 发布:c语言运算符的优先级 编辑:程序博客网 时间:2024/05/02 21:52

1. 使用默认值插入记录
      INSERT Production.Location(Name, CostRate, Availability, ModifiedDate)
      VALUES ('Wheel Storage 3', 11.25, 80.00, DEFAULT)

2. IDENTITY属性类型Column的显式插入
      SET IDENTITY_INSERT HumanResources.Department ON
      INSERT HumanResources.Department(DepartmentID, Name, GroupName)
           VALUES (17, 'Database Services', 'Information Technology')
      SET IDENTITY_INSERT HumanResources.Department OFF

3. Uniqueidentifier属性类型Column的显式插入
    INSERT Purchasing.ShipMethod(Name, ShipBase, ShipRate, rowguid)
         VALUES('MIDDLETON CARGO TS1', 8.99, 1.22, NEWID())

4. 从查询结果中插入多行
    使用Insert......Select语句

5. 从存储过程中插入多行
   使用Insert......Exec

6. 更新大值类型列
     SQL Server 2005引入了varchar(max),nvarchar(max),varbinary(max)类型的列。对于insert, 语法上没有区别。但是对于update,需要使用.write方法。
     UPDATE RecipeChapter
     SET Chapter .WRITE('daily', 178, 10)
     WHERE ChapterID = 1

7. 使用Openrowset,Bulk更新图像文件
     UPDATE StockGifs
     SET Gif =
          (SELECT BulkColumn
              FROM OPENROWSET(BULK
                'C:/Program Files/Microsoft SQL Server/90/Tools/Binn/VSShell/Common7/IDE/
                    DataWarehouseDesigner/KPIsBrowserPage/Images/Cylinder2.gif',
                        SINGLE_BLOB) AS x)
     WHERE StockGifID =1

8. 采用Truncate table删除表
    比Delete快,因为它没有记录操作日志。全部删除,没有where子句。但是,如果表被外键引用或者在索引视图中使用,那么该表是不能够被Truncate的。如果该表有IDENTITY列的话,使用TRUNCATE能使IDENTITY列回到初始值。

9. Output子句
    把Inert, Update, Delete操作中受影响的记录输出到另外的表中。

10. 使用Top子句分块操作数据
    Top子句也能用于Delete,Update,Insert。分块提交事务,对于大容量数据的处理,有利于提高并发性和处理性能。
        DELETE TOP(500)
        FROM Production.Example_BillOfMaterials