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

注:
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表就建好了。感谢阅读,祝学业有成!

初学者写的博客难免有缺陷,还请各位提出宝贵意见!

  • 61
    点赞
  • 268
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
数据库系统概论第五版》是由美国加州大学河滨分校Elmasri Ramez和Navathe Shamkant著作的一部经典数据库教材。第十章主要讲述了数据库安全和授权管理的相关内容。 在数据库系统中,安全性是非常重要的一个方面。因为数据库中包含了大量的敏感信息,如个人隐私数据、商业机密等,因此必须要有一套严格的安全机制来保护这些信息不被未经授权的人员访问、修改或删除。第十章首先介绍了基本的安全概念,如认证、授权、审计等,并详细讨论了数据库中的安全问题和常见的安全威胁。 在保护数据库安全方面,授权管理是非常重要的一环。合理地设置和管理用户的权限可以有效地保护数据库的机密性和完整性。在第十章中,作者详细介绍了授权管理的基本原则和方法,并对常见的授权策略进行了解释和比较。同时,还介绍了数据库中的访问控制和角色管理等相关内容。 此外,第十章还讨论了数据库中的审计功能。审计是指记录和追踪对数据库的各种操作,可以帮助管理员查找和解决数据库中的安全问题。本章还介绍了审计的基本原理和方法,以及如何在实际数据库系统中实施审计功能。 综上所述,《数据库系统概论第五版》第十章主要涵盖了数据库安全和授权管理的相关内容,对于学习和理解数据库系统的安全性和管理性能够起到很好的指导作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值