数据库原理课程设计题目说明:1、本次课程设计后台DBMS要求使用SQL SEVER,前台应用程序开发工具不限。
2、题目中的所有需求均要求同时使用SQL SEVER的企业管理器、查询优化器等工具和前台应用程序两种方式完成。
3、指导老师:70601:敬茂华70602:崔向南70603:张建波题目1:请按如下需求设计并实现一工程管理信息系统。
某系统有如下数据库,其中存放了三个表: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.cityb)找出贷款记录大于1次的工程名。
select Pname,count(*)as 贷款记录from project9527,Loan9527 where project9527.PID=Loan9527.PID group by Pname having COUNT(Bdate)>1c)列出2007年贷款总额超过300万的工程的工程号、工程名和贷款总金额。
select Project9527.PID ,Pname,sum(money1)as 贷款总金额from Project9527,Loan9527where Project9527.PID=Loan9527.PID and ('2007-1-1'<=Bdate and Bdate<'2008-1-1')group byProject9527.PID ,Pname having sum(money1)>30000004.完成如下更新:今天是2008年10月18日,“教学楼”工程还清了其所有贷款,请在数据库中更新相应记录。
update Loan9527 set Rdate='2006-10-18' where PID in (select PID from project9527 where pname='教学楼')题目2、请为如下需求设计并实现一信息管理系统,并使用游标机制实现相应更新某系统有如下数据库,其中存放了三个表: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)注:贷款(工程号,银行号,贷款金额,贷款日期,偿还日期)要求:工程号和银行号作为主码,工程号为参照工程表的主码的外码,银行号为参照银行表的主码的外码,所有字段不为空,偿还日期必须迟于贷款日期或者为空。
试用SQL语言完成下列功能:1.在SQLSEVER中创建上述表。
2.使用游标完成如下操作:经过调查发现,“地铁”工程所有未偿还的贷款记录的贷款时间应该在2008-11-11日,做出以上更新。
declare c1 cursor forselect Bdate from project9527,Loan9527 where project9527.PID=Loan9527.PID andRdate is nullopen c1declare @x datetimefetch next from c1 into @xwhile @@fetch_status=0beginupdate Loan9527 set Bdate='2008-11-11'where Bdate=@xfetch next from c1 into @xendclose c1deallocate c16.列出同时满足如下条件的银行的银行号和银行名:a)该银行在济南。
b)贷出款的总金额大于与其在同一地区的其他任何银行的贷出款的总金额。
select Bank9527.BID,Bname from Bank9527,Loan9527 where Bank9527.city='济南' and Bank9527.BID=Loan9527.BIDgroup by Bank9527.BID,Bnamehaving sum(money1)>= all(select sum(money1)from Loan9527group by Loan9527.BID )题目3、请根据如下要求设计并实现产品分销管理信息系统。
某公司产品的分销管理系统有如下四个表项:Agent(AID,ANAME,SALARY)注:对应含义为:代理商(代理商编号,姓名,薪水)要求:AID 为主码,所有字段不为空create table Agent9527(AID varchar(8),ANAME varchar(8)not null,SALARY INT NOT NULL,primary key(AID))Customer(CID,CNAME)注:对应含义为:顾客(顾客编号,姓名)要求:编号为主码,所有字段不为空create table Customer9527(CID varchar(8),CNAME varchar(8)not null,primary key(CID))Product (PID,PNAME,PRICE)注:对应含义为:产品信息(编号,名称,价格)要求:编号为主码,所有字段不为空CREATE table Product9527(PID varchar(8),PNAME varchar(8)not null,PRICE real not null,primary key(PID))Orders(OID,BUY_DATE,CID,AID,PID ,QTY ,DOLLARS)注:对应含义为:订单(订单号,购买日期,顾客号,产品号,代理商号,订购数量,订金)要求:订单号为主码,顾客号、产品号、代理商号为外码,分别参照Customer中的CID,Agent 中的AID,和Product 中的PID,订购数量大于0,所有字段不为空。