- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表格
- SQL - 创建表格
- SQL - 显示表格
- SQL - 重命名表格
- SQL - 清空表格
- SQL - 克隆表格
- SQL - 临时表格
- SQL - 修改表格
- SQL - 删除表格
- SQL - 删除表格
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - 选择到
- SQL - 插入到选择
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - UNION 与 JOIN
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 复合键
- SQL - 备用键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 集群索引
- SQL - 非集群索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY 与 ORDER BY
- SQL - IN 与 EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 插入数据到…选择语句
插入数据到…选择语句
SQL 的INSERT INTO... SELECT语句用于从现有表中添加/插入一行或多行到另一个表。此语句是两个不同语句的组合:INSERT INTO 和 SELECT。
INSERT INTO 语句是数据库管理中最基本和最常用的语句之一,只需要表名和要插入的值。但是,务必确保插入的数据满足表列(如果有)的约束条件,并且其类型与表列的数据类型匹配。
SELECT 语句用于从现有的数据库表中检索数据。
当这两个语句一起使用时,SELECT 语句首先从现有表中检索数据,然后 INSERT INTO 语句将检索到的数据插入到另一个表中(如果它们具有相同的表结构)。
语法
以下是 SQL INSERT INTO... SELECT 语句的语法:
INSERT INTO table_new SELECT (column1, column2, ...columnN) FROM table_old;
在使用此查询之前,我们必须确保:
在我们即将插入数据的数据库中,源表和目标表已经存在。
源表和目标表的结构相同。
示例
假设我们创建了一个名为CUSTOMERS的表,其中包含客户的个人详细信息,包括他们的姓名、年龄、地址和工资等,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
现在,使用 INSERT 语句将值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (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);
表将创建为:
ID | 姓名 | 年龄 | 地址 | 工资 |
---|---|---|---|---|
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 表相同。
CREATE TABLE BUYERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查询将CUSTOMERS表中的所有记录复制到BUYERS:
INSERT INTO BUYERS SELECT * FROM CUSTOMERS;
验证
如果您使用 SELECT 语句验证 BUYERS 表的内容,如下所示:
SELECT * FROM BUYERS;
表将创建为:
ID | 姓名 | 年龄 | 地址 | 工资 |
---|---|---|---|---|
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 表相同,如下所示:
CREATE TABLE NAMESTARTSWITH_K ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查询将姓名以字母k开头的客户的记录从 CUSTOMERS 表插入到 BUYERS 表:
INSERT INTO NAMESTARTSWITH_K SELECT * FROM CUSTOMERS WHERE NAME LIKE 'k%';
验证
以下是用于验证上面创建的表内容的 SELECT 语句:
SELECT * FROM NAMESTARTSWITH_K;
表将创建为:
ID | 姓名 | 年龄 | 地址 | 工资 |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
SQL - 插入前 N 行
LIMIT 子句过滤查询中的行数。您可以使用它来过滤应添加到目标表的前 N 条记录。
示例
但是,在继续之前,让我们使用以下语句清空 BUYERS 表中的所有行:
TRUNCATE TABLE BUYERS;
以下查询将 CUSTOMERS 表中的前 3 条记录插入到 BUYERS 表:
INSERT INTO BUYERS SELECT * FROM CUSTOMERS ORDER BY ID ASC LIMIT 3;
验证
让我们验证 BUYERS 表的内容:
SELECT * FROM BUYERS;
结果表将如下所示:
ID | 姓名 | 年龄 | 地址 | 工资 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |