数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx

上传人:b****6 文档编号:16271379 上传时间:2022-11-22 格式:DOCX 页数:19 大小:98.05KB
下载 相关 举报
数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx_第1页
第1页 / 共19页
数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx_第2页
第2页 / 共19页
数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx_第3页
第3页 / 共19页
数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx_第4页
第4页 / 共19页
数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx

《数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

数据库原理与技术简明教程第二版课后习题参考答案Word格式文档下载.docx

90

500

3.略

4.略

5.略

6.略

7.略

8.略

9.略

第2章

实践环节设计:

1.CREATETABLEStudent(

Snochar(7)PRIMARYKEY,

Snamechar(10)NOTNULL,

Ssexchar

(2)CHECK(Ssex='

男'

ORSsex='

女'

),

SagetinyintCHECK(Sage>

=15ANDSage<

=45),

Sdeptchar(20)DEFAULT'

计算机系'

CREATETABLECourse(

Cnochar(10)NOTNULL,

Cnamechar(20)NOTNULL,

CcredittinyintCHECK(Ccredit>

0),

SemestertinyintCHECK(Semester>

PeriodintCHECK(Period>

PRIMARYKEY(Cno))

CREATETABLESC(

Snochar(7)NOTNULL,

Gradetinyint,

CHECK(Grade>

=0ANDGrade<

=100),

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno))

2.Insertintostudentvalues(‘9512101’,’李勇’,’男’,19,’计算机系’)

Insertintocoursevalues(‘co1’,’数据库原理’,3,4,64)

Insertintoscvalues(‘9512101’,’co1’,90)

3.DropTABLEstudent

4ALTERTABLESC

ADDXKLBchar(4)

5ALTERTABLESC

ALTERCOLUMNXKLBchar(6)

6Altertablescdropcolumnxklb

7SELECTSno,SnameFROMStudent

8SELECTSnameFROMStudentWHERESdept='

9SELECTSname,SageFROMStudentWHERESage<

20

或:

SELECTSname,SageFROMStudentWHERENOTSage>

=20

10SELECTSname,Sdept,SageFROMStudent

WHERESageBETWEEN20AND23

此句等价于:

SELECTSname,Sdept,SageFROMStudent

WHERESage>

=20ANDSage<

=23

11SELECTSname,SsexFROMStudent

WHERESdeptIN('

信息系'

'

数学系'

SELECTSname,SsexFROMStudent

WHERESdept='

ORSdept='

OR

Sdept='

计算机系‘

12SELECT*FROMStudentWHERESnameLIKE‘张%’

13SELECT*FROMStudentWHERESnameLIKE‘[张李刘]%’

14SELECTSname,SnoFROMStudentWHERESnameLIKE'

_[小大]%'

15SELECTSno,CnoFROMSCWHEREGradeISNOTNULL

16SELECTSnameFROMStudent

WHERESdept=计算机系'

ANDSage<

20

17SELECTSno,GradeFROMSC

WHERECno='

c02'

ORDERBYGradeDESC

18SELECT*FROMStudent

ORDERBYSdept,SageDESC

19SELECTCOUNT(DISTINCTSno)FROMSC

20SELECTSUM(Grade)FROMSCWHERESno='

9512101'

21SELECTAVG(Grade)FROMSCWHERECno='

C01'

22SELECTMAX(Grade),MIN(Grade)FROMSCWHERECno='

23SELECTCnoAS课程号,COUNT(Sno)AS选课人数

FROMSCGROUPBYCno

24SELECTSno学号,COUNT(*)选课门数,

AVG(Grade)平均成绩FROMSC

GROUPBYSno

25SELECTSnoFROMSCGROUPBYSno

HAVINGCOUNT(*)>

26SELECTSno,AVG(Grade)平均成绩,COUNT(*)修课门数

FROMSCGROUPBYSnoHAVINGCOUNT(*)>

=2

27SELECTSname,Cno,Grade

FROMStudentJOINSCONStudent.Sno=SC.Sno

28SELECTSname,Cname,Grade

FROMStudentsJOINSCONs.Sno=SC.Sno

JOINCoursecONc.Cno=SC.Cno

ANDCname='

VB'

29SELECTS2.Sname,S2.Sdept

FROMStudentS1JOINStudentS2

ONS1.Sdept=S2.Sdept

WHERES1.Sname='

刘晨'

ANDS2.Sname!

='

刘晨’

或SELECTSname,SdeptFROMStudent

WHERESdeptIN

(SELECTSdeptFROMStudent

WHERESname='

30SELECTStudent.Sno,Sname,

Cno,GradeFROMStudent

LEFTOUTERJOINSC

ONStudent.Sno=SC.Sno

也可以用右外连接实现:

SELECTStudent.Sno,Sname,

Cno,GradeFROMSC

RIGHTOUTERJOINStudent

31SELECTSno,SnameFROMStudent

WHERESnoIN

(SELECTSnoFROMSC

WHERECnoIN

(SELECTCnoFROMCourse

WHERECname='

数据库原理'

))

用多表连接实现:

SELECTStudent.Sno,SnameFROMStudent

JOINSCONStudent.Sno=SC.Sno

JOINCourseONCourse.Cno=SC.Cno

WHERECname='

32SELECTSno,GradeFROMSC

WHERECno='

ANDGrade>

SELECTAVG(Grade)FROMSC

33INSERTINTOStudentVALUES(‘9521105’,‘陈冬’,

'

18,'

34UPDATEStudentSETSage=21

WHERESno='

35DELETEFROMSCWHEREGrade<

60

36DELETEFROMSC

WHEREGrade<

60ANDSnoIN(

SELECTSnoFROMStudent

WHERESdept=‘计算机系’)

用多表连接实现

DELETEFROMSC

FROMSCJOINStudent

ONSC.Sno=Student.Sno

WHERESdept=‘计算机系’ANDGrade<

37deletefromscwheresnoin(selectsnofromstudent

wheresname=’李勇’)andcnoin

(selectcnofromcoursewherecname=’数据库原理’)

多表连接方式:

deletefromsc

fromscjoinstudentonsc.sno=student.sno

joincourseono=o

wheresname=’李勇’andcname=’数据库原理’

38

selectstudent.*,course.*

fromstudentjoinsconstudent.sno=sc.sno

wheresnoin(selectsnofromscgroupbysno

havingcount(cno)>

2)

派生关系(没调试,可以不讲):

join(selectsnofromscgroupbysnohavingcount(cno)>

3)astt(sno)ontt.sno=student.sno

39(方法可以有很多种)

select*fromstudentwheresnoin(

selectsnofromscwheregrade=(

selectmax(grade)fromscwherecno=(selectcnofromcoursewherecname=’数据库原理’

)andcno=(selectcnofromcoursewherecname=’数据库原理’)

40select*fromstudentwheresnoin(

selectsnofromscjoin(

selectmax(grade),cnofromscgroupbycno)asmax_grade(m_grade,cno)

ono=max_oandsc.grade=max_grade.m_grade

41

selectsnofromscgroupbysno

havingcount(*)>

=all(

selectcount(*)fromscgroupbysno

42略

43略

44selecttop3withtiessname,sdept,gradefromstudentjoinscon

Student.sno=sc.snojoincourseono=owherecname=’VB’orderbygradedesc

45selectsname,sdeptfromstudentwheresnonotin

(selectsnofromscwherecno=’c01’)

Selectsname,sdeptfromstudentwherenotexists(select*fromscwheresno=student.snoandcno=’c01’)

46selectTop3sname,sage,sdeptfromstudentorderbysagedesc

47selectcno,count(*)astotal,avg(grade)asavggrade,max(grade)asmaxgrade,min(grade)asmingradefromstudentjoinsconstudent.sno=sc.snowheresdept=’计算机系’groupbycno

48selectame,c1.creditfromcoursec1joincoursec2onc1.credit=c2.creditwhereame=’数据结构’

49selecto,cnamefromcoursecleftjoinscono=owhereoisnull

50selectsname,sexfromstudentwheresnonotin(

Selectsnofromscjoincourseono=owherecname=’VB’)

Andsdept=’计算机系’

习题:

BBADA/CBAAD/BDDAB/CCCBB

已知有顾客购买商品信息的三张表:

顾客表Customer、定购表Order、商品表Commodity。

按要求创建三张表:

1.表名:

Customer

属性:

ID字符型最大10个字符——顾客编号

NAME字符型最大16个字符——顾客姓名

SEX字符型最大2个字符——性别

MOBILE字符型最大11个字符——移动电话

ADDRESS字符型最大50个字符——家庭住址

约束:

ID——主码;

NAME——非空属性;

SEX——取值“男”或“女”;

MOBILE——唯一性;

ADDRESS——默认为UNKOWN;

表名:

OrderBook

属性:

CSID字符型最大10个字符——顾客编号

CMID字符型最大12个字符——商品编号

COUNT整型——定购数量

BOOKDATE日期型——订货日期

TAKEDATE日期型——交货日期

约束:

CSID,CMID——主码;

定购数量要大于0;

订货日期要小于交货日期;

CSID——外码,引用Customer表的ID;

CMID——外码,引用Commodity表的ID;

Commodity

ID字符型最大12个字符——商品编号

NAME字符型最大20个字符——商品名称

MANUFACTURE字符型最大20个字符——生产厂商

PRICE小数型最大不超过4位数,保留2位小数——商品单价

ID——主码;

NAME——非空;

针对上面的三个基本表做如下练习:

2.往基本表Customer中插入顾客元组(”0421F901”,”WU”,”女”,)

3.往基本表Commodity中插入一条商品记录(“091”,“牙膏”,“保洁公司”,5.00)

4.修改“WANGYAN”顾客定购商品的记录交货日期为2005-12-25。

Updateordersettaketime=’2005-12-25’wherecsidin(selectidfromcustomerwherename=’wangyan’)

5.查询“ANAN”顾客的手机号和住址。

Selectmobile,addressfromcustomerwherename=’anan’

6.查询商品的平均价格高于75元钱的厂商名称。

Selectmanufacturefromcommoditygroupbymanufacturehavingavg(price)>

7.查询顾客的定购信息,并按订货日期升序排列,若订货日期相同,则按定购数量降序排列。

Select*fromorderbookorderbybookdate,countdesc

8.查询定购数量超过100的顾客姓名、电话和住址。

Selectname,mobile,addressfromcustomerwhereidin(selectcsidfromorderbookwherecount>

100)

9.查询没有订单的商品编号、名称和厂商。

Selectid,name,manufacturefromcomoditywhereidnotin(selectcsidfromorderbook)

10.查询定购了商品号为“M1”的顾客总人数和最高数量。

Selectcount(*),max(count)fromorderwherecmid=’m1’

11.查询定购了“可比克”商品的顾客编号、姓名。

Selectid,namefromcustomerwhereidin(selectcsidfromorderwherecmidin(selectidfromcomoditywherename=’可比克’))

12.查询商品名中包含“糖”的所有商品的编号、厂商、单价。

Selectid,manufacture,pricefromcomoditywherenamelike‘%糖%’

13.查询至少有两位顾客定购的商品的名称。

Selectnamefromcomoditywhereidin(selectcmidfromordergroupbycmidhavingcount(*)>

=2)

14.查询截至2005年底所有商品订单最晚的交货日期。

SELECTtaketimefromorderwheretaketime=(selectmax(taketime)fromorderwheretaketime<

’2005-12-31’)

15.查询住址中含有“软件园”三个字的顾客人数。

Selectcount(*)fromcustomerwhereaddresslike’%软件园%’

16.查询订购了“保洁公司”生产的产品中价格最高的商品的客户信息。

Selectcustomer.*fromcustomer,OrderBook,Commoditywherecustomer.id=orderbook.CSIDandCommodity.id=orderbook.cmidandCommodity.idin

(SelectidfromCommoditywhereMANUFACTURE=“保洁公司”andprice=(

Selectmax(price)fromCommoditywhereMANUFACTURE=“保洁公司”))

17.查询2007年3月份住址在“大连”的顾客对“上好佳”商品的定购信息,列出顾客姓名,商品数量和定购日期。

Selectcustomer.name,count,BOOKDATEfromcustomer,OrderBook,Commoditywherecustomer.id=orderbook.CSIDandCommodity.id=orderbook.cmidandADDRESSlike

‘%大连%’andCommodity.name=’上好佳’andBOOKDATEbetween2007-03-01and2007-03-31

18.查询订单最多的顾客姓名。

Selectnamefromcustomerwhereidin(

SelectCSIDfromOrderBookgroupbycsidhavingcount(*)>

=all(select

Count(*)fromorderbookgroupbycsid))

19.查询定购了“保洁公司”的商品最多的客户信息。

Select*fromcustomerwhereidin(

Selectcsidfromorderbookwherecmidin(SelectidfromCommoditywhereMANUFACTURE=“保洁公司”)groupbycsidhavingcount(*)>

=all(selectcount(*)fromorderbookwherecmidin(SelectidfromCommoditywhereMANUFACTURE=“保洁公司”)groupbycsid))

20.把“雀巢奶粉”的定购商品记录全部删去。

Deletefromorderwherecmidin(selectidfromcommoditywherename=’雀巢奶粉’)

第3章

1.实体完整性和参照完整性。

2.主码唯一、外码参考。

3.主码。

4.实体完整性和参照完整性

5.属性列

6.投影选择

7.选择投影连接除

8.Whereselect

9.a1+b1

10.a2*b2

11.

(student)

12.

13.

(student

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1