SQL基础 insert table_name_1 (field1,field2,...) select value1,value2,... from table_name_2 ...
今天继续学习SQL基础部分,其中书上给出一个案例,源码如下:
insert 课程注册 (学号,课程号,教师编号,专业代码,专业学级,选课类型,学期,学年,成绩,学分) select distinct 学生.学号,教师任课.课程号,教师任课.教师编号,教学计划.专业代码, 教学计划.专业学级,教学计划.课程类型,教学计划.开课学期,0,0,0 from 学生 join 班级 on 学生.班级代码=班级.班级代码 join 教学计划 on 班级.专业代码=教学计划.专业代码 join 教师任课 on 教学计划.课程号=教师任课.课程号
其中的语法是:
insert table_name_1 (field1,field2,...) select value1,value2,... from table_name_2
...
或者
Insert into table_name_1 select * from table_name_2
应用案例:
在项目中,需要统计数据,从基础表中的数据进行统计,并插入到汇总表中
在书中的案例,就是查询【学生】、【班级】、【教学计划】、【教师任课】表中的数据,插入到【课程注册】表中进行汇总
field 必须与 values 须一致
注意:
(1)要求目标表 table_name_1 必须存在,并且字段field,field2...也必须存在
(2)注意 table_name_1 的主键约束,如果 table_name_1 有主键而且不为空,则 field1, field2...中必须包括主键
(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成: Insert into table_name_1 (field1,field2,...) values (select value1,value2,... from table_name_2)