SDUT数据库原理——第三章作业参考

第3章 作业: 

利用SQL语句完成如下操作:

第一大题:设有一个设备管理系统的模式(数据库)E-P-U,已知在数据库中有下列基本表,结构如下:

设备表EquipmentEno, Ename, Ebuyday, Etypeid, Etypename

人员表PersonPno, Pname, Psex, Pbirth, Pposition

设备使用表Use1Eno, Pno, Borrowday, Usetime, Fee

1. 为用户ADMIN创建模式(数据库)E-P-U,然后在其中创建EquipmentPersonUse1三个表。

1.答案

CREATE SCHEMA E-P-U AUTHORIZATION ADMIN

  CREATE TABLE Equipment

     ( Eno CHAR(9) PRIMARY KEY,

      Ename CHAR(20),

      Ebuyday DATE,

      Etypeid CHAR(9),

      Etypename CHAR(20)

);

  CREATE TABLE Person

     ( Pno CHAR(9) PRIMARY KEY,

      Pname CHAR(20),

      Psex CHAR(2),

      Pbirth DATE,

      Pposition CHAR(20)

);

  CREATE TABLE Use1

     ( Eno CHAR(9),

      Pno CHAR(9),

      Borrowday DATE,

      Usetime TIME,

      Fee SMALLINT,

      PRIMARY KEY (Eno,Pno),

      FOREIGN KEY (Eno) REFERENCES Equipment(Eno),

      FOREIGN KEY (Pno) REFERENCES Person(Pno)

);

2.写出完成如下操作的SQL查询语句:

1)查询设备使用表Use1中每种设备收费金额超过200的设备编号和收费金额。

2)检索借出设备名称(Ename)为“笔记本”的员工姓名,借出日期和收费金额。

3)检索借出设备使用时间(Usetime)超过一个月的员工姓名、设备编号。

4)检索借用设备的收费金额超过1000元的员工姓名、设备编号、设备名称。

2. 答案

(1) SELECT Eno,Fee

   FROM Use1

   WHERE Fee>200

(2) SELECT Pname,Borrowday,Fee

FROM Equipment,Person,Use1

   WHERE Ename=‘笔记本’ AND Equipment.Eno=Use1.Eno AND Person.Pno=Use1.Pno

(3) SELECT Pname, Eno

   FROM Person,Use1

   WHERE Usetime>31 AND Person.Pno=Use1.Pno

(4) SELECT Pname, Equipment.Eno, Ename

   FROM Equipment, Person,Use1

   WHERE Fee>1000 AND AND Equipment.Eno=Use1.Eno AND Person.Pno=Use1.Pno

第二大题:

1.创建项目表Item。(要求:包含主键约束和check约束idate >’2017-05-01’)。

1.CREATE table Item

( ino VARCHAR2(8) primary key ,

iname VARCHAR2(50),

type VARCHAR2(30),

idate ADTE CONSTRAINT check (idate >’2017-05-01’)

)

2.添加一个项目记录,项目号为‘2017001’,项目名称为‘400M’,项目类型为‘田径’,比赛时间为‘2017-5-22’。

2.INSERT into Item(ino,iname,type,idate) VALUES (‘2017001’,’400M’,’ 田径’,’2017-5-22’)

3.将运动员名称为‘张晓满’参与的项目名次修改为1。

3.UPDATE Participate set ranking = 1

WHERE ano IN ( SELECT ano FROM Athlete WHERE aname= 张晓满)

4.删除运动员名称为‘杨秀芳’的运动员信息。

4.Delete from Athlete where aname= 杨秀芳

5.查询参与项目表中名次为1的运动员编号和姓名。

5.Select ano,anem  From Athlete  Where ano in(

select ano   from Participate   where ranking=’1’)

或:Select Athlete.ano,anem

From Athlete, Participate

Where Athlete.ano= Participate.ano and ranking=’1’

6.将参与项目表Participate的查询权限、修改权限授予用户zhu,并允许该用户将此权限授予其他用户。

6.GRANT SELECT,UPDATE ON Participate TO zhu WITH GRANT OPTION

7.定义视图,完成如下功能:输出没有运动员参加的项目信息。

7.CREATE view v_Athlete

As

SELECT *

From Athlete

Where ano not in(

select ano from Participate )

8.检索参与项目名称为“400M接力”的运动员名称(aname)和取得的名次。

8.Select aname,ranking

From Athlete, Participate,Item

Where Athlete.ano= Participate.ano and Item.ino= Participate.ino and iname=’400M接力

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

救救孩子√

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值