数据库系统概论(第五版)创建Student、Course、SC表的步骤 您所在的位置:网站首页 access使用设计器创建表的方法是什么 数据库系统概论(第五版)创建Student、Course、SC表的步骤

数据库系统概论(第五版)创建Student、Course、SC表的步骤

2024-07-05 02:43| 来源: 网络整理| 查看: 265

注: 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,安装过程不在此赘述。

一、进入MSQL Workbench

点击Local insatance MYSQL连接进入,初次登入需要输入数据库密码(安装过程中设置的密码)。 在这里插入图片描述

二、创建Student、Course、SC表 步骤一

点击左上角File ——New Model——取一个名字(databaseexperiment)——Apply——Apply——Finsh。在左边点击刷新就可以看到自己建的连接,双击(加粗表示连接,正在使用这个连接)。 在这里插入图片描述

步骤二 建表方法一:非代码法建表 1、在Tables上右键点击Create Table…

在这里插入图片描述

2、对表取名字,表的属性名(双击才能填写)、属性类型、PK(主键)、NN(不允许为空)、UQ、、、其他的不再解释右下角有英文。

在这里插入图片描述

3、然后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) ); 三、对Sduent、Course、SC表插入数据时需要注意 (一)、Student表数据插入 # 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键

在这里插入图片描述

(二)、Course表数据插入 但如果Course也按照Student表的方式插入时会有问题

在这里插入图片描述

报错:

在这里插入图片描述 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))

原因是:建Course表使用了以下这条语句,使用了外键,并且外键参考了表Course本身。一开始Course里面没有数据,但插入数据时却参考了Course表自身的Cpno(先修课)属性,违背了一致性和系统完整性。 foreign key(Cpno)references COURSE (Cno) 解决方法: 1、先插入部分数据 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语言'); #这一块要先执行,再执行下面那块代码

在这里插入图片描述

2、再用更新语句“插入”剩余数据 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表数据插入 #虽然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 2018-2019 实验室设备网 版权所有