
数据库原理与应用教程(第二版)(陈志泊主编)参考答案.docx
10页习题参考答案第1章习题参考答案一、选择题1. C2. B3. D4. C5. D6. A7. A8. B9. D、 10. B11. C12. D13. A14. D15. B二、填空题1.数据库系统2.关系3.物理独立性4.操作系统5.数据库管理系统(DBMS)6.多对多7.独立性8.完整性控制9.逻辑独立性10.关系模型11.概念 结构(逻辑)12.树 有向图二维表嵌套和递归13.宿主语言(或主语言)14.数据字典15. 单用户结构 主从式结构 分布式结构 客户/服务器结构 浏览器/服务器结构第3章习题参考答案一、选择题1. A 2. C 3. C 4. B 5. B 6. C 7. B 8. D 9. C 10. A11. B 12. A 13. A 14. D 15. D二、填空题1. 选择(选取)4. 并 差 笛卡尔积 选择 投影2. 交 3. 相容(或是同类关系)5. 并 差 交 笛卡尔积6. 选择 投影 连接9. 属性12. 系编号 系名称,,办公地点14. 主键 外部关系键三 简答题7. σ (R)f10. 同质13. 元组关系 域关系15. R 和 S 没有公共的属性8. 关系代数 关系演算11. 参照完整性(1) 查询 T1 老师所授课程的课程号和课程名。
Π (σ(TC)*Π(C))CNO,CNTNO=’T1’CNO,CN(2) 查询年龄大于 18 岁男同学的学号、姓名、系别ΠSNO, SN, Dept( ( )SσAge>18 Sex=’男’(3) 查询“李力”老师所授课程的课程号、课程名和课时ΠCNO(ΠTNO(σ (T) *TC))* CTN=’李力’(4) 查询学号为 S1 的同学所选修课程的课程号、课程名和成绩Π (σ(SC)*Π(C)CNO,CN,ScoreSNO=’S1’CNO,CN(5) 查询“钱尔”同学所选修课程的课程号、课程名和成绩ΠCNO,CN,Score(ΠSNO(σSN=’ 钱尔’(S) *ΠCNO,CN(C)*SC)(6) 查询至少选修“刘伟”老师所授全部课程的学生姓名Π ( ΠSN SNO, SN(S)*(ΠSNO, CNO(SC) ΠCNO(σ (T*TC) )TN=’刘伟’(7) 查询“李思”同学未选修的课程的课程号和课程名ΠCNO, CN(ΠCNO(C)-ΠCNO(σ (S)*SC) *C)SN=’李思’(8) 查询全部学生都选修了的课程的课程号和课程名Π (C*(Π(SC)Π(S))CNO, CNSNO, CNOSNO(9) 查询选修了课程号为 C1 和 C2 的学生的学号和姓名。
Π (SC)Π (σ(C) *Π(S)SNo,CNoCNoCNo =’C1’ CNo =’C2 ’SNo,SN(10) 查询选修全部课程的学生的学号和姓名ΠSNO, SN(S*(ΠSNO, CNO(SC)ΠCNO(C))(11) 查询选修课程包含“程军”老师所授课程之一的学生学号ΠSNO(SC*ΠCNO(σ (C))TN=’程军’(12) 查询选修课程包含学号 S2 的学生所修课程的学生学号ΠSNO, CNO(SC)ΠCNO(σCNO=’S2’(SC)一、选择题1. B 2. A 3. C 4. B 5. C 6. C 7. B 8. D 9. A 10. D二、填空题1. 结构化查询语言(Structured Query Language)2. 数据查询、数据定义、数据操纵、数据控制3. 外模式、模式、内模式4. 数据库、事务日志5. NULL/NOT NULL、UNIQUE 约束、PRIMARY KEY约束、FOREIGN KEY 约束、CHECK约束6. 聚集索引、非聚集索引7. 连接字段8. 行数9. 定义10. 系统权限、对象权限11. 基本表、视图12.(1) INSERT INTO S VALUES(990010,李国栋,男,19)(2) INSERT INTO S(No,Name) VALUES(990011, 王大友)(3) UPDATE S SET Name=陈平 WHERE No=990009(4) DELETE FROM S WHERE No=990008(5) DELETE FROM S WHERE Name LIKE 陈%13. CHAR(8) NOT NULL14. SC.CNo=C.CNo15. ALTER TABLE StudentADD SGrade CHAR(10)三、设计题1. 图书(Book)书号BNo类型BType书名BName作者 单价BAuth BPrice出版社号PNo出版社(Publish)出版社号PNo出版社名称PName所在城市PCityPTel(1) 查找在“高等教育出版社”出版,书名为“操作系统”的图书的作者名。
SELECT BAuth FROM Book, PublishWHERE Book.PNo= Publish.PNo AND BName=’操作系统’ AND PName=’高等教育出版社’(2) 查找为作者“张欣”出版全部“小说”类图书的出版社的SELECT PTel FROM Book, PublishWHERE Book.PNo= Publish.PNo AND BType =’小说’ AND BAuth=’张欣’(3) 查询“电子工业出版社”出版的“计算机”类图书的价格,同时输出出版社名称及图书类别SELECT BPrice, PName, BType FROM Book, PublishWHERE Book.PNo= Publish.PNo AND PName =’电子工业出版社’ AND BType =’计算机’(4) 查找比“人民邮电出版社”出版的“高等数学”价格低的同名书的有关信息SELECT * FROM BookWHERE BName =’高等数学’ AND BPrice
SELECT BName, BAuth FROM Book WHERE BName LIKE ’%计算机%’(6) 在“图书”表中增加“出版时间”(BDate)项,其数据类型为日期型ALTER TABLE BookADD BDate datetime(7) 在“图书”表中以“作者”建立一个索引CREATE INDEX Name ON Book(BAuth) desc2. 存书(BookStore)书号书名出版社版次出版日期作者书价进价数量BNoBNamePublishVersionPDateBAuthBPriceBInPriceBCount销售(BookSell)日期SDate书号数量BNoSCount金额SMoney(1) 建立存书表和销售表CREATE TABLE BookStore( BNo CHAR(8) PRIMARY KEY, BName VARCHAR(20),Publish VARCHAR(20),Version PDate BAuth BPrice BInPrice BCount);INT, DATETIME, VARCHAR(10), NUMERIC(4,1),NUMERIC(4,1), INTCREATE TABLE BookSell( BNo CHAR(8) PRIMARY KEY,SDate SCountDATETIME, INT,PDate SMoney);DATETIME, SMALLMONEY(2) 掌握书的库存情况,列出当前库存的所有书名、数量、余额(余额 =进价*数量,即库存占用的资金)SELECT BName, BCount, BPrice* BCount AS TOTALCOUNT FROM BookStore(3) 统计总销售额。
SELECT SUM(SCount * SMoney) AS TOTALMONEY FROM BookSell(4) 列出每天的销售报表,包括书名、数量和合计金额(每一种书的销售总额) SELECT BNo, BName , SDate , BCount , SCount * SMoney AS TOTALMONEY FROM BookStore, BookSellWHERE BookStore. BNo= BookSell. Bno GROUP BY BNo, BName , SDate , BCount(5) 分析畅销书,即列出当期(从当前起,向前 30 天)销售数量大于 100 的书名、数量SELECT BName , SCount FROM BookStore, BookSell或:SDate-‘2009-5-1’<30或: ‘2009-5-30’- SDate <30或:SDate BETWEEN‘2009-5-1’ AND ‘2009-5-30’说明:日期的表示方法2009-5-30200905302009/5/30WHERE BookStore. BNo= BookSell. BNo AND SCount>100 AND SDate+30<(SELECT MAX(SDate) FROM BookSell)四、简答题S(学生信息表)学号S#学生姓名SN年龄AGE所在系DEPT课程号课程名称C#CN学号课程号成绩S#C#GRC(课程信息表) SC(选课信息表)(1) 创建 S 表,S#为主键,SN 不能为空。
CREATE TABLE S( S# CHAR(8) PRIMARY KEY, SN CHAR(8) NOT NULL,AGE INT,DEPT VARCHAR(20。












