SQL INSERT INTO…SELECT语句
INSERT INTO…SELECT语句
SQL INSERT INTO… SELECT 语句用于从现有表中添加/插入一个或多个新行到另一个表。该语句是两个不同语句的组合:INSERT INTO和SELECT。
- INSERT INTO语句是数据库管理中最基本且经常使用的语句之一,只需要表的名称和要插入的值。然而,重要的是确保要插入的数据满足表的列(如果有)的约束条件,并且其类型与表列的数据类型匹配。
-
SELECT语句用于从现有数据库表中检索数据。
当这些语句一起使用时,SELECT语句首先从现有表中检索数据,然后INSERT INTO语句将检索到的数据插入到另一个具有相同表结构的表中。
语法
SQL INSERT INTO… SELECT语句的语法如下:
在使用此查询之前,我们必须确保:
- 在我们将要插入数据的数据库中,源表和目标表已经存在。
-
源表和目标表的结构是相同的。
示例
假设我们已经创建了一个名为 CUSTOMERS 的表,其中包含顾客的个人详情,包括姓名、年龄、地址和工资等,如下所示:
现在,使用INSERT语句将值插入到此表中,如下所示−
表格将被创建如下:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
创建另一张表,表名为 BUYERS ,结构与CUSTOMERS表相同。
以下查询将从 CUSTOMERS 表中复制所有记录到 BUYERS 表中 –
验证
如果您使用SELECT语句验证BUYERS表的内容,如下所示:
表将会被创建为 −
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
SQL – 插入特定记录
有时我们只需要向另一张表中添加少量的记录。可以通过使用 WHERE 子句和 SQL INSERT INTO… SELECT 语句来实现。
示例
让我们使用 CREATE 语句创建一个名为 NAMESTARTSWITH_K 的表,该表与 CUSTOMER 表具有相同的结构。
执行以下查询,将名字以字母 k 开头的客户记录从CUSTOMERS表插入到BUYERS表中:
验证
以下是用于验证上述创建的表内容的SELECT语句-
表将会被创建为 –
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
SQL – 插入前N行
LIMIT子句用于过滤查询结果中的行数。您可以使用它来筛选应添加到目标表的前N条记录。
示例
但是,在继续之前,让我们使用以下语句清空BUYERS表中的所有行 –
以下查询将CUSTOMERS表中的前3条记录插入BUYERS表中 –
验证
让我们验证BUYERS表的内容 –
结果表如下 –
ID | 名称 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |