问题描述
数据库是我们前后端不可缺少的东西,数据库中最多的就是数据,当我们初次插入数据时,在一个表中的数据相对较少时我们可以一行一行的插入,但当我们遇到有逻辑关联的数据时,我们插入就会报错,我们该怎么插入呢?
解决方案
在某个数据库的一张course表中,有cno、cname、cpno、ccredit四个属性列,分别为课程号,课程名,先行课号和成绩,先给大家解释一下什么是先行课就例如我们很多课为基础课,我们必须要先学完基础课才能学习在此课程基础之上的课程。
对于这种有依赖的数据该怎么插入呢?我们最常用的插入语句就是insert语句,但这个语句如果在大批量的数据时这个语句就可能就不是很方便,我们就会用批量插入的方法:
insert into s values('s1','精益','天津'), ('s2','万胜','北京'),('s3','东方','北京'), ('s4','丰泰隆','上海'),('s5','康健','南京')
|
这是一种批量插入的方法,这种方法会相对便捷一点,但当将这种方法应用到这种具有逻辑性的表中时,就会发现这个语句会报错。
insert into course values('1','数据库','5',4), ('2','数学','',2), ('3','信息系统','',4), ('4','操作系统','6',3), ('5','数据结构','7',4), ('6','数据处理','',2), ('7','PASCAL语言','6',4)
|
insert into course values('1','数据库','5',4);insert into course(cno,cname,ccredit) values('2','数学',2);insert into course(cno,cname,ccredit) values('3','信息系统',4);insert into course values('4','操作系统','6',3);insert into course values('5','数据结构','7',4);insert into course(cno,cname,ccredit) values('6','数据处理',2);insert into course values('7','PASCAL语言','6',4);
我们还可以利用另一种方法插入这些数据,就是insert语句中的select语句,这样我们就能批量插入啦。
insert into course select '6','python',null,'周老师','5' select '3','大学英语',null,'贺老师','4' select '2','信息安全','1','马老师','4' select '1','数据库','4','刘老师','5' select '4','概率论','5','王老师','5' select '5','高等数学',null,'张老师','6'
|
结语
在不同的SQL sever版本中会存在命令不兼容的情况,所以在不同的版本中可能会出现报错的情况,本次命令在SQL sever 2008中运行。