[sql server] SELECT INTO 和 INSERT INTO SELECT

INSERT INTO 表名称 VALUES (值1, 值2,....) --插入单条数据,全字段都要有值
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) --插入单条数据 部分字段,部分值

INSERT INTO table_name (列1, 列2,...) VALUES
(值1, 值2,....),
(值1, 值2,....),
(值1, 值2,....),
(值1, 值2,....)
--插入多条语句

1.INSERT INTO SELECT语句

语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

或者:Insert into Table2 select  *  from Table1

注意:(1)要求目标表Table2必须存在,并且字段field,field2...也必须存在

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2...中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

第一种,当要插入的表(Student_back)不存在时
--把表 Student 中性别为 '男' 的学生信息 插入到表 Student_back(不存在) 中
select * into Student_back from Student where S_Sex='男'

未指定具体列,就会自动创建一个跟(Student)一样的表并把数据插入
指定具体要插入的列就会根据指定的列创建一个表,并把数据插入

2.SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

第二种,当要插入的表本身便存在时
--把表 Student 中性别为 '女' 的学生信息 插入到表 Student_back(存在)中
insert into Student_back(S_StuNo,S_Name,S_Sex,S_Height)(新表)
select S_StuNo,S_Name,S_Sex,S_Height from Student(旧表)
where S_Sex='女'

因为字段 S_Id 是标识列,不能有显示插入的值,所以这里必须指定要插入的列。
摘自:https://blog.csdn.net/qq_21960819/article/details/88778116

https://www.cnblogs.com/piaoyangguoguo/p/8276928.html

 

猜你喜欢

转载自www.cnblogs.com/onionfly/p/11027768.html