SQL Server (Transact-SQL) INSERT INTO 关键字用于在表中插入新记录。使用 INSERT INTO 关键字有两种方法,如下所述。
语法
以下语法指定要插入的列名称和相应的值。
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
以下语法仅指定值。因此,必须按照与表中的列相同的顺序指定值。
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
示例:
考虑一个包含名为 Employee 的表的数据库具有以下记录 :
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要在 Employee 表中插入新记录,查询是:
INSERT INTO Employee (EmpID, Name, City, Age, Salary)
VALUES (7, 'Suresh', 'Mumbai', 29, 2900);
INSERT INTO Employee
VALUES (8, 'Zayne', 'Oslo', 31, 3400);
-- 查看结果
SELECT * from Employee
现在Employee表将包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
7 | Suresh | Mumbai | 29 | 2900 |
8 | Zayne | Oslo | 31 | 3400 |
仅在指定列中插入数据:要在指定列中插入数据,需要指定列名。请参阅下面给出的查询:
INSERT INTO Employee (EmpID, Name, Age)
VALUES (7, 'Suresh', 29);
-- 查看结果
SELECT * from Employee
现在 Employee 表将包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
7 | Suresh | 29 |
使用另一个表填充一个表
通过使用 INSERT INTO SELECT 关键字,可以使用另一个表填充一个表。请注意,另一个表应该具有填充第一个表所需的字段集。
语法
在 SQL Server 中使用 INSERT INTO SELECT 关键字的语法 (Transact -SQL) 如下:
INSERT INTO table1 [(column1, column2, ...)]
SELECT column1, column2, ... FROM table2
[WHERE condition];
示例:
考虑一个数据库,其中包含名为 Employee 和 HREmployee 的表,其内容如下记录:
表 1:Employee 表
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
表 2:HREmployee 表
HREmployee 表不包含任何记录,并具有以下字段 - HRID、Name和 Address。
HREmployee表的给定字段可以使用Employee填充使用以下查询查询表:
INSERT INTO HREmployee (HRID, Name, Address)
SELECT EmpID, Name, City FROM Employee
WHERE EmpID IN (1, 4, 5);
-- 查看结果
SELECT * from HREmployee
现在HREmployee表将包含以下记录:
HRID | Name | Address |
---|---|---|
1 | John | London |
4 | Kim | Amsterdam |
5 | Ramesh | New Delhi |