SQL 基础命令问题 insert

create table 学生表
(学号 nchar(10) primary key,
姓名 nchar (8) check (len(姓名)>=2 and len(姓名)<=5),
专业名 nchar(20),
性别 nchar(2) default '男' check(性别='男' or 性别='女'),
出生日期 smalldatetime,
入校成绩 nchar(3) check (入校成绩 between 200 and 700),
照片 image,
备注 nvarchar(500))
create table 课程表
(课程号 nchar(3) primary key check (课程号 like '[0-9][0-9][0-9]'),
课程名称 nchar(10),
任课老师 nchar(10),
学分 nchar(10))
create table 成绩表
(学号 nchar(10) ,
课程号 nchar(3) ,
成绩 nchar(100) check (成绩 between 0 and 100),
foreign key (学号) references 学生表(学号),
foreign key (课程号) references 课程表(课程号))
Insert into 成绩表(学号,课程号,成绩) values ('1111111','222','66')

错误提示 :图片说明消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY 约束"FK__成绩表__学号__12C8C788"冲突。该冲突发生于数据库"MYDATEBASE",表"dbo.学生表", column '学号'。
语句已终止。

你“成绩表”的[学号]字段与“学生表”中的[学号]存在约束,并且“成绩表”中的 [课程号]与“课程表”中的[课程号]存在约束。
所以,你在插入"成绩表"之前,应该先确定“学生表”和"课程表"中的数据是否正确。

正确写法是:

 Insert into 学生表(学号,姓名) values('1111111','张三')
Insert into 课程表(课程号,课程名称) values('222','语文')
Insert into 成绩表(学号,课程号,成绩) values ('1111111','222','66')

首先,你复制的创建表语句应该不全吧,按照上面的报错,可以看出:

成绩表中的<学号>和学生表中的<学号>存在**外键约束**,意思就是:'成绩表'中的<学号>范围必须在'学生表'<学号>范围之内,而你的学号='1111111'不在学生表内,所以就报错了