数据库系统概论 第五章课后习题(部分)+ 存储过程习题

本文是《数据库系统概论》的第五章(数据库完整性)的部分课后习题和存储过程习题,题目来源:【2019-2020春学期】数据库作业14:第五章: 数据库完整性 习题 + 存储过程


数据库完整性习题6

假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码:
部门(部门号,名称,经理名,电话),其中部门号为主码。
用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
①定义每个模式的主码;②定义参照完整性;③定义职工年龄不得超过60岁。
(ps:因为之前我就建立过COMPANY数据库,里面含有这两张表,不过关系模式不一样,所以我先将原有的两张表删除)

-- 切换至COMPANY数据库,并删除原来的两张表
USE COMPANY;
DROP TABLE Staff;  /*这里需要注意要先删除Staff表,因为它引用了Dept表的主码作为外码约束,必须先把它删了才删得了Dept表*/
DROP TABLE Dept;

-- 按该题要求新建Dept和Staff表,分别对应部门和职工两个关系模式
CREATE TABLE Dept (
	DNO VARCHAR(10) PRIMARY KEY,
	DNAME VARCHAR(10) UNIQUE,   /*给部门名设置UNIQUE,隐含着NOT NULL*/
	MNAME VARCHAR(10) NOT NULL,  /*经理名*/
	PHONE INT NOT NULL
)
CREATE TABLE Staff (
	SNO VARCHAR(10) PRIMARY KEY,
	SNAME VARCHAR(10) NOT NULL,
	AGE INT CHECK(AGE <= 60 AND AGE > 0) NOT NULL,
	DUTY VARCHAR(8) NOT NULL,  /*职务*/
	SALARY INT NOT NULL,
	DNO VARCHAR(10) REFERENCES Dept(DNO)
)

因为职工表Staff 里的部门号DNO引用的是部门表Dept的主码DNO,所以得先建立Dept表再建立Staff表~
如下图,新建成功!
在这里插入图片描述
在这里插入图片描述
👏值得注意的是:给部门名DNAME设置的UNIQUE键其实某种意义上隐含着不能为空,因为如果出现多个空值的话,他们就是相同的,即违反了UNIQUE键,如下图:
在这里插入图片描述


存储过程习题2

对学生-课程数据库编写存储过程,完成下述功能:
1)统计离散数学的成绩分布情况,即按照各分数段统计人数:
(ps:学生-课程数据库涉及Student、Course、SC三张表,之前在写操作基础篇的时候用到很多次啦,因为目前课程表Course中没有离散数学这个科目,所以我先添加课程:离散数学且同时给SC表添加相应数据)

-- 添加课程:离散数学
INSERT
INTO Course
VALUES ('8', '离散数学', NULL, 4);

SELECT * FROM Course;

(ps:Cpno是先修课的课程号,即学了先修课才能学该课程,我这里就不设置先修课啦,Ccredit是该课程的学分)
在这里插入图片描述

--
  • 45
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值