CREATE DATABASE 学生信息管理数据库
CREATE TABLE Student
(
Sno char(10)primary key,
Sname char(10)not null,
Ssex char check(Ssex='男' OR Ssex='女'),
Sgrade char(10)not null,
Sclass char(10)not null,
Smajor char(20)default'计算机科学与技术',
Sdept char(20)default'信息工程学院',
)
CREATE TABLE SC
(
Sno char(10)foreign key(Sno)references Student(Sno),
Sname char(10)foreign key(Sname)references Student(Sname),
Scourse char(20)not null,
Grade tinyint check(Grade>=0 and Grade<=100)
)
显示的错误时:在被引用表 'Student' 中没有与外键 'FK__SC__Sname__192BAC54' 的引用列的列表匹配的主键或候选键。
CREATE TABLE Student
(
Sno char(10)primary key,
Sname char(10)not null,
Ssex char check(Ssex='男' OR Ssex='女'),
Sgrade char(10)not null,
Sclass char(10)not null,
Smajor char(20)default'计算机科学与技术',
Sdept char(20)default'信息工程学院',
)
CREATE TABLE SC
(
Sno char(10)foreign key(Sno)references Student(Sno),
Sname char(10)foreign key(Sname)references Student(Sname),
Scourse char(20)not null,
Grade tinyint check(Grade>=0 and Grade<=100)
)
显示的错误时:在被引用表 'Student' 中没有与外键 'FK__SC__Sname__192BAC54' 的引用列的列表匹配的主键或候选键。
Sname char(10)foreign key(Sname)references Student(Sname)字段创建外键去引用他?
主都没有,引用什么??
(
Sno char(10)foreign key(Sno)references Student(Sno),
Sname char(10)foreign key(Sname)references Student(Sname), --通常引用了主表中的主键列就可以建立两表间的关系。如果要限定名称应在主表中建立唯一性约束
Scourse char(20)not null,
Grade tinyint check(Grade>=0 and Grade<=100)
)
Sname char(10)foreign key(Sname)references Student(Sname),
这个作为外键就可以了,
不然就要:
Sno char(10)primary key,
Sname char(10)primary key,
但是也没必要你只要把Sno设置为外键就可以了。