SQL Server 插入数据

17 Mar 2025 | 4 分钟阅读

SQL Server 中的 INSERT 语句用于在指定数据库中的表中添加记录。SQL Server 在单个查询中以两种方式执行插入操作

  • 在单行中添加数据
  • 在多行中添加数据

语法

以下 INSERT INTO 命令语法允许我们在表中添加单行

参数解释

上述语法的参数说明如下

  • database_name: 它表示存储表的数据库名称,我们将在其中插入数据。 如果我们不指定数据库名称,它将默认假定为当前数据库。
  • schema_name: 它表示表所属的架构。
  • table_name: 这是我们要添加数据的表名。
  • column_name1, column_name2…column_nameN: 这是我们表列的名称。
  • Value1, value2…valueN: 它表示 VALUES 子句后与列名对应的值的列表。

注意:列名是可选的。 但是,如果我们想指定部分值,我们需要强制指定其名称。 它还确保列名和值及其位置应该相同。

如果我们想在单个命令中插入多个记录,我们可以使用以下语法

SQL Server 会自动将这些值添加到表中存在的列,但不会出现在 INSERT 命令的列列表中

  • 如果该列具有 IDENTITY 属性,它将添加下一个递增值。
  • 如果我们为列定义了默认值,它将添加该值。
  • 如果我们已将列的数据类型指定为时间戳数据类型,它将添加当前时间戳值。
  • 如果该列可为空,它将添加 NULL 值。
  • 如果该列是计算值,它将添加计算值。

SQL Server 插入数据示例

让我们借助多个示例来了解 INSERT 语句在 SQL Server 中的工作方式。 首先,我们将使用以下命令在数据库中创建一个表“Student

让我们按如下方式将数据插入到此表中

1. 如果我们要存储所有字段的单个记录,请使用以下语法

在这里,我们没有指定 Id column,因为它具有自动插入数字数据并递增每行的标识属性。 但是,如果我们插入所有列的数据,则可以有选择地指定列名。 因此,INSERT 语句也可以写成

我们可以使用 SELECT 语句验证数据

SQL server insert data

2. SQL Server 还允许用户在单个语句中插入多个记录。 以下命令同时插入三个记录

验证数据将显示以下输出

SQL server insert data

3. 有时,我们希望存储记录而不给出所有列的名称。 在这种情况下,我们可以使用以下语句,其中我们只指定部分字段。 所有未指定的字段将添加 NULL 值,标识列除外。

该语句已成功执行。 验证数据将显示以下输出

SQL server insert data

INSERT 与 SELECT 语句

SQL Server 还允许我们使用 INSERT INTO SELECT 语句将记录从一个表插入到另一个表。 假设我们要将 'Student' 表数据插入到 'Student_info' 中。 我们可以使用以下语句来实现

该语句已成功执行。 验证数据将显示以下输出

SQL server insert data

要阅读更多信息,请点击此处

如何插入并返回插入的值?

SQL Server 提供了 OUTPUT 子句,用于捕获插入到定义的表中的值。 我们可以使用以下语句来解释这个概念,该语句将新记录插入到 'Student' 表中并返回 'Marks' 列的插入值

这是输出

SQL server insert data

如果我们想从多个列中捕获插入的值,我们需要在输出中指定列,如下所示

这是输出

SQL server insert data

如何将显式值插入到标识列中?

我们知道 SQL Server 不会显式指定标识列的值,因为它们会自动为此列提供值。 如果我们尝试这样做,我们会收到以下错误消息

"当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'student' 中的标识列插入显式值。"

但是,SQL Server 允许在某些情况下显式地将值插入到标识列中,例如数据迁移。 我们可以在将值插入到标识列之前执行以下语句来实现

让我们执行以下语句,以便在 Student 表中插入标识列的值

执行此语句后,我们可以看到该语句已正确执行。

SQL server insert data

现在,我们可以执行以下语句来关闭身份插入

本文有助于全面了解 SQL Server 中用于将新行添加到现有表中的 INSERT 语句。