SQL Server(插入数据)

1.1 INSERT VALUES 

IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders;

CREATE TABLE dbo.Orders
(
  orderid   INT         NOT NULL
    CONSTRAINT PK_Orders PRIMARY KEY,
  orderdate DATE        NOT NULL
    CONSTRAINT DFT_orderdate DEFAULT(SYSDATETIME()),
  empid     INT         NOT NULL,
  custid    VARCHAR(10) NOT NULL
);

INSERT INTO dbo.Orders(orderid, orderdate, empid, custid)
  VALUES(10001, '20090212', 3, 'A');

INSERT INTO dbo.Orders(orderid, empid, custid)
  VALUES(10002, 5, 'B');

INSERT INTO dbo.Orders
  (orderid, orderdate, empid, custid)
VALUES
  (10003, '20090213', 4, 'B'),
  (10004, '20090214', 1, 'A'),
  (10005, '20090213', 1, 'C'),
  (10006, '20090215', 3, 'C');

对于增强的values子句,还有一点就是可以将其作为表值构造函数以标准方式构建一个派生表,示例如下。

SELECT *
FROM ( VALUES
         (10003, '20090213', 4, 'B'),
         (10004, '20090214', 1, 'A'),
         (10005, '20090213', 1, 'C'),
         (10006, '20090215', 3, 'C') )
     AS O(orderid, orderdate, empid, custid);

 

 

1.1.2 INSERT SELECT

INSERT SELECT 语句插入一个有SELECT查询返回的行集到目标表中。其语法类似于INSERT VALUES语句,不同的是,你可以指定一个SELECT查询。示例如下。

INSERT INTO dbo.Orders(orderid, orderdate, empid, custid)
  SELECT orderid, orderdate, empid, custid
  FROM Sales.Orders
  WHERE shipcountry = 'UK';

 

1.2.3 INSERT EXEC语句

使用INSERT EXEC语句可以将存储过程或动态SQL批处理返回的结果插入到目标表中。

IF OBJECT_ID('Sales.usp_getorders', 'P') IS NOT NULL
  DROP PROC Sales.usp_getorders;
GO

CREATE PROC Sales.usp_getorders
  @country AS NVARCHAR(40)
AS

SELECT orderid, orderdate, empid, custid
FROM Sales.Orders
WHERE shipcountry = @country;
GO

EXEC Sales.usp_getorders @country = 'France';

INSERT INTO dbo.Orders(orderid, orderdate, empid, custid)
  EXEC Sales.usp_getorders @country = 'France';

1.1.4 SELECT INTO

SELECT INTO语句是一个非标准的T-SQL语句,它使用查询的结果集创建并填充表。

IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders;

SELECT orderid, orderdate, empid, custid
INTO dbo.Orders
FROM Sales.Orders;

目标表的结构和数据是基于源表的。SELECT INTO语句从源表中复制基础结构(列名称、类型、为空性和IDENTITY属性)和数据。

有4中情况,语句不会从源表复制: 约束、索引、触发器he和和权限。如果目标表中需要这些东西,则需要单独创建它们。

 

1.1.5 BULK INSERT

可以使用BULK INSERT语句jia将来自文件的数据插入到一个现有表中,在语句中指定mu'b目标表、源文件和选项。

可以指定多个选项,包括数据文件类型(例如 char 或 native)、字段终止符、行终止符和其他所有文件选项。

例如,下面的代码批量插入文件 c:\temp\orders.txt的内容到dbo.Orders表中,指定数据文件类型为 char,字段终止符为逗号,行终止符为换行符。

BULK INSERT dbo.Orders FROM 'c:\temp\orders.txt'
  WITH 
    (
       DATAFILETYPE    = 'char',
       FIELDTERMINATOR = ',',
       ROWTERMINATOR   = '\n'
    );
GO

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值