数据库系统概论习题3

数据库系统概论习题3

题目

假设有如下三个图书数据管理关系模式:

图书表book(bno, bname, author, publisher, price)其属性依次表示图书编号、书名、作者、出版社、单价;

读者表reader(cardno, rname, sex, address)其属性依次表示借书证号、姓名、性别、地址;

借阅表rb(cardno, bno, date)其属性依次表示借书证号、图书编号、借阅日期

用SQL 操作命令完成下列操作:

  1. 向rb关系表中插入数据(20220006, stu00001, 2022-3-23)

  2. 将所有图书的单价增加5元

  3. 删除“高等教育”出版社所有图书的借阅记录

  4. 在图书表上,以出版社升序建立索引,如出版社相同则按单价降序建立索引

  5. 建立一个“清华大学”出版社图书的视图,视图名称为qhpublisher_view,包括图书编号、书名、作者、单价

  6. 将图书表book的查询和插入权限授予用户“李明”,并允许李明继续将权限授予他人

  7. 创建角色R1,将图书表book的查询和更新的权限授予该角色

  8. 收回用户zhao对读者表reader中姓名(rname)的修改权限

  9. 用户zhang具有查询每个出版社图书的最高单价、最低单价、平均单价的权限,但他不能查看每本书的单价。(提示:可借助视图机制)

代码:

--1. 创建“图书管理”数据库。
create database 图书管理;
 

--2. 创建图书表book,price属性的数据类型为Numeric(4,1),其余属性的数据类型均为char(10)。
create table book(
bno char(10) primary key,
bname char(10),
author char(10),
publisher char(10),
price Numeric(4,1)
);
 
--3. 创建借阅基本表rb,其中cardno属性的数据类型为char(5),date属性的数据类型为datetime。

--创建读者表
create table reader(
cardno char(5) primary key,
rname varchar(20),
sex char(2),
address varchar(50)
);
--创建借阅表
create table rb(
cardno char(5),
bno char(10),
date datetime,
primary key(cardno,bno),
foreign key(cardno) references reader(cardno),
foreign key(bno) references book(bno)
);

--1.  向rb关系表中插入数据(20220006, stu00001, 2022-3-23)(√)
insert 
into rb(cardno,bno,date)
values('20220006','stu00001','2022-3-23');
 

--2. 将所有图书的单价增加5元(√)
update book
set price=price+5;
 

--3. 删除“高等教育”出版社所有图书的借阅记录(√)
delete from rb
where bno =
(
select bno 
from book
where book.bno=rb.bno and publisher='高等教育'  
);

--4. 在图书表上,以出版社升序建立索引,如出版社相同则按单价降序建立索引(√)
create index bookUnique on book(publisher asc,price desc);
 

--5. 建立一个“清华大学”出版社图书的视图,视图名称为qhpublisher_view,包括图书编号、书名、作者、单价(√)
create view qhpublisher_view
as
select bno,bname,author,price
from book
where publisher='清华大学';
 

--6. 将图书表book的查询和插入权限授予用户“李明”,并允许李明继续将权限授予他人(√)

create user 李明 for login p5;

grant select,insert
on book
to 李明
with grant option;
 

--7. 创建角色R1,将图书表book的查询和更新的权限授予该角色(√)
create role R1;

grant select,update
on book
to R1;
 

--8. 收回用户zhao对读者表reader中姓名(rname)的修改权限
create user zhao for login p2;

revoke update (rname)
on reader
from zhao;

 

--9. 用户zhang具有查询每个出版社图书的最高单价、最低单价、平均单价的权限,但他不能查看每本书的单价。(提示:可借助视图机制)(√)
create user zhang for login p1;

create view bookView(publisher,maxPrice,minPrice,avgPrice)
as 
select publisher,max(price),min(price),avg(price)
from book
group by publisher;

grant select
on bookView
to zhang;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值