在SQL Server中,INSERT
语句用于向表中添加新的行(记录)。基本语法遵循SQL标准,但SQL Server也支持一些特定于它的功能。下面是一些INSERT
语句的基本用法示例。
基本插入
假设你有一个名为Employees
的表,它有三个列:EmployeeID
(员工ID,整型且为主键,通常自动增长),FirstName
(名字,字符串类型),和LastName
(姓氏,字符串类型)。注意,如果EmployeeID
是自增的,你不需要在INSERT
语句中指定它。
INSERT INTO Employees (FirstName, LastName)
VALUES ('John', 'Doe');
这条语句向Employees
表中插入了一行新数据,其中名字为John
,姓氏为Doe
。
插入带有自动增长ID的表
如果EmployeeID
是自增的,并且你希望在插入时不需要显式地指定它,你可以省略该列。SQL Server会自动为新行生成一个唯一的EmployeeID
。
插入多行
SQL Server 允许你一次插入多行数据,只需在VALUES
子句中为每个新行指定值,并用逗号分隔它们。
INSERT INTO Employees (FirstName, LastName)
VALUES ('Jane', 'Doe'), ('Jim', 'Beam');
这条语句会向Employees
表中添加两行数据,一行是名字为Jane
,姓氏为Doe
,另一行是名字为Jim
,姓氏为Beam
。
插入查询结果
你还可以将另一个查询的结果插入到表中。这在数据迁移、备份或报表生成时特别有用。
INSERT INTO Employees (FirstName, LastName)
SELECT FirstName, LastName
FROM TempEmployees;
这里,我们假设有一个名为TempEmployees
的临时表,它包含了我们想要插入到Employees
表中的数据。这条语句会将TempEmployees
表中的所有行插入到Employees
表中。
注意事项
- 确保你插入的数据类型与表中列的数据类型相匹配。
- 如果表中包含任何非空(NOT NULL)约束的列,确保你在
INSERT
语句中为该列提供了值,或者该列有默认值。 - 如果你正在插入自增主键列的值,并且手动指定了一个值,确保该值不与表中现有的任何值冲突,除非你在插入时明确指定了覆盖现有值的逻辑(这通常不是推荐的做法)。
- 插入大量数据时,考虑使用事务来确保数据的一致性。
- 在插入敏感或重要数据时,确保使用适当的错误处理和事务日志记录机制。