学历改变命运
24小时客服:4008135555/010-82335555
当前位置:首页> 历年试题 > “数据库原理”上机题目汇总(1)

“数据库原理”上机题目汇总(1)

2007年03月06日    来源:   字体:   打印
成绩查询

  某系统有如下数据库,其中存放了三个表:

  Project (PID, Pname, city, principal)

  注:工程(工程号,工程名,所在城市,负责人)

  要求:工程号为主码, 所有字段都不能为空

  Create table Project9527(PID varchar(8),Pname varchar(8) not null,city varchar(8) not null,principal varchar(8) not null,primary key (PID))

  Bank (BID,Bname,city)

  注:银行(银行号,银行名,所在城市)

  要求:银行号为主码, 银行名唯一,所有字段不为空。

  create table Bank9527(BID varchar(4),Bname varchar(8) unique not null,city varchar(8) not null,primary key (BID))

  Loan (PID, BID, money1, Bdate, RDate)

  注:贷款(工程号,银行号,贷款金额, 贷款日期, 偿还日期)

  要求:工程号和银行号作为主码,工程号为参照工程表的主码的外码,银行号为参照银行表的主码的外码, 所有字段不为空,偿还日期必须迟于贷款日期或者为空。

  create table Loan9527(PID varchar(8) not null,BID varchar(4) not null,money1 int not null,Bdate datetime not null,

  Rdate datetime,primary key(PID,BID),foreign key(PID) references project9527(PID),foreign key (BID) references Bank9527(BID),check(Bdate<Rdate or Rdate is null))

  试用SQL语言完成下列功能:

  1.在数据库中建立上述三个表,请使用英文表名和属性名(满足上述表的每个要求)。

  2.往表中插入数据

  工程(101,'地铁','北京','刘阳')

  (102,'教学楼','济南','张虎')

  insert into project9527 values('101','地铁','北京','刘阳')

  insert into project9527 values('102','教学楼','济南','张虎')

  银行(201,'工商银行','北京')

  (202,'农业银行', '济南')

  (203,'建设银行', '济南')

  insert into Bank9527 values('201','工商银行','北京')

  insert into Bank9527 values('202','农业银行', '济南')

  insert into Bank9527 values('203','建设银行', '济南')

  贷款 (101,201,300000,2005-11-10,null)

  (101,202,3000000,2005-11-15, 2006-11-28)

  (102,202,200000,2006-10-15, null)

  (102,203,500000,2005-5-6, null)

  insert into Loan9527 values('101','201',300000,'2005-11-10',null)

  insert into Loan9527 values('101','202',3000000,'2005-11-15', '2006-11-28')

  insert into Loan9527 values('102','202',200000,'2006-10-15', null)

  insert into Loan9527 values('102','203',500000,'2005-5-6', null)

  3.SQL语句完成下列查询:

  a)列出所有工程和银行在同一城市的贷款记录,包括工程名、银行名、贷款金额、贷款日期。

  select project9527.PID ,Bank9527.BID, Bdate,money1 from project9527,Bank9527 ,Loan9527 where

  project9527.PID=Loan9527.PID and Bank9527.BID=Loan9527.BID and project9527.city=Bank9527.city

  b)找出贷款记录大于1次的工程名。

  select Pname,count(*) as 贷款记录 from project9527,Loan9527 where project9527.PID=Loan9527.PID

  group by Pname having COUNT(Bdate)>1

  c)列出2005年贷款总额超过300万的工程的工程号、工程名和贷款总金额。

  select Project9527.PID ,Pname,sum(money1)as 贷款总金额 from Project9527,Loan9527

  where Project9527.PID=Loan9527.PID and ('2005-1-1'<=Bdate and Bdate<'2006-1-1') group by

  Project9527.PID ,Pname having sum(money1)>3000000

  4.完成如下更新(15分):

  今天是2006年10月18日,“教学楼”工程还清了其所有贷款,请在数据库中更新相应记录。

  update Loan9527 set Rdate='2006-10-18' where PID in (select PID from project9527 where pname='教学楼')

  5.使用游标完成如下操作:

  经过调查发现,“地铁”工程所有未偿还的贷款记录的贷款时间应该在2006-11-11日,做出以上更新。

  declare c1 cursor for

  select Bdate from project9527,Loan9527 where project9527.PID=Loan9527.PID and

  Rdate is null

  open c1

  declare @x datetime

  fetch next from c1 into @x

  while @@fetch_status=0

  begin

  update Loan9527 set Bdate='2006-11-11'

  where Bdate=@x

  fetch next from c1 into @x

  end

  close c1

  deallocate c1

  6.列出同时满足如下条件的银行的银行号和银行名(20分):

  a)该银行在济南。

  b)贷出款的总金额大于与其在同一地区的其他任何银行的贷出款的总金额。

  select Bank9527.BID,Bname from Bank9527,Loan9527 where Bank9527.city='济南' and Bank9527.BID=Loan9527.BID

  group by Bank9527.BID,Bname

  having sum(money1)>= all(select sum(money1) from Loan9527

  group by Loan9527.BID )

关注添加

扫码添加学习顾问

了解考试计划,进行学习规划
备战考试,获取试题及资料

扫码下载APP

海量历年试题、备考资料
免费下载领取

扫码进入微信小程序

每日练题巩固、考前模拟实战
免费体验自考365海量试题

免费题库

新人有礼
关闭