1. 什么是insert into select
在SQL语言中,insert into select是一种常用的语句,可以把查询结果插入到目标表中。其语法如下:
INSERT INTO 目标表名 (列1, 列2, 列3...)
SELECT 列1, 列2, 列3...
FROM 源表名
WHERE 条件
上述语句可以把源表查询结果中筛选出的数据插入到目标表的指定列中。
2. 实例演示insert into select使用方法
2.1 创建测试表
为了演示insert into select的使用方法,我们需要首先创建一个测试表,并往其中添加一些测试数据。代码如下:
CREATE TABLE test_table (
id INT,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
score FLOAT
);
INSERT INTO test_table (id, name, age, gender, score)
VALUES (1, '张三', 20, '男', 85.5),
(2, '李四', 22, '男', 91),
(3, '王五', 21, '女', 79.5),
(4, '赵六', 23, '男', 66),
(5, '小七', 20, '女', 88);
执行以上代码后,我们成功创建了一个名为test_table的表,并向其中插入了5条数据。
2.2 从源表中查询数据
现在我们需要从test_table表中查询出那些年龄小于22岁的学生信息,代码如下:
SELECT id, name, age, gender, score
FROM test_table
WHERE age < 22
执行代码后,我们可以得到以下结果:
id | name | age | gender | score |
---|---|---|---|---|
1 | 张三 | 20 | 男 | 85.50 |
3 | 王五 | 21 | 女 | 79.50 |
5 | 小七 | 20 | 女 | 88.00 |
可以看到,查询出的结果符合我们的期望,现在我们需要将这些数据插入到另外一张表中。
2.3 把查询结果插入到目标表
现在我们创建一张新表test_new_table,用于存储年龄小于22岁的学生信息,代码如下:
CREATE TABLE test_new_table (
id INT,
name VARCHAR(50),
age INT
);
现在,我们可以使用insert into select语句,将刚刚查询出的数据插入到test_new_table表中,代码如下:
INSERT INTO test_new_table (id, name, age)
SELECT id, name, age
FROM test_table
WHERE age < 22
执行代码后,我们可以查看test_new_table表中的数据,代码如下:
SELECT *
FROM test_new_table
执行代码,查看结果如下:
id | name | age |
---|---|---|
1 | 张三 | 20 |
3 | 王五 | 21 |
5 | 小七 | 20 |
可以看到,在test_new_table表中成功插入了符合条件的3条数据。
3. 总结
在SQL语言中,insert into select是一个非常常用的语句,可以将查询结果插入到目标表中。它的用法非常简单明了,只需要按照语法格式正确书写即可。使用这个语句,可以大量减少编写SQL语句的时间和精力。
在实际开发中,我们经常需要使用insert into select来完成数据的复制、转移等操作。掌握这个语句的使用方法,对于提高代码的编写效率和数据处理能力都是非常有帮助的。