数据库原理例题及解答
- 格式:doc
- 大小:354.50 KB
- 文档页数:8
1.从程序和数据之间的关系分析文件系统和数据库系统之间的区别和联系。
区别:文件系统:用文件将数据长期保存在外存上,程序和数据有一定的联系,用操作系统中的存取方法对数据进行管理,实现以文件为单位的数据共享。
数据库系统:用数据库统一存储数据,程序和数据分离,用DBMS统一管理和控制数据,实现以记录和字段为单位的数据共享。
联系:均为数据组织的管理技术;均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;数据库系统是在文件系统的基础上发展而来的。
2.什么是数据库?数据库是长期存储在计算机内、有组织的、可共享的数据集合。
数据库是按某种数据模型进行组织的、存放在外存储器上,且可被多个用户同时使用。
因此,数据库具有较小的冗余度,较高的数据独立性和易扩展性。
3.什么是数据冗余?数据库系统与文件系统相比怎样减少冗余?在文件管理系统中,数据被组织在一个个独立的数据文件中,每个文件都有完整的体系结构,对数据的操作是按文件名访问的。
数据文件之间没有联系,数据文件是面向应用程序的。
每个应用都拥有并使用自己的数据文件,各数据文件中难免有许多数据相互重复,数据的冗余度比较大。
数据库系统以数据库方式管理大量共享的数据。
数据库系统由许多单独文件组成,文件内部具有完整的结构,但它更注重文件之间的联系。
数据库系统中的数据具有共享性。
数据库系统是面向整个系统的数据共享而建立的,各个应用的数据集中存储,共同使用,数据库文件之间联系密切,因而尽可能地避免了数据的重复存储,减少和控制了数据的冗余。
4.使用数据库系统有什么好处?查询迅速、准确,而且可以节约大量纸面文件;数据结构化,并由DBMS统一管理;数据冗余度小;具有较高的数据独立性;数据的共享性好;DBMS还提供了数据的控制功能。
5.什么是数据库的数据独立性?数据独立性表示应用程序与数据库中存储的数据不存在依赖关系,包括逻辑数据独立性和物理数据独立性。
逻辑数据独立性是指局部逻辑数据结构(外视图即用户的逻辑文件)与全局逻辑数据结构(概念视图)之间的独立性。
数据库原理课后习题答案码:工程号+材料号操作异常:数据冗余,插入异常,删除异常,修改异常分析原因:(工程号,材料号)?开工日期工程号?开工日期存在部分函数依赖,不满足2NF(工程号,材料号)?单价材料号?单价存在部分函数依赖,不满足2NF分解为:R1(工程号,材料号,数量)R2(材料号,单价)R3(工程号,开工日期,完工日期)第七章一、试说明事务的概念及四个特征。
答:事务是用户定义的数据操作系列,这些操作可作为一个完整的工作单元一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。
四个特征:原子性、一致性、隔离性和持续性三、在数据库中为什么要有并发控制机制?答:数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用户可以同时存取相同数据。
在这样的系统中,在同一时刻同时运行的事务可达数百个。
若对多用户的并发操作不加控制,就会造成数据库存、取的错误,破坏数据的一致性和完整性。
所以数据库中要有并发控制机制。
四、并发控制的措施是什么?答:在数据库环境下,进行并发控制的主要方式是使用封锁机制,即加锁。
具体的控制由锁的类型决定。
基本的锁类型有两种:排它锁(X锁)和共享锁(S锁)。
共享锁:若事务T给数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务只能再给A加S锁,而不能加X锁,直到T释放了A上的S锁为止。
排他锁:若事务T给数据对象A加了X锁,则允许T读取和修改A,但不允许其他事务再给A加任何类型的锁和进行任何操作。
五、设有3个事务:T1、T2和T3,其所包含的动作为:T1:A=A+2T2:A=A某2T3:A=A某某2设A的初值为1,若这三个事务运行并行执行,则可能的调度策略有几种?A最终的结果分别是什么?答:6种策略。
分别是T1T2T3,T1T3T2,T2T1T3,T2T3T1,T3T1T2,T3T2T1结果分别是六、当一些事务对段数据加了S锁之后,在此事务释放锁之前,其他事物还可以对此段数据添加什么锁?答:S锁七、什么是死锁?如何预防死锁?答:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁数据R2,由于T2已经封锁了数据R2,因此T1等待T2释放R2上的锁,然后T2又请求封锁数据R1,由于T1封锁了数据R1,因此T2也只能等待T1释放R1上的锁.这样就会出现T1等待T2先释放R2上的锁,而T2又等待T1先释放R1上的锁的局面,此时T1和T2都在等待对方先释放锁,因而形成死锁。
P36:8.分别举出实体型之间具有一对一,一对多,多对多联系的例子。
9.学校有若干个系,每个系有若干班级和教研窒,每个教研窒有若干教员,其中有的教授和副教授每人各带若干研究生。
每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。
用E-R图画出该学校的概念模型。
11.教师与课程之间的联系是多对多联系,试用层次模型表示之。
14.试比较层次模型,网状模型和关系模型的优点与缺点。
层次模型的优点主要有:( l )模型简单,对具有一对多层次关系的部门描述非常自然、直观,容易理解,这是层次数据库的突出优点;( 2 )用层次模型的应用系统性能好,特别是对于那些实体间联系是固定的且预先定义好的应用,采用层次模型来实现,其性能优于关系模型;( 3 )层次数据模型提供了良好的完整性支持。
层次模型的缺点主要有:( l )现实世界中很多联系是非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型不能自然地表示这类联系,只能通过引入冗余数据或引入虚拟结点来解决;( 2 )对插入和删除操作的限制比较多;( 3 )查询子女结点必须通过双亲结点。
网状数据模型的优点主要有:( l )能够更为直接地描述现实世界,如一个结点可以有多个双亲;( 2 )具有良好的性能,存取效率较高。
网状数据模型的缺点主要有:( l )结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;( 2 )其DDL 、DML 语言复杂,用户不容易使用。
由于记录之间联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径。
因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。
17.数据库管理系统有哪些主要功能?l 数据库定义功能;2 数据存取功能;3 数据库运行管理;4 数据库的建立和维护功能。
18.数据库管理系统有哪几部分组成?1 数据定义语言及其翻译处理程序2 数据操纵语言及其编译(或解释)程序3 数据库运行控制程序4 实用程序P642.解释下列概念,并说明它们之间的联系与区别:1码,候选码,外部码2笛卡尔,关系,元组,属性,域3关系模式,关系模型,关系数据库答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
数据库系统原理练习题库(附参考答案)一、单选题(共100题,每题1分,共100分)1.属于数据库结构设计阶段的是A、程序设计B、功能设计C、事务设计D、逻辑结构设计正确答案:D2.人工管理阶段,计算机主要应用于A、数据集成B、科学计算C、过程控制D、故障恢复正确答案:B3.下列关于数据控制语言的说法中,正确的是A、REVOKE语句用于授予权限B、GRANT语句用于收回权限C、数据控制语言主要用于数据执行流程管理D、数据控制语言包括的主要SQL语句是GRANT和REVOKE正确答案:D4.下列属于关联分析算法的是A、AprioriB、GMMC、RedisD、HBase正确答案:A5.同一数据被反复存储的情况是A、删除异常B、插入异常C、更新异常D、数据冗余正确答案:D6.产生数据不一致的主要原因是并发操作破坏了事务的A、持续性B、一致性C、原子性D、隔离性正确答案:D7.DBMS提供【】来严格地定义模式。
A、模式描述语言B、子模式描述语言C、内模式描述语言D、程序设计语言正确答案:A8.关系数据库以【】作为数据的逻辑模型。
A、二维表B、关系C、关系模型D、数据库正确答案:C9.关于调用存储过程的说法,错误的是A、可以从交互式界面调用B、可以使用CALL语句来调用存储过程C、可以由嵌入式SQL调用D、不是所有的SQL接口都能调用存储过程正确答案:D10.可唯一标识实体的属性集称为A、键B、实体型C、域D、属性正确答案:A11.目的是为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础的是A、设计评价B、编制应用程序设计说明C、模型转换D、子模式设计正确答案:B12.在使用游标的过程中,需要注意的事项不包括A、游标不能单独在查询操作中使用B、在一个BEGIN···END语句块中每一个游标的名字并不是唯一的C、游标是被SELECT语句检索出来的结果集D、在存储过程或存储函数中可以定义多个游标正确答案:B13.对关系的描述不正确的是A、关系中的元组次序可交换B、关系可以嵌套定义C、关系是一张二维表D、关系是一个集合正确答案:B14.下列关于MySQL的说法中,正确的是A、在MySQL中,一个关系对应多个基本表B、在MySQL中,一个或多个基本表对应一个存储文件C、在MySQL中,一个表只能有一个索引D、在MySQL中,索引不能存放在存储文件中正确答案:B15.关系数据库是以【】的形式组织数据。
习题一、单项选择题1. 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
在这几个阶段中,数据独立性最高的是(A)阶段。
A. 数据库系统B. 文件系统C. 人工管理D.数据项管理2. 数据库系统与文件系统的主要区别是(B)。
A. 数据库系统复杂,而文件系统简单B. 文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决C. 文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件D. 文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量3. 在数据库中存储的是(C)。
A. 数据B. 数据模型C. 数据及数据之间的联系D. 信息4. 数据库的特点之一是数据的共享,严格地讲,这里的数据共享是指(D)。
A. 同一个应用中的多个程序共享一个数据集合B. 多个用户、同一种语言共享数据C. 多个用户共享一个数据文件D. 多种应用、多种语言、多个用户相互覆盖地使用数据集合5. 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是( A )。
A. DBS包括DB和DBMSB. DBMS包括DB和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS6. 数据库管理系统(DBMS)是(C)。
A. 一个完整的数据库应用系统B.一组硬件C. 一组系统软件D.既有硬件,也有软件7. 数据库是在计算机系统中按照一定的数据模型组织、存储和应用的(B)。
A. 文件的集合B. 数据的集合C. 命令的集合D. 程序的集合8. 支持数据库各种操作的软件系统是(B)。
A. 命令系统B. 数据库管理系统C. 数据库系统D. 操作系统9. 由计算机硬件、DBMS、数据库、应用程序及用户等组成的一个整体叫(B)。
A. 文件系统B. 数据库系统C. 软件系统D. 数据库管理系统10. 数据库系统中应用程序与数据库的接口是(B)。
A. 数据库集合B. 数据库管理系统DBMSC. 操作系统OSD. 计算机中的存储介质11. 在DBS中,DBMS和OS之间关系是(D)。
数据库原理试题及答案一、选择题1. 数据库的主要特点是什么?A. 数据独立性B. 冗余性C. 数据共享性D. 数据保密性答案:A. 数据独立性2. 关系数据库中,主键的作用是什么?A. 用于建立实体之间的联系B. 用于唯一标识关系表中的每一条记录C. 用于排序和索引D. 用于限制实体的属性取值范围答案:B. 用于唯一标识关系表中的每一条记录3. 下面哪个不是SQL的基本操作?A. SELECTB. UPDATEC. DELETED. INSERT答案:C. DELETE4. 数据库ACID特性中的一致性指的是什么?A. 事务执行前后数据的一致性B. 并发操作下的数据一致性C. 数据库内部元数据的一致性D. 数据备份和恢复的一致性答案:A. 事务执行前后数据的一致性5. 数据库索引的作用是什么?A. 提高数据查询的效率B. 加快数据的插入和更新操作C. 保证数据的一致性D. 限制数据的访问权限答案:A. 提高数据查询的效率二、填空题1. 数据库中,用于描述数据之间的关系的形式称为________。
答案:表2. 数据库中,用于存储数据的基本单位称为________。
答案:字段3. 数据库中,用于组织和管理数据的软件系统称为________。
答案:数据库管理系统(DBMS)4. 关系数据库中,用于连接不同表之间的数据的字段称为________。
答案:外键5. 关系数据库中,用于限制字段取值范围的规则称为________。
答案:约束三、简答题1. 请简要描述数据库的三级模式结构。
答:数据库的三级模式结构包括外模式(视图层)、概念模式(逻辑层)和内模式(物理层)。
外模式是用户对数据库的部分数据的逻辑表达方式,用户可以通过外模式对所需数据进行查询和操作。
概念模式是数据库的全局逻辑结构,它定义了数据库中各个实体及其之间的关系,并给出了对数据进行操作的完整规则。
内模式是数据库在物理存储上的表示,它描述了数据在磁盘上的存储方式和组织结构。
可编辑修改精选全文完整版一、单选题(共20分,每题1分)1.DB、DBMS和DBS三者之间的关系是(B)A. DB包括DBMS和DBSB. DBS包括DB和DBMSC. DBMS包括DB和DBS C. DBS与DB和DBMS无关2.在数据库系统中,读脏数据是指一个事务读了另一个事务(C)A. 未更新的数据B. 未撤销的数据C. 未提交的数据D. 未刷新的数据3.加锁协议中规定“先申请先服务”的原则,可以避免数据库系统出现(A)A. 活锁B. 死锁C. 读-写冲突D. 写-写冲突4.语句DELETE FROM SC表明(A)A. 删除SC中的全部记录B. 删除基本表SCC. 删除基本表SC中的列数据D. 删除基本表SC中的部分行5.数据库设计阶段分为(D)A. 物理设计阶段、逻辑设计阶段、编程和调试阶段B. 模型设计阶段、程序设计阶段和运行阶段C. 方案设计阶段、总体设计阶段、个别设计阶段和编程阶段D. 概念设计阶段、逻辑设计阶段、物理设计阶段、实施和调试阶段6.关系笛卡尔积运算记号R×S表示(D)A. R为关系名,S为属性名B. R和S均为属性名C. R为属性名,S为关系名D. R和S均为关系名7.在DB应用中,一般一条SQL语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过哪种技术实现(B)A. 指针B. 游标C. 数组D. 栈8.下列说法中不正确的是(C)A. 任何一个包含两个属性的关系模式一定满足3NFB. 任何一个包含两个属性的关系模式一定满足BCNFC. 任何一个包含三个属性的关系模式一定满足3NFD. 任何一个关系模式都一定有码9.在下列基本表中数值5表示(C)CREATE TABLE student(Snum CHAR(5)NOT NULL UNIQUE,Sname CHAR(2));A. 表中有5条记录B. 表中有5列C. 表中字符串Snum 的长度D. 表格的大小10.在视图上不能完成的操作是(C)A. 更新视图B. 查询C. 在视图上定义新的基本表D. 在视图上定义新视图11.在DBS中,DBMS和OS之间的关系是(B)A. 相互调用B. DBMS调用OSC. OS调用DBMSD. 并发运行12.关系中行列次序的变换性质是(D)A. 行可以交换,列不可交换B. 行不可交换,列可交换C. 行、列均不可交换D. 行、列均可以交换13.单个用户使用的数据视图的描述称为(A)A. 外模式B. 概念模式C. 内模式D. 存储模式14.数据库系统安排多个事务并发执行的过程称为(C)A. 步骤B. 进程C. 调度D. 优先级15.SQL语言有两种使用方式,分别称为交互式和(C)A. 提示式SQLB. 多用户SQLC. 嵌入式SQLD. 解释式SQL16.以下不属于服务器端脚本语言的是(D)。
数据库系统原理习题答案一、选择题1. 数据库管理系统(DBMS)的主要功能是:- A. 编译程序代码- B. 管理数据的存储和访问- C. 执行操作系统命令- D. 处理网络通信答案:B2. 关系型数据库中的“关系”是指:- A. 两个表之间的连接- B. 数据库中的一个表- C. 数据库中的一个字段- D. 数据库中的一个索引答案:B二、填空题1. 在数据库中,_______ 是用来描述数据表中字段的数据类型和约束的集合。
- 答案:元组2. 数据库的完整性约束包括实体完整性、参照完整性和_______。
- 答案:域完整性三、简答题1. 描述数据库事务的ACID属性。
答案:事务的ACID属性是数据库事务正确执行的保证。
它们分别代表: - 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不执行。
- 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。
- 隔离性(Isolation):并发执行的事务之间不会相互干扰。
- 持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的,即使系统发生故障也不会丢失。
2. 解释数据库规范化的目的。
答案:数据库规范化的目的是减少数据冗余和提高数据的一致性。
通过将数据分解成多个相关的表,并建立关系来连接这些表,可以避免数据重复存储,同时确保数据的逻辑一致性。
规范化通常涉及将一个表分解成多个表,并定义它们之间的关系,这个过程遵循一系列的规范化规则,如第一范式、第二范式和第三范式等。
四、编程题1. 编写SQL语句,查询所有学生的姓名和他们所选课程的名称。
答案:```sqlSELECT , c.course_nameFROM students sJOIN enrollments e ON s.student_id = e.student_idJOIN courses c ON e.course_id = c.course_id;```2. 编写一个触发器,当新员工被添加到员工表时,自动将他们的入职日期设置为当前日期。
数据库系统原理试题+答案一、单选题(共100题,每题1分,共100分)1、数据库管理系统是计算机的A、系统软件B、数据库系统C、数据库D、应用软件正确答案:A2、下列关于触发器的说法中,错误的是A、在删除一个表的同时,不会自动地删除该表上的触发器B、为了修改一个触发器,必须先删除它,然后再重新创建C、在触发器的创建中,每个表每个事件每次只允许一个触发器D、触发器不能更新或覆盖正确答案:A3、下列关于MySQL的说法中,错误的是A、MySQL是一个RDBMSB、MySQL具有客户/服务器体系结构C、MySQL 由美国MySQL AB公司开发D、许多中、小型网站为了降低网站总体拥有成本而选择MySQL作为网站数据库正确答案:C4、在MySQL中,实体完整性是通过【】来实现的。
A、键约束B、主键约束C、主键约束和候选键约束D、候选键约束正确答案:C5、使用存储过程的好处不包括A、良好的封装性B、存储过程可作为一种安全机制来确保数据的完整性C、可增强SQL语言的功能和灵活性D、移植性好正确答案:D6、下列关于SQL的说法中,错误的是A、SQL是 SQL Server 2000专有的语言B、掌握SQL可以帮助用户与几乎所有的关系数据库进行交互C、SQL简单易学D、SQL是一种强有力的语言正确答案:A7、事务的持续性是指A、事务中包括的所有操作要么都做,要么都不做B、事务一旦提交,对数据库的改变是永久的C、一个事务内部的操作及使用的数据对并发的其他事务是隔离的D、事务执行完毕后将数据库从一个一致性状态转变到另一个一致性状态正确答案:B8、当对各种约束进行命名后,就可以使用【】语句来更新与列或表有关的各种约束。
A、CREATE TABLEB、ALTER TABLEC、SELECT TABLED、DELETE TABLE正确答案:B9、对多用户的并发操作加以控制和协调是指A、数据集成B、数据共享C、故障恢复D、并发控制正确答案:D10、标明不同任务的功能及使用状况的是A、数据操作特征表B、数据流程图C、任务分类表D、操作过程说明书正确答案:C11、在数据库中,产生数据不一致的根本原因是A、没有严格的数据保护B、未对数据进行严格的控制C、数据冗余D、数据存储量太大正确答案:C12、关系模型的组成不包括A、数据结构B、数据完整性C、数据一致性D、关系操作正确答案:C13、若D1={a1,a2,a3},D2={1,2,3},则D1XD2集合中共有【】个元组。
一、实验目的:1、了解SQL语言的特点和基本概念。
2、能够针对某种具体的DBMS(本实验采用Access2003),熟练地运用单表查询、连接查询、嵌套查询、集合查询等各种SQL查询语句对数据库中的表进行操作。
3、对相同的查询要求,能够采用多种查询方法实现,并能分析各种方法的优劣,从中选择合适的方法。
二、实验过程:1、Print the names of professors who work in departments that have fewer than 50 PhD students.解:(1)分析:本题是查询在博士生人数少于50个人的系工作的教师名字。
查询教授名字可以通过prof 表,而所查询的教授名字是有限制条件的,他所工作的系名要属于特定的集合(所有系名的一个子集),显然这个子集可以通过查询dept表获得,所以带有谓词in的嵌套子查询可以实现题目要求。
(2)语句实现:SELECT Prof.字段1FROM ProfWHERE Prof.字段2 IN (SELECT Dept.字段1 FROM Dept WHERE Dept.字段2 < 50);****************************************************;(3)查询结果:2、Print the name(s) of student(s) with the lowest gpa解:(1)分析:本题是查询成绩点最低的学生的名字。
最低的成绩点可以在student表中通过函数min(gpa)获得,而所查询学生的名字的限制为成绩点等于min(gpa), 因此可用如下嵌套子查询实现。
(2)语句实现:SELECT Student.字段2FROM StudentWHERE Student.字段6 IN(SELECT min(Student.字段6)FROM Student);****************************************************;(3)查询结果:3、For each Computer Sciences class, print the cno, sectno, and the average gpa of the student enrolled in the class.解:(1)分析:本题是查询计算机科学系的所有班的课程号、分班号、班上学生的平均绩点。
计算机科学系的所有班可以通过section表获得, 而通过enroll表可以由section表中的dname, cno, sectno获得班上所有学生的sid,而通过sid可以在student表中查得学生成绩点,最后由cno, sectno进行分组,并用函数avg(gpa),获得每组的平均成绩。
所以可用三个表的连接查询,并适当分组实现查询要求。
(2)语句实现:SELECT Section.字段2,Section.字段3,avg(Student.字段6) AS avStudent字段6FROM [Section],Enroll,StudentWHERE ((Section.字段1='Computer Sciences')and(Section.字段2=Enroll.字段4)and(Enroll.ID=Student.ID)) GROUP BY Section.字段2,Section.字段3;****************************************************;(3)查询结果:4、Print the course names, course numbers and section numbers of all classes with less than six students enrolled in them.解:(1)分析:本题是查询所有班级人数少于6的课程名,课程号,分班号。
通过section表可以查询出所有的班,其中的课程名可由查询所得的dname, cno在course表中确定,因为与班级人数有关,还需将section表和enroll表做连接,并按o, section.dname, section.sectno分组以获取所有班的人数。
所以可用连接查询、嵌套查询,并适当分组来实现查询要求。
(2)语句实现:SELECT (SELECT Course.字段2 from Coursewhere Course.字段1=Section.字段2 and Course.字段3=Section.字段1)AS Course字段2,Section.字段2,Section.字段3FROM [Section],EnrollWHERE (Section.字段2=Enroll.字段4AND section.字段1=enroll.字段3 AND section.字段3=enroll.字段5)GROUP BY Section.字段2,Section.字段3,Section.字段1HAVING count(*)<6;****************************************************;(3)查询结果:5、Print the name(s) and sid(s) of student(s) enrolled in the most classes.解:(1)分析:本题是查询加入班级数最多的学生名字、学号。
可采用临时表的方法解决。
建立一个临时表包括字段学生名字、学号和所选课程的数目(num)。
再对这个临时表进行查询(名字、学号),限制条件是所选课程数目等于max(num)。
(2)语句实现:SELECT Temp.sid, Temp.snameFROM (SELECT enroll.sid,student.sname,count(enroll.sid) AS numFROM enroll,studentWHERE enroll.sid=student.sidGROUP BY enroll.sid,student.sname) AS TempWHERE Temp.num = (SELECT max(num) From (SELECT sid,(SELECT sname FROM Student where sid=Enroll.sid)AS sname,count(*)As num FROM Enroll group by Enroll.sid));****************************************************(3)查询结果:6、Print the names of departments that have one or more majors who are under 18 years old.解:(1)分析:本题是查询所含学生至少有一个年龄小于18岁的系的名称。
在major表中可以得到每个学生所属专业情况,该系存在学生年龄小于18岁的学生(通过student表)则该系满足要求。
因此可用带有exists的嵌套子查询实现要求。
(2)语句实现:SELECT dnameFROM majorWHERE exists(SELECT*FROM Student where Student.age<18 and Student.sid=major.sid);****************************************************;(3)查询结果:7、Print the names and majors of students who are taking one of the College Geometry courses.解:(1)分析:本题查询所有选了College Geometry courses的学生的姓名和所在系名。
此题对课程名需要用通配符进行模糊查询。
学生的限制条件是存在一门College Geometry course为他所选。
因此还需用到带有exists的嵌套子查询。
(2)语句实现:SELECT (SELECT sname FROM Student where sid=Major.sid) AS sname, dnameFROM majorWHERE exists(SELECT*from Course,Enroll where Enroll.dname='Mathematics'and o in (461,462) and Enroll.sid=Major.sid);****************************************************;(3)查询结果:8、For those departments that have no majors taking a College Geometry course, print the department name and thenumber of PhD students in the department.解:(1)分析:本题是查询所含学生都没有选College Geometry course的系的名称和该系的博士生人数。
本题思路和方法与上题基本一致。
(2)语句实现:SELECT dname, numphdsFROM DeptWHERE not exists(SELECT*from Course,Enroll where Enroll.dname='Mathematics'and o in (461,462) and Enroll.sid=Major.sid);****************************************************;(3)查询结果:9、Print the names of students who are taking both a Computer Sciences course and a Mathematics course.解:(1)分析:本题是查询既选了计算机科学系课程又选了数学系课程的学生姓名是求两个集合交的问题。
因为一般的DBMS没有实现交操作,可以先根据一个条件获取一个集合然后根据第二个条件筛选,即第一个集合要选取也在第二个条件产生的集合元素中。
因此可以用带有in的嵌套子查询完成要求。
(2)语句实现:SELECT Student.snameFROM Student,EnrollWHERE Student.sid=Enroll.sid and Enroll.dname='Mathematics' and student.sname in(SELECT Student.sname FROM Student,EnrollWHERE Student.sid=Enroll.sid and Enroll.dname='Computer Sciences');****************************************************;(3)查询结果:10、Print the age difference between the oldest and youngest Computer Sciences major(s).解:(1)分析:本题是查询计算机科学性年龄最大的学生和年龄最小的学生之间的年龄差。