云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据库实验题目和答案

数据库实验题目和答案

  • 62 次阅读
  • 3 次下载
  • 2025/4/30 15:58:20

? 按照如下方式重新定义四张表:

? 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 ? 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供

约束名

? 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books(

bookId number(9,0)

constraint BooksKey primary key, title varchar(80), author varchar(40), year integer,

category varchar(15) constraint B1 not null ); commit;

? 定义新的customers表,其所拥有的属性与属性类型与原有的customers表

一致

? 以表级完整性的方式定义属性cid为主码

? 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供

约束名

create table Customers ( cid number(9,0), cname char(40)

constraint C1 unique, age integer, primary key(cid) ); commit;

? 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一

? 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名

? 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同

时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删除与它相关的购买记录

? 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定

义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

constraint bookidFKey references Books(bookid) on delete cascade, pdate date,

pprice number(8,2),

constraint PurchasesKey primary key(cid,bookid),

constraint cidFKey foreign key(cid) references customers(cid) ); commit;

? 定义新的pricing表,其所拥有的属性与属性类型与原有的pricing表一致 ? 以列级完整性的方式定义属性booId为主码,同时在定义的时候必须提供约

束名

? 定义约束,要求当书的format是‘paperback’时,当前价格不能超过50 create table Pricing(

bookId number(9,0)

constraint PricingKey primary key, format varchar(15), price number(9,2),

constraint P1 check (format <>'paperback' OR price<=50) );

commit;

? 创建如下的触发器:

? 定义一个AFTER行级触发器,当修改books表的bookid后,自动修改

purchases和pricing表中与它相关记录中的bookid(只允许使用一个触发器) create trigger alter_bookid after update on books for each row begin

if(:new.bookid<>:old.bookid) then update purchases

set bookid = :new.bookid where bookid = :old.bookid; update pricing

set bookid = :new.bookid where bookid = :old.bookid; end if; end;

? 定义如下的一张表:

? Score(Sno, Chinese, Math, English, Total)

? Sno是主码

? Chinese, Math, English分别表示三门课成绩,并且三门课的成绩取值范围是

0-100且均不能为空值

? Total的取值需要正好是三门课成绩总和

? 定义一个AFTER行级触发器,当修改Score表中某门课的成绩后,自动修改

Total

create table Score(

Sno number(9,0)

constraint SnoKey primary key, Chinese number(9,2)

constraint S1 check(Chinese BETWEEN 0 and 100) constraint S2 not null, Math number(9,2)

constraint S3 check(Math BETWEEN 0 and 100) constraint S4 not null, English number(9,2)

constraint S5 check(English BETWEEN 0 and 100) constraint S6 not null, Total number(9,2),

constraint S7 check (total = chinese+math+english) );

定义触发器

create trigger update_score before update on score for each row begin

:new.total := :new.chinese+:new.math+:new.english; end;

利用书本上的3张表:student, course, sc

问题1:对各门课程成绩进行分段统计,并有类似如下的输出结果

课程: 数据库 0<成绩<60 0人 课程: 数据库 60<成绩<80 0人 课程: 数据库 81<成绩<100 1人 课程: 数学 0<成绩<60 0人 课程: 数学 60<成绩<80 1人 课程: 数学 81<成绩<100 2人 课程: 数据结构 0<成绩<60 0人

课程: 数据结构 60<成绩<80 1人 课程: 数据结构 81<成绩<100 1人

解答

set serveroutput on declare

a number; --0-60分人数 b number; --61-80分人数 c number; --81-100分人数

cname course.cname%type; --临时存储课程名

--sc.cno游标,遍历sc表中的每一门课,得到课程号cno cursor cur_sc_cno is select DISTINCT cno from sc;

--sc.grade游标,根据cur_sc_cno游标中的课程号遍历成绩grade cursor cur_sc_grade(var_cno in sc.cno%type) is select grade from sc

where cno = var_cno;

--course.cname游标,根据cur_sc_cno游标中的课程号遍历课程名cname cursor cur_course_cname(var_cno in course.cno%type) is select cname from course

where cno = var_cno; begin

--遍历sc表的cno

for record_sc_cno in cur_sc_cno loop

a:=0; --初始化a,b,c b:=0; c:=0;

--根据record_sc_cno.cno遍历sc表的grade

for record_sc_grade in cur_sc_grade(record_sc_cno.cno) loop

if record_sc_grade.grade > 0 and record_sc_grade.grade < 61 then a:=a+1; end if;

if record_sc_grade.grade > 60 and record_sc_grade.grade < 81 then b:=b+1; end if;

if record_sc_grade.grade > 80 and record_sc_grade.grade < 101 then c:=c+1; end if;

搜索更多关于: 数据库实验题目和答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

? 按照如下方式重新定义四张表: ? 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 ? 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 ? 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constra

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com