SQL研习录(16)——INSERT INTO SELECT语句
版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、INSERT INTO SELECT语句
如果需要将一个表中的数据复制到另一个现有的表中,则可以使用INSERT INTO SELECT语句,它可以在一个表中复制数据,然后将数据插入到一个现有的表中,且这个表中任何现有的数据都不会受影响
1、基本语法
如果需要将一个表中的所有列的数据复制到另一个已存在的表中,则可以使用以下语法:
INSERT INTO _table2_
SELECT * FROM _table1;_
如果需要将一部分列的数据插入到现有的表中,则可以使用以下语法:
INSERT INTO _table2_
_(column_name(s))_
SELECT _column_name(s)_
FROM _table1;_
2、示例
首先,让我们来创建一组测试数据:一个学生表(student)和一个空表(student1),代码如下:
-- 创建表
CREATE TABLE student(
s_id varchar(50) NOT NULL PRIMARY KEY,
s_name varchar(50),
s_gender varchar(50)
)
-- 插入数据
INSERT INTO student (s_id,s_name,s_gender) VALUES ('S101','Lucy','female');
INSERT INTO student (s_id,s_name,s_gender) VALUES ('S102','Jack','male');
INSERT INTO student (s_id,s_name,s_gender) VALUES ('S103','Bruce','male');
INSERT INTO student (s_id,s_name,s_gender) VALUES ('S104','Tom','male');
INSERT INTO student (s_id,s_name,s_gender) VALUES ('S105','Jayce','male');
-- 创建表
CREATE TABLE student1(
s_id varchar(50) NOT NULL PRIMARY KEY,
s_name varchar(50),
s_gender varchar(50)
)
1、我们将student中的所有列的数据复制到student1中,代码如下:
INSERT INTO student1 SELECT * FROM student;
查询student1中的数据,显示执行结果如下:
2、清空student1中的数据后,我们将student中的期望复制列的数据复制到student1中,代码如下:
-- 清空数据
DELETE FROM student1;
-- 复制s_id,s_name的数据到student1中
INSERT INTO student1 (s_id,s_name)
SELECT s_id,s_name FROM student
查询student1中的数据,显示执行结果如下: