数据库系统原理上机操作样题及答案.docxVIP

  • 111
  • 0
  • 约1.22万字
  • 约 12页
  • 2023-07-20 发布于湖北
  • 举报

数据库系统原理上机操作样题及答案.docx

数据库系统原理 上机操作样题 一、某物流公司数据库包含以下5个关系: 快递员C(Cno,Cname,Cage,Csalary),分别为快递员编号、快递员姓名、快递员年龄和快递员底薪。 包裹信息P(Pno,Pfrom,Pto,Preceiver,Ptel,Pstatus),分别为物流号、寄出地址、收货地址、收件人姓名、收件人联系方式和包裹状态。 仓库W(Wno,Wname,Waddress),分别为仓库编号、仓库名和仓库地址。 配送D(Cno,Pno,Dtime),分别为快递员编号、物流号和配送时间。 存储S(Wno,Pno),分别为仓库编号和物流号。 其中C由Cno唯一标识,P由Pno唯一标识,W由Wno唯一标识,D由Cno和Pno唯一标识,S由Wno和Pno唯一标识。其中Dtime格式为yyyy-MM-dd(统一格式可直接比较大小) 1. 用SQL查询收件人姓名为 “李四” 的包裹物流号、配送员姓名和配送时间。 1.SELECT P.Pno,Cname,Dtime FROM C,D,P WHERE C.Cno=D.Cno AND P.Pno=D.Pno AND P.Preceiver=李四; 2. 查询2017-4-1至2017-5-1(包括2017-4-1和2017-5-1这两天)配送包裹数量至少为100个的快递员的姓名、年龄和底薪。 2. SELECT c.Cname,c.Cage,c.Csalary FROM c,d WHERE c.Cno = d.Cno AND (d.Dtime BETWEEN 2017-4-1 AND 2017-5-1) GROUP BY Cname HAVING COUNT(*) = 100; 3. 对所有年龄低于40的快递员,若底薪小于2500,则增加400工资,若大于等于2500,则增加200工资。 提示:SQL中的三目条件运算格式:IF(expr1,expr2,expr3),expr1为真则返回expr2的值,否则返回expr3的值。 3.UPDATE C SET Csalary=Csalary+if(Csalary2500,400,200) where Cage40; 4. 给定仓库的名称,输出为在该仓库有存储记录,且包裹状态为“派件中”的配送信息,输出格式为“快递员姓名/收货地址/收件人姓名/收件人联系方式/配送状态”, 这里的“配送状态”设置方法为:若配送时间(Dtime)距今超过5天,则设置为“异常”;否则设置为“正常”。 提示:获取系统时间函数为getdate(),获取间隔天数的函数为 DATEDIFF(dd,[startdate],[enddate])。 例如 DATEDIFF(dd,2014-05-21,2014-05-23)输出为2 4.select Cname,Pto,p.Preceiver,p.Ptel,IF(DATEDIFF(NOW(),D.Dtime) 5,异常,正常) as Pstatus from P,C,D,W,S where W.Wname = 菜鸟驿站 /*指定仓库的名称为菜鸟驿站*/ and p.pstatus = 派送中 and D.Cno = C.Cno and D.Pno = P.Pno and W.Wno = S.Wno and S.Pno = P.Pno; 5. 输出2017-4-1至2017-5-1期间(不包括2017-4-1和2017-5-1这两天),收货地址包含“景德镇”的配送信息,输出格式化为“快递员姓名/物流号”,多个物流号之间以逗号隔开。 select Cname,group_concat(D.Pno) from P,C,D where D.Dtime 2017-4-1 and D.Dtime 2017-5-1 and P.Pto LIKE %景德镇% and D.Cno = C.Cno and D.Pno = P.Pno group by C.Cname; 提示:物流号用逗号分隔,意为将满足条件的所有物流单号拼接为一个字符串,MySql提供了group_concat(expr)函数实现这个功能。 group_concat(SELECT Pno FROM P) 为将P关系中的所有物流号拼接为以逗号分隔的字符串。 7. 用SQL写一个完整性规则,当插入配送信息时,将包裹状态置为“派件中” 二、某电影资料数据库包含以下5个关系 演员A(Ano,Aname,Aaddress,Agender,Abrithday)包括属性:演员编号,演员姓名,演员地址

文档评论(0)

1亿VIP精品文档

相关文档