第一部分数据库系统概述
(一)选择
1.A
2.B
3.A
4.B
5. A
6. B
7. B
8.D
9. B 10. A
11. A 12.①B ②A ③C. 13. B 14.C 15.①B ②D ③A
16. D 17. C 18. C 19. D 20. A
21. C 22. A 23. C 24. D 25. B
26. D 27. ①A ②B ③D ④C ⑤F 28. B 29. A 30. D
31. C 32. C 33. C 34. A 35. A
36. A 37. D 38. B 39. C 40.B
41. B 42. C 43. B 44. D 45. D
46. C 47. A 48. ①D ②C ③A 49. B
(二)概念、术语
1. 数据库(DataBase ,简称DB ):数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
2.数据库系统(DataBas 。Sytem ,简称DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
(理解:解析数据库系统和数据库是两个概念。数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。但是在日常工作中人们常常把数据库系统简称为数据库。希望读者能够从人们讲话或文章的上下文中区分“数据库系统”和“数据库”,不要引起混淆。)
3.数据库管理系统(DataBase Management Sytem ,简称DBMS ) :数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
( 理解:DBMS 是一个大型的复杂的软件系统,是计算机中的基础软件。目前,专门研制DBMS 的厂商及其研制的DBMS 产品很多。著名的有美国IBM 公司的DB2关系数据库管理系统和IMS 层次数据库管理系统、美国Oracle 公司的oracle 关系数据库管理系统、Sybase 公司的sybase 关系数据库管理系统、美国微软公司的SQL Serve,关系数据库管理系统等。)
4.关系模式:是一种用于描述二维表格结构的表示方式,由关系模式和与该关系模式名相关联的属性名表组成。其形式为:关系模式名(属性名1,属性名2,…,属性名n)。
5.候选键:如果一个属性集能唯一地标识一个关系中的元组而又不含有多余属性,则称该属性值为该关系的候选键。
6.外键:如果关系模式R1中的某属性集是另一个关系模式R2的主键,则该属性在关系模式R1中称为外键。
7.概念模式:是对数据库中全部数据的整体逻辑结构的描述,体现了全局、整体的数据观点,所以称为数据库的整体逻辑结构。
简述:
(1)简述文件系统与数据库系统的区别。
答:文件系统与数据库系统的区别是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。
(2)简述文件系统与数据库系统的联系。
答:文件系统与数据库系统的联系是:文件系统与数据库系统都是计算机系统中管理数据的软件。解析文件系统是操作系统的重要组成部分;而DBMS 是独立于操作系统的软件。但是DBMS 是在操作系统的基础上实现的;数据库中数据的组织和存储是通过操作系统中的文件系统来实现的。
(3)简述数据模型的概念、数据模型的作用和数据模型的三个要素。
答:数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。一般地讲,数据模型是严格定义的概念的集合。这些概念精确描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。
( l )数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。
( 2 )数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。
( 3 )数据的约束条件:是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
(4)简述层次模型的基本概念,举出一个层次模型的实例。
答:层次模型由满足如下条件的结点组成:
(1)根结点:是唯一的一个无双亲结点。(2)其它结点:有且仅有一个双亲结点。
层次模型实例:
( l )教员学生层次数据库模型
(2)行政机构层次数据库模型
( 3)行政区域层次数据库模型
(5)简述网状模型的概念,举出三个网状模型的实例。
答:
网状模型由满足如下条件的结点组成:
( l )允许一个以上的结点无双亲;( 2 )一个结点可以有多于一个的双亲。网状模型实例1 :
网状模型实例 2 :
网状模型实例3 :
(6)试述关系模型的概念,定义并解释以下术语:( l )关系(2 )属性(3 )域(4 )元组( 5 )主码( 6 )分量(7 )关系模式
答:
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。( l )关系:一个关系对应通常说的一张表;( 2 )属性:表中的一列即为一个属性;( 3 )域:属性的取值范围;( 4 )元组:表中的一行即为一个元组;( 5 )主码:表中的某个属性组,它可以惟一确定一个元组;( 6 )分量:元组中的一个属性值;( 7 )关系模式:对关系的描述,一般表示为关系名(属性1 ,属性2 ,…,属性n )
(7)定义并解释以下术语:模式、外模式、内模式、DDL 、DML
模式、外模式、内模式,模式亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。
外模式涉及的是数据的局部逻辑结构,通常是模式的子集。
内模式,亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。
DDL :数据定义语言,用来定义数据库模式、外模式、内模式的语言。
DML :数据操纵语言,用来对数据库中的数据进行查询、插入、删除和修改的语句。
(8).简述关系数据库的优缺点。
答:关系数据模型具有下列优点:( l )关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。( 2 )关系模型的概念单一,无论实体还是实体之间的联系都用关系表示,操作的对象和操作的结果都是关系,所以其数据结构简单、清晰,用户易懂易用。( 3 )关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
当然,关系数据模型也有缺点,其中最主要的缺点是,由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。
(9)简述数据库系统三级模式结构及其两级映像?
答:数据库系统的三级模式结构由外模式、模式和内模式组成。
外模式是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
内模式是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。
数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMs 管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。为了能够在
内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两级映像:外模式/模式映像和模式/内模式映像。正是这两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
(10)简述数据与程序的逻辑独立性和数据与程序的物理独立性。为什么数据库系统具有数据与程序的独立性?
答:数据与程序的逻辑独立性:当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
数据库管理系统在三级模式之间提供的两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
(11)什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?
答:
数据与程序的逻辑独立性:当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
第二部分关系运算
(一)选择
1. B
2.C
3. D
4.C
5. A
6. C
7. C
8. D
9. D10. B
11.①B ②C ③D 12.①B ②A ③C 13. D 14. B 15. C
16. B 17. A 18. ①D ②B 19. D 20. C
21. ①D ②B ③C ④B ⑤D 22. C 23. A 24. B 25. C
(二)概念、术语:
术语:
关系的差运算:设关系R和S具有相同的关系模式,R和S的差运算是由属于R但不属于S的所有元组组成的的集合。
笛卡儿积运算:设关系R和S的目数分别为r和s,R和S的笛卡儿积是一个r+s目的元组集合,每个元组的前r个分量来自R中的的一个元组,后s个分量来自S中的一个元组。
关系的笛卡尔定义:笛卡尔积D1×D2×…×D n的任一子集称为在域D1,D2, …,D n上的关系。投影运算:投影运算是按照j1,j2,…,j k的顺序,从关系R中取出列序号为j1,j2,…,j k的k列,并除去结果中的重复无级,构成一个以j1,j2,…,j k为顺序的k目关系。
选择运算:从关系R中挑选出满足公式F的那些元组。
联接运算:从关系R和S的笛卡儿积中选取属性值满足某一比较运算操作的元组。
自然联接运算:从关系R和S的笛卡尔积中选取公共属性值相等的元组,并去除重复的属性。
简述
(1)简述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:
关系代数语言。
关系演算语言:元组关系演算语言和域关系演算语言。
SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
(2)简述等值连接与自然连接的区别和联系。
答:等值连接表示为R ? S,自然连接表示为R ? S;自然连接是除去重复属性的R.A=S.B等值连接。两者之间的区别和联系如下:
·自然连接一定是等值连接,但等值连接不一定是自然连接。
·等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
·等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
(三)应用题
1. 设有如下所示的关系模式S、C、SC:
S(S#,SNAME,AGE,SEX)
C(C#,CNAME,TEACHER)
SC(S#,C#,GRADE)
试用关系代数表达式表示下列查询语句:
(1)检索“陆定”老师所授课程的课程号(C#)和课程名(CNAME)。
(2)检索年龄大于20的男学生学号(S#)和姓名(SNAME)。
(3)检索至少选修“陆定”老师所授全部课程的学生姓名(SNAME)。
(4)检索”李翔”同学不学课程的课程号(C#)。
(5)检索至少选修两门课程的学生学号(S#)。
(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。
(7)检索选修课程包含“陆定”老师所授课程之一的学生学号(S#)。
(8)检索选修课程号为k1和k5的学生学号(S#)。
(9)检索选修全部课程的学生姓名(SNAME)。
(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。
(11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。
解:本题各个查询语句对应的关系代数表达式表示如下:
(1). ∏C#,CNAME(σTEACHER=‘陆定’(C))
(2). ∏S#,SNAME(σAGE>20∧SEX=‘女’(C))
(3). ∏SNAME{s? [∏S#,C#(sc)÷∏C#(σTEACHER=‘陆定’(C))]}
(4). ∏C#(C)- ∏C#(σSNAME=‘李翔’(S) ? SC)
(5). ∏S#(σ[1]=[4]∧[2]≠[5] (SC × SC))
(6). ∏C#,CNAME(C? (∏S#,C#(sc)÷∏S#(S)))
(7). ∏S#(SC? ∏C#(σTEACHER=‘陆定’(C)))
(8). ∏S#,C#(sc)÷∏C#(σC#=’k1’∨ C#=’k5’(C))
(9). ∏SNAME{s? [∏S#,C#(sc)÷∏C#(C)]}
(10). ∏S#,C#(sc)÷∏C#(σS#=’2’(SC))
(11). ∏S#,SNAME{s? [∏S#(SC? σCNAME=‘C语言’(C))]}
2.关系R和S如下图所示,试计算R÷S。
R
答案:
S
3.设有如图所示的关系R 和S ,计算: (1)R1=R-S
(2)R2=R ∪S
(3)R3=R ∩S (4)R4=R ×S
解:本题各小题的结果如图所示。
4.设有如图所示的关系R ,S 和T ,计算: (1)R1=R ∪S
(2)R2=R-S
(3)R3=R ? T (4)R4=R ? T
A <C
(5)R5=∏A(R)
(6)R6=σA=C (R ×T)
解:本题各小题的结果如下图所示。
R
S
5.设有如图所示的关系R ,S ,计算: (1)R1=R ? S
(2)R2=R ? S
[2]<[2]
(3)R3=σB=d (R ×S)
解:本题各小题的结果如下图所示。
6.设有如图所示的两上关系E1和E2,其中E2是从E1中经过关系运算所形成的结果,试给出该运算表达式。
2,3(σB>2(E1))或∏2,3(σC>3(E1))。
7.设有如下所示的三个关系S 、C 和SC 。用关系代数表达式表示下列要求,并求出结果。
R2
R3
(1).检索籍贯为上海的学生姓名、学号和选修的课程号。
(2).检索选修操作系统的学生姓名、课程号和成绩。
(3).检索选修了全部课程的学生姓名、年龄。
解:
(1).R1=∏2,1,6(σ籍贯=’上海’(s? sc))
或:R1=∏姓名,S.学号,课程号(σ籍贯=’上海’(s? sc))
或:R1=∏姓名,S.学号,课程号(σ籍贯=’上海’(s)? sc)
(2). R2= ∏2,6,7(s? sc? σ课程名=’操作系统’(C))
或:R2=∏姓名,SC.课程号,成绩(s? sc? σ课程名=’操作系统’(C))
(3). R3=∏2,3(s? ∏1,2(sc)÷∏1(C)))
或:R3=∏姓名,年龄(s? (∏学号,课程号(sc)÷∏课程号(C)))
检索结果如下:
8.以下述数据库各关系模式为例,
仓库(仓库号,城市,面积)
职工(仓库号,职工号,工资)
订购单(职工号,供应商号,订购单号,订购日期)
供应商(供应商号,供应商名称,地址)
用关系代数完成以下检索。
解:
(1).检索在仓库2工作的职工的工资。
关系代数表示:
∏职工号,工资(σ仓库号=“WH2“(职工))
(2).检索在上海工作的职工的工资。
解:
关系代数表示:
∏职工号,工资(σ城市=“上海”(仓库) 职工)
(3).检索北京的供应商名称。
解:
关系代数表示:
∏供应商名称(σ地址=“北京“(供应商))
(4).检索目前与职工E6有业务联系的供应商名称。
解:
关系代数表示:
∏供应商名称(σ职工号=“E6“(订购单)? (供应商)
(5).检索所有职工的工资大于1220的仓库所在的城市。
解:
关系代数表示:
∏城市(仓库? ((∏仓库号(职工)-∏仓库号(σ工资≤“1220“(职工))))
(6).检索和北京的所有供应商都有业务联系的职工的工资。
解:
关系代数表示:
a. R=∏供应商号(σ地址=“北京“(供应商)) **先取得北京的供应商号
b. ∏工资(职工? (∏职工号,供应商号(订购单)÷R))
9.用关系代数完成下面各项操作(各个关系模式及关系如后所示)。
供应商(SNO,SNAME,CITY)--供应商号,供应商名,城市
零件(PNO,PNAME,COLOR,WEIGHT)--零件号,名称,颜色,重量
工程(JNO,JNAME,CITY)--工程号,工程名,城市
供应(SNO,PNO,JNO,QTY)--供应商号,零件号,工程号,数量
(1).求供应工程J1零件的单位号码SNO
(2).求供应工程J1零件P1的单位号码SNO
(3).求供应工程J1零件为红色的单位号码SNO
(4).求没有使用天津供应商的红色零件的工程号JNO
(5).求至少用了单位S1所供应的全部零件的工程号JNO.
解:
(1). ∏SNO(σJNO=‘J1’(SPJ))
(2). ∏SNO(σJNO=‘J1’∧ PNO=‘P1’(SPJ)
(3). ∏SNO(σJNO=‘J1’(SPJ) ? ∏PNO(σCOLOR=‘红’(P)))
(设计思路:
∏PNO(σCOLOR=‘红’(P)) ①先找出红色零件的零件号
◆∏SNO(σJNO=‘J1’(SPJ) ? ①))
(4).
∏JNO(J)-∏JNO(∏SNO(σCITY=‘天津’(S)) ? SPJ? ∏PNO(σCOLOR=‘红’(P)) )
(设计思路:
?1) ∏SNO(σCITY=‘天津’(S)) :①找出天津供应商号
?2) ∏PNO(σCOLOR=‘红’(P)) :②找出红色零件号
?3) ∏JNO(①? SPJ? ② ) :③找出使用了天津供应商红色零件的工程号?4) ∏JNO(J)-③:得到未使用天津供应商的红色零件的工程号)
(5).∏JNO,PNO (SPJ)÷∏PNO (σSNO=‘S1’(SPJ)) :至少用了单位S1所供应的全部零件的工程号JNO
第三部分关系数据库语言SQL
(一)选择
1. B
2. C
3. B
4. C
5. D
6. B
7. A.
8. A
9. D10. C
11. C 12 . A 13. C 14. B 15. C
16. A 17. B 18. C 19. A 20. A
21. C
(二)概念、术语
术语
聚合函数:能够根据查询结果的记录集或根据查询结果的记录集中某列值的特点返回一个汇总信息的函数。
分组查询:在SQL语言中,把元组按某个或某些列上相同的值分组,然后再对各组进行相应操作的查询方式称为分组查询。
视图:也称用户视图或外模式,反映了数据库的局部逻辑结构,是数据库应用系统中各不同用户看到和使用的数据库。
简述
(1)简述数据定义语句、数据查询语句、数据操纵语句和数据控制语句的功能用途是什么?答:数据定义语句用于定义数据库的逻辑结构,包括定义基本表、定义视图和定义索引。
数据查询语句按不同查询条件实现对数据库中数据的检索查询。
数据操纵语句用于更改和操作表中的数据,包括数据插入、数据修改和数据删除。
数据控制语句法实现用户授权、基本表和视图授权、事务控制、完整性和安全性控制等。
(2)简述SQL 的定义功能。
答:SQL 的数据定义功能包括定义表、定义视图和定义索引。SQL 语言使用cREATE TABLE 语句建立基本表,ALTER TABLE 语句修改基本表定义,DROP TABLE 语句删除基本表;使用CREATE INDEX 语句建立索引,DROP INDEX 语句删除索引;使用CREATE VIEW 语句建立视图,DROP VIEW 语句删除视图。
(3)简述视图的优点。
答:
( l )视图能够简化用户的操作;( 2 )视图使用户能以多种角度看待同一数据;( 3 )视图对重构数据库提供了一定程度的逻辑独立性;( 4 )视图能够对机密数据提供安全保护。
(三)应用题
1.
参考答案:
(1)查询201002班男生的信息。
select * from s where class=‘201002’ and ssex=‘男’
(2)查询最低分大于70、最高分小于90的学生的姓名。
select s# from sc group s#
having min(grade)>70 and max(grade)<90
(3)查询所有女生记录信息,并以班级降序排列。
select * from s where ssex=…女?order by class desc
(4)查询选取修数据结构课程的学生姓名及所在专业代码。
select sname,scode# from s,sc,c where s.s#=sc.s# and sc.c#=c.c# and cname=…数据结构?;(5)查询至少有5名学生选修的并以3开头的课程号的平均分。
select c#,avg(grade) from sc where c# like …3%?group by c# having count(*)>=5
2.
参考答案:
(1)查询来自南京或上海的学生学号和姓名。
select s#,sname from s where placeofb='上海' or placeofb='南京'
(2)查询选修课程号为C401001的学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select s#,grade from sc where c#='C401001' order by grade desc,s# asc (3)查询计算机科学或网络工程专业姓张的学生的信息。
select * from s where scode# in (select scode# from ss where ssname=’计算机科学’or ssname=’网络工程’) and sname like '张%'
(4)查询缺少了成绩的学生的学号和课程号。
select s#,c# from sc where grade is null
(5)查询每个专业的男、女生分别有多少人数。
select scode#,ssex,count(*) from s group by scode#,ssex
3. 参考答案:
(1).找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名。
SELECT A#,ANAME
FROM A;
WHERE WQTY<=100 OR CITY=“长沙”
(2).找出供应书包的商店名。
SELECT A.ANAME
FROM A,B,AB;
WHERE A.A#=AB.A# AND B.B#=AB.B# AND B.BNAME=“书包”
(3).找出至少供应代号为256的商店所供应的全部商品的商店名和所在城市。
SELECT A.ANAME,A.CITY
FROM A,B;
WHERE A.A#=AB.A# AND AB.B# IN
(SELECT AB.B#;
FROM AB
WHERE A#=“256”)
4. 参考答案:
(1).CREATE VIEW R-S-T
AS SELECT R.A,B,C,S.D,E,F
FROM R,S,T
WHERE R.A=S.A AND S.D=T.D
(2).SELECT AVG(C),AVG(E)
FROM R-S-T
GROUP BY A
5. 参考答案:
(1).SELECT B
FROM R,S
WHERE R.A=S.A AND C>50
(2).UPDATE R
SET B=‘b4’
WHERE A IN
(SELECT A
FROM S
WHERE C=40)
6. 参考答案:
(1).SELECT DISTINCT PROV
FROM S
WHERE SD=“信息系”
(2).SELECT SN,GR
FROM S,SC
WHERE SD=“英语系”AND CN=“计算机”AND S.SNO=SC.SNO ORDER BY GR DESC;
7. 参考答案:
(1).取出所有工程的全部细节;
SELECT *
FROM JB
(2).取出所在城市为上海的所有工程的全部细节;
SELECT *
FROM JB
WHERE CITY=“上海”
(3).取出重量最轻的零件代号;
SELECT PN
FROM PB
WHERE WEIGHT=
(SELECT MIN(WEIGHT) FROM PB)
(4).取出为工程J1提供零件的供应商代号;
SELECT SN
FROM SPJB
WHERE JN=“J1”
(5).取出为工程J1提供零件P1的供应商代号;
SELECT SN
FROM SPJB;
WHERE JN=‘Jl’AND PN=‘Pl’
(6).取出由供应商S1提供零件的工程名称;
SELECT JB.JNAME
FROM JB,SPJB
WHERE JB.JN=SPJB.JN AND SPJB.SN=‘S1’
(7).取出供应商S1提供的零件的颜色;
SELECT DISTINCT PB.COLOR
FROM PB,SPJB
WHERE PB.PN=SPJB.PN AND SPJB.SN=‘S1’
(8).取出为工程J1或J2提供零件的供应商代号;
SELECT DISTINCT SN
FROM SPJB
WHERE JN=‘J1’OR JN=‘J2’
(9).取出为工程J1提供红色零件的供应商代号;
SELECT DISTINCT SPJB.SN
FROM SPJB,PB
WHERE PB.PN=SPJB.PN AND SPJB.JN=‘J1’AND PB.COLOR=‘红’
(10).取出为所在城市为上海的工程提供零件的供应商代号;
SELECT DISTINCT SPJB.SN
FROM SPJB, JB
WHERE SPJB.JN=JB.JN AND JB.CITY‘上海’
(11).取出为所在城市为上海或北京的工程提供红色零件的供应商代号;
SELECT SPJB.SN
FROM PB,JB SPJB
WHERE SPJB.PN=PB.PN AND JB.JN=SPJB.JN AND PB.COLOR=’红’AND JB.CITY=’上海’(12).取出供应商与工程所在城市相同的供应商提供的零件代号;
SELECT DISTINCT SPJB.PN
FROM SB,JB,SPJB
WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY=JB.CITY
(13).取出上海的供应商提供给上海的任一工程的零件的代号;
SELECT SPJB.PN
FROM SB,JB,SPJB
WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY=’上海’
(14).取出至少由一个和工程不在同一城市的供应商提供零件的工程代号;
SELECT DISTINCT SPJB.JN
FROM SB,JB,SPJB
WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY<>JB.CITY
(15).取出上海供应商不提供任何零件的工程的代号;
SELECT DISTINCT JN
FROM SPJB
WHERE JN NOT IN
(SELECT DISTINCT SPJB.JN
FROM SB,SPJB
WHERE SB.SN=SPJB.SN AND SB.CITY=’上海’)
(16).取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件;
SELECT DISTINCT SPJB.SN
FROM PB,SPJB
WHERE SPJB.PN IN
(SELECT SPJB.PN
FROM SPJB,SB,PB
WHERE SB.SN=SPJB.SN AND PB.PN=SPJB.PN AND PB.COLOR=’红’)
(17).取出由供应商S1提供零件的工程的代号;
SELECT DISTINCT SPJB.JN
FROM SB,PB,SPJB
WHERE SB.SN=SPJB.SN AND PB.PN=SPJB.PN AND SB.SN=’S1’
8.参考答案:
(1).检索在北京的供应商的名称。
SELECT SNAME
FROM SUPPLIER
WHERE ADDR=“北京”;
(2).检索发给供应商S6的订购单号。
SELECT ONO
FROM ORDER
WHERE SNO=“S6”;
(3).检索出职工E6发给供应商S6的订购单号。
SELECT ONO
FROM ORDER
WHERE SNO=“S6” AND ENO=“E6”;
(4).检索出向供应商S3发过订购单的职工的职工号和仓库号。
SELECT ENO,WHNO
FROM EMPLOYEE
WHERE ENO IN
(SELECT ENO
FROM ORDER
WHERE SNO=“S3”);
或:SELECT ENO,WHNO
FROM EMPLOYEE,ORDER
WHERE EMPLOYEE.ENO=ORDER.ENO AND ORDER.SNO=“S3”;
(5).检索出目前与S3供应商没有联系的职工信息。
SELECT ENO,WHNO
FROM EMPLOYEE
WHERE ENO NOT IN
(SELECT ENO
FROM ORDER WHERE SNO=“S3”);
(6).检索出目前没有任何订购单的供应商信息。
SELECT *
FROM SUPPLIER
WHERE SNO NOT IN
(SELECT SNO FROM ORDER);
(7).检索出和职工E1、E3都有联系的北京的供应商信息。
SELECT *
FROM SUPPLIER
WHERE ADDR=“北京” AND
(EXISTS (SELECT * FROM ORDER WHERE SNO=SUPPIER.SNO AND ENO=“E3”)) AND
(EXISTS (SELECT * FROM ORDER WHERE SNO=SUPPIER.SNO AND ENO=“E6”));
(8).检索出目前和华通电子公司有业务联系的每个职工的工资。
SELECT ENO,SALARY
FROM EMPLOYEE
WHERE ENO IN
(SELECT ENO FROM ORDER WHERE SNO IN
(SELECT SNO FROM SUPPLIER WHERE ADDR=“华通电子公司”));
或:SELECT ENO,SALARY
FROM EMPLOYEE,ORDER,SUPPLIER
WHERE EMPLOYEE.ENO=ORDER.ENO AND ORDER.SNO=SUPPLIER.SNO
AND SUPPLIER.ADDR=“华通电子公司”;
(9).检索出与工资在1220元以下的职工没有联系的供应商的名称。
SELECT SNAME
FROM SUPPLIER
WHERE SNO NOT IN
(SELECT SNO FROM ORDER WHERE ENO IN
(SELECT ENO FROM EMPLOYEE WHERE SALARY<1220));
(10).检索出向S4供应商发出订购单的仓库所在的城市。
SELECT CITY
FROM WAREHOUSE
WHERE WHNO IN (SELECT WHNO FROM EMPLOYEE
WHERE ENO IN (SELECT ENO FROM ORDER WHERE SNO=“S4”));或:SELECT CITY
FROM WAREHOUSE,EMPLOYEE,ORDER
WHERE WAREHOUSE.WHNO=EMPLOYEE.WHNO
AND EMPLOYEE.ENO=ORDER.ENO AND ORDER.SNO=“S4”;
(11).检索出在上海工作并且向S6供应商发出了订购单的职工号。
SELECT ENO
FROM EMPLOYEE
WHERE WHNO IN
(SELECT WHNO FROM WAREHOUSE WHERE CITY=“上海”)
AND (ENO IN SELECT ENO FROM ORDER WHERE SNO=“S6”);
或:SELECT ENO
FROM EMPLOYEE,WAREHOUSE,ORDER
WHERE EMPLOYEE.WHNO=WREHOUSE.WHNO
AND WREHOUSE.CITY=“上海”
AND EMPLOYEE.ENO=ORDER.ENO AND ORDER.SNO=“S6”;
(12).检索出在广州工作并且只向S6供应商发出了订购单的职工号。
SELECT ENO
FROM EMPLOYEE
WHERE (WHNO IN SELECT WHNO FROM WAREHOUSE WHERE CITY=“广州”)
AND (ENO IN SELECT ENO FROM ORDER WHERE SNO=“S6”)
AND (NOT EXISTS (SELECT * FROM ORDER
WHERE SNO<>“S6” AND ENO=EMPLOYEE.ENO));
(13).检索出由工资多于1230元的职工向北京的供应商发出的订购单号。
SELECT ONO
FROM ORDER
WHERE (ENO IN SELECT ENO FROM EMPLOYEE WHERE SALARY>1230)
AND (SNO IN SELECT SNO FROM SUPPLIER WHERE ADDR=“北京”);或:SELECT ONO
FROM ORDER,EMPLOYEE,SUPPLIER
WHERE ORDER.ENO= EMPLOYEE.ENO AND EMPLOYEE.SALARY>1230
AND ORDER.SNO= SUPPLIER.SNO AND SUPPLIER. ADDR=“北京”;(14).检索出仓库的个数。
SELECT COUNT(*) FROM WAREHOUSE;
(15).检索出有最大面积的仓库信息。
SELECT *
FROM WAREHOUSE OUTER
WHERE OUTER.SIZE=(SELECT MAX(SIZE) FROM WAREHOUSE INNER);(16).检索出所有仓库的平均面积。
SELECT AVG(SIZE) FROM WAREHOUSE;
(17).检索出向S4供应商发出订购单的那些仓库的平均面积。
SELECT AVG(SIZE)
FROM WAREHOUSE
WHERE WHNO IN (SELECT WHNO FROM EMPLOYEE
WHERE ENO IN (SELECT ENO FROM ORDER WHERE SNO=“S4”));(18).检索出每个城市的供应商个数。
SELECT CITY,COUNT(SNO)
FROM SUPPLIER
GROUP BY CITY;
(19).检索出每个仓库中工资多于1220元的职工个数。
SELECT WHNO,COUNT(ENO)
FROM EMPLOYEE
WHERE SALARY>1220
GROUP BY WHNO;
或:SELECT WHNO,COUNT(ENO)
FROM EMPLOYEE
GROUP BY WHNO
HAVING SALARY>1220;
(20).检索出和面积最小的仓库有联系的供应商的个数。
SELECT COUNT(DISTINCT SNO)
FROM ORDER
WHERE ENO IN
SELECT ENO FROM EMPLOYEE
WHERE WHNO IN
SELECT WHNO FROM WAREHOUSE OUTER
WHERE OUTER.SIZE=SELECT MIN(SIZE)
FROM WAREHOUSE INNER;
(21).检索出工资低于本仓库平均工资的职工信息。
SELECT * FROM EMPLOYEE OUTER
WHERE OUTER.SALARY<(SELECT AVG(SALARY) FROM EMPLOYEE INNER WHERE INNER.WHNO=OUTER.WHNO GROUP BY WHNO);
9.参考答案:
(1).插入一个新的供应商元组(S9,智通公司,沈阳)。
INSERT INTO SUPPLIER VALUES(S9,智通公司,沈阳);
(2).删除目前没有任何订购单的供应商。
DELETE FROM SUPPLIER
WHERE NOT EXISTS (SELECT * FROM ORDER WHERE ORDER.SNO=SUPPLIER.SNO);或:DELETE FROM SUPPLIER
WHERE SNO NOT IN (SELECT SNO FROM ORDER);
(3).删除由在上海仓库工作的职工发出的所有订购单。
DELETE FROM ORDER
WHERE ENO IN (SELECT ENO FROM EMPLOYEE
WHERE WHNO IN {SELECT WHNO FROM WAREHOUSE WHERE CITY=“上海”}};
(4).北京的所有仓库增加100m2的面积。
UPDATE WAREHOUSE
SET SIZE=SIZE+100 WHERE CITY=“北京”;
(5).给低于所有职工平均工资的职工提高5%的工资。
UPDATE EMPLOYEE OUTER
SET OUTER.SALARY=OUTER.SALARY*1.05
WHERE OUTER.SALARY