You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server中插入记录有哪些方法?含单条、多条及跨表有限列插入场景

SQL Server中插入记录的几种常见实现方式

嘿,这个问题我太熟悉了!在SQL Server里插入记录的方式其实挺灵活的,刚好能覆盖你提到的单条、多条,还有跨表插入指定列的场景,我给你详细拆解下:

1. 插入单条记录

这是最基础的用法,用INSERT INTO ... VALUES语句就能搞定。建议明确指定目标列,这样即使表结构后续有调整,也不容易出错。

举个例子,假设我们有一个Users表,包含Id、Name、Email三列:

INSERT INTO Users (Id, Name, Email)
VALUES (1, 'John Doe', 'john@example.com');

如果你能确保VALUES里的字段顺序和表定义完全一致,也可以省略列名,但非常不推荐——万一哪天表加了新列或者调整了列顺序,这条语句就会报错。

2. 一次性插入多条记录

如果你需要批量插入多条数据,有两种常用方式:

方式一:多组VALUES值

SQL Server 2008及以后版本支持在VALUES后面跟多组括号,一次性插入多条,写法简洁直观:

INSERT INTO Users (Id, Name, Email)
VALUES 
    (2, 'Jane Smith', 'jane@example.com'),
    (3, 'Bob Brown', 'bob@example.com'),
    (4, 'Alice Lee', 'alice@example.com');

方式二:INSERT结合SELECT语句

如果你的数据来自查询结果(比如临时生成的数据、或者从其他表筛选的子集),可以用INSERT ... SELECT来批量插入:

INSERT INTO Users (Id, Name, Email)
SELECT 5, 'Mike Wilson', 'mike@example.com'
UNION ALL
SELECT 6, 'Sarah Davis', 'sarah@example.com'
UNION ALL
SELECT 7, 'Tom Clark', 'tom@example.com';

这种方式适合需要动态生成数据,或者需要对插入的数据做简单计算、过滤的场景。

3. 将某一表的数据插入至另一表的指定有限列

这也是INSERT ... SELECT的经典用法,核心是确保源表的字段和目标表指定的字段在数据类型、顺序上匹配(或者用别名显式映射)。

举个例子:假设我们有一个OldUsers表,现在要把其中的Name和Email字段插入到Users表的对应列中,同时只插入2023年之后创建的用户:

-- 假设Users的Id是自增列,不需要手动指定
INSERT INTO Users (Name, Email)
SELECT Name, Email
FROM OldUsers
WHERE CreatedDate > '2023-01-01';

如果源表和目标表的列名不一样,也可以通过别名来映射:

INSERT INTO Users (Name, Email)
SELECT OldUserName AS Name, OldUserEmail AS Email
FROM OldUsers;

⚠️ 注意:插入前要确认目标表的约束(比如主键、唯一约束、非空约束),确保源数据符合要求,否则会触发插入失败的错误。

内容的提问来源于stack exchange,提问作者Swamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:32:41