赞
踩
注:
1、此博客借鉴了中国人民大学王珊和萨师煊老师合著的《数据库系统概论(第五版)》,高等教育出版社出版。
2、使用的是MYSQL8.0以上的数据库,工具为MySQL Workbench
3、重点解决外键报错问题```Cannot add or update a child row: a foreign key onstraint fails (databaseexperiment
.sc
, CONSTRAINT sc_ibfk_2
FOREIGN KEY (Cno
) REFERENCES course
(Cno
))
``
#准备工作为:安装好并可以使用的MYSQL,安装过程不在此赘述。
点击Local insatance MYSQL连接进入,初次登入需要输入数据库密码(安装过程中设置的密码)。
点击左上角File ——New Model——取一个名字(databaseexperiment)——Apply——Apply——Finsh。在左边点击刷新就可以看到自己建的连接,双击(加粗表示连接,正在使用这个连接)。
建成的表还可以进行再次修改 把鼠标放到course(数据库里大小写都一样)表上,点击第二个按钮就可以再次修改,修改后Apply就OK了。
如图所示。
# 创建Student表
create table STUDENT
(Sno char(20)primary key,
Sname char(20)unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
#单句执行 用时按Ctrl和Enter键
#创建Course表
create table COURSE
(Cno char(4)primary key,
Cname char(40)not null,
Cpno char(4),
Ccredit smallint,
foreign key(Cpno)references COURSE (Cno)
);
#创建SC表
create table SC
(Sno char(20),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno)references STUDENT(Sno),
foreign key(Cno)references COURSE(Cno)
);
# Student插入数据时这样没什么问题。
insert into STUDENT(Sno,Sname,Ssex,Sage,Sdept) values('201215121','李勇','男',20,'CS');
insert into STUDENT(Sno,Sname,Ssex,Sage,Sdept) values('201215122','刘晨','女',19,'CS');
insert into STUDENT(Sno,Sname,Ssex,Sage,Sdept) values('201215123','王敏','女',19,'MA');
insert into STUDENT(Sno,Sname,Ssex,Sage,Sdept) values('201215125','张立','男',19,'IS');
select *from student;#显示表 当然也可以点击再次修改表的右边那个表格图标
#多执行 用时按Ctrl、Shift、Enter键
insert into COURSE(Cno,Cname,Cpno,Ccredit)values(‘1’,‘数据库’,‘5’,4)
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (databaseexperiment
.course
, CONSTRAINT course_ibfk_1
FOREIGN KEY (Cpno
) REFERENCES course
(Cno
))
foreign key(Cpno)references COURSE (Cno)
insert into COURSE(Cno,Cname)values('1','数据库');
insert into COURSE(Cno,Cname)values('2','数学');
insert into COURSE(Cno,Cname)values('3','信息系统');
insert into COURSE(Cno,Cname)values('4','操作系统');
insert into COURSE(Cno,Cname)values('5','数据结构');
insert into COURSE(Cno,Cname)values('6','数据处理');
insert into COURSE(Cno,Cname)values('7','PASCAL语言');
#这一块要先执行,再执行下面那块代码
update COURSE set Cpno='5',Ccredit = 4 where Cno = '1';
update COURSE set Cpno=NULL,Ccredit = 2 where Cno = '2';#注意不能将Cpno=NULL写成Cpno=''
update COURSE set Cpno='1',Ccredit = 4 where Cno = '3';
update COURSE set Cpno='6',Ccredit = 3 where Cno = '4';
update COURSE set Cpno='7',Ccredit = 4 where Cno = '5';
update COURSE set Cpno=NULL,Ccredit = 2 where Cno = '6';
update COURSE set Cpno='6',Ccredit = 4 where Cno = '7';
#虽然SC表也使用了外键,但在Course插入数据之后可以按常规方法插入
#先把Course数据插入之后再对SC表进行插入数据
insert into SC(Sno,Cno,Grade) values('201215121','1',92);
insert into SC(Sno,Cno,Grade) values('201215121','2',85);
insert into SC(Sno,Cno,Grade) values('201215121','3',88);
insert into SC(Sno,Cno,Grade) values('201215122','2',90);
insert into SC(Sno,Cno,Grade) values('201215122','3',80);
select *from SC;
到此Student、Course、SC表就建好了。感谢阅读,祝学业有成!
初学者写的博客难免有缺陷,还请各位提出宝贵意见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。