`

几个比较实用的数据库问题和答案

阅读更多

1.现有一个简化的学生选课系统,对象及其描述如下:学生(学号,姓名),课程(课程代号,课程名称),学生可以不选,或者至多选6门课。

 

 

create table C  (

   ID                   NUMBER(10)                      not null,

   CODE                 VARCHAR2(50),

   NAME                 VARCHAR2(50),

   constraint PK_C primary key (ID)

);

 

create table S (

   ID                   NUMBER(10)                      not null,

   CODE                 VARCHAR2(50),

   NAME                 VARCHAR2(50),

   constraint PK_S primary key (ID)

);

 

create table SC  (

   S_ID            Number(10)                      not null,

   C_ID             NUMBER(10)                      not null,

   constraint PK_S_C primary key (S_ID, C_ID),

   constraint FK_C_SC foreign key (C_ID)

         references C(ID),

   constraint FK_S_SC foreign key (S_ID)

         references S (ID)

);

 

 

A)选了 “Java程序设计” 的学生列表(按学号生序)。

select S.* from S, SC, C
WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'
ORDER BY S.CODE

 

 

B)选了3门以上课程的学生列表和选课数(按学号生序)。

SELECT S.ID,S.CODE,S.NAME,COUNT(*)

FROM S, SC

WHERE S.ID = SC.S_ID

GROUP BY S.ID,S.CODE,S.NAME HAVING COUNT(*) >= 3 ORDER BY S.CODE

 

 

C)选了0门课程的学生列表(按学号生序)。

SELECT S.* FROM S, SC

WHERE S.ID=SC.S_ID(+) AND SC.S_ID IS NULL ORDER BY S.CODE

 

SELECT S.* FROM S LEFT JOIN SC

ON S.ID=SC.S_ID WHERE SC.S_ID IS NULL ORDER BY S.CODE

--推荐第二条语句

 

D)选课最多的学生列表(按学号生序)。

SELECT S.ID,S.CODE,S.NAME FROM S, SC
WHERE S.ID = SC.S_ID GROUP BY S.ID,S.CODE,S.NAME
HAVING COUNT(*) = (
      SELECT MAX(COUNT(SC.S_ID))  FROM SC
      GROUP BY SC.S_ID)
ORDER BY S.CODE

 

 

E)仅仅选了“Java程序设计”一门课的学生列表(按学号生序)。

select S.* from S, SC, C

WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'
AND S.ID in (

SELECT S_ID from SC

GROUP BY SC.S_ID HAVING COUNT(SC.S_ID) = 1)

order by s.code

--语句结构清晰

--将IN去掉变成下面语句

 

select S.* from S, SC, C,

(select SC.S_ID, count(SC.S_ID) count from SC
 group by SC.S_ID) N

WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'
AND S.ID =
N. S_ID AND N.COUNT = 1

order by s.code

--效率高,并且可以处理多个字段,IN不能处理多个字段

 

 

 

F)选了3门课,并且其中一门为“Java程序设计”的学生列表(按学号生序)。

SELECT S.* FROM S, SC, C

WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'

AND S.ID IN (

SELECT S_ID from SC

GROUP BY SC.S_ID HAVING COUNT(SC.S_ID) = 3)

ORDER BY S.CODE

--同上题

G)即选了“Java程序设计” 又选了“Delphi程序设计”的学生列表(按学号生序)。

(select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Java程序设计')
intersect
(select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计')

--最清楚

 

select s.* from s,c,sc where s.id = sc.S_ID and sc. C_ID = c.id and c.name = 'Java程序设计' and s.id in (

select s.id from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计')

 

select S.* from S, SC, C, SC SC2, C C2
WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'
AND S.ID= SC2.S_ID AND C2.ID= SC2.C_ID AND C2.NAME = 'Delphi程序设计'
order by s.code

--最佳答案

 

H)选了“Java程序设计”没选“Delphi程序设计”的学生列表(按学号生序)。

select S.* from S, SC, C,

(select SC.S_ID from SC, C
WHERE C.ID=SC.C_ID AND C.NAME = 'Delphi程序设计') X

WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计'
AND S.ID = X. S_ID (+) AND X. S_ID IS NULL
order by s.code

 

(select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Java程序设计')
minus
(select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计')

 

 

 

2.请实现一个基于Oracle的数据库设计,完成某个磁盘的所有目录及文件信息(包括目录结构)的存储。

  目录信息包括目录名,创建时间

  文件信息包括文件名,创建时间,文件大小

  并用sql语句实现。



 create table P  (

   ID                   NUMBER(10)                      not null,

   PARENTID             NUMBER(10),

   NAME                 VARCHAR2(100),

   CREATETIME           DATE,

   constraint PK_P primary key (ID),

   constraint FK_P_PARENT foreign key (PARENTID) references P (ID)

);

create table F  (

   ID                   NUMBER(10)                      not null,

   PATHID               NUMBER(10),

   NAME                 VARCHAR2(100),

   CREATETIME           DATE,

   FILESIZE               NUMBER(10),

   constraint PK_F primary key (ID),

   constraint FK_P_F foreign key (PATHID) references P (ID)

);

A)     列出某个目录下的所有子目录列表,同级目录按名称升序排列。

SELECT * FROM P START WITH P.NAME='P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY P.NAME

B)     列出某个目录下的所有文件列表,同级目录中文件按名称升序排列。

SELECT F.* FROM F,
(SELECT P.ID, ROWNUM RN FROM P START WITH P.NAME='
P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY  P.NAME) R
WHERE F.PATHID = R.ID ORDER BY R.RN, F.NAME

C)     列出某个目录下的所有doc文件。

SELECT F.* FROM F,
(SELECT P.ID, ROWNUM RN FROM P
START WITH P.NAME='
P1' CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY  P.NAME) R
WHERE F.PATHID = R.ID AND UPPER(F.NAME) LIKE '%.DOC'
ORDER BY R.RN, F.NAME

D)列出某个目录下的所有的空目录。

SELECT R.* FROM
(SELECT P.*, ROWNUM RN FROM P START WITH P.NAME='
P1'
CONNECT BY PRIOR P.ID = P.PARENTID
ORDER SIBLINGS BY  P.NAME) R, F
WHERE R.ID=F.PATHID(+) and F.PATHID IS NULL ORDER BY R.RN

 

 

 

 

  • 大小: 51.1 KB
  • 大小: 16.8 KB
分享到:
评论

相关推荐

    数据库 第四版 答案 答案 答案

    在《数据库 第四版 答案 答案 答案》中,我们可能会深入探讨以下几个关键知识点: 1. 数据库基础概念:数据库是一个有组织的、可共享的数据集合,它能够提供数据的存储、查询、更新和管理功能。理解数据库的基本...

    SQL数据库试题及答案

    2. (分值:1.0 分)安装MS SQL Server 时,系统自动建立几个数据库,其中有一个数据库被删除后,不影响系统的正常运行,这个数据库是()。 A: master 数据库 B: model 数据库 C: tempdb 数据库 D: pubs 数据库序号...

    分布式数据库课后习题答案整理

    分布式数据库系统是一个物理上分散而逻辑上集中的系统,它使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中式数据库系统)连接起来,共同组成一个统一的数据库系统。...

    数据库课后答案课后答案

    10. **分布式数据库**:随着大数据和云计算的发展,分布式数据库成为一种趋势,它允许多个数据库分布在不同的地理位置协同工作,提供更高的可用性和扩展性。 通过深入学习和实践这些课后答案,学生可以更好地理解...

    万常选版数据库课后习题答案

    在提供的压缩包文件中,我们可以看到以下几个关键文件: 1. **第4章 数据库建模(实体——联系模型)参考答案.doc**:这部分内容涵盖了数据库设计的基础——实体-联系模型(E-R模型)。E-R模型用于描述现实世界中的...

    数据库参考答案.zip

    数据库试题通常会涉及以下几个核心知识点: 1. **数据库概念与模型**:包括数据、数据库、数据库管理系统(DBMS)、数据模型(如关系模型、实体-关系模型E-R)的概念,以及数据库设计的基本原则。 2. **SQL语言**...

    数据库应用技术 答案.zip

    在学习数据库应用技术时,我们需要关注以下几个关键知识点: 1. **数据库系统基础**:理解数据库系统的基本构成,包括数据库、数据库管理系统(DBMS)、数据库管理员(DBA)等角色及其职责。 2. **数据模型**:...

    数据库作业答案1

    它通常由以下几个部分组成: - **数据库**: 存储数据的地方。 - **数据库管理系统 (DBMS)**: 管理数据库的软件。 - **应用系统**: 使用数据库的应用程序。 - **数据库管理员 (DBA)**: 负责数据库的日常管理和...

    高级数据库课后答案

    在某些实时应用――只有几个严格定义的关键操作,必须用高效风格的代码来实现时,DBMS 性能可能不能满足其要求。另一种不使用DBMS 的原因可能是,应用可能需要以DBMS 不支持的方式来查询数据。 外部模式、内部模式...

    数据库第五版课后答案

    数据库系统的概念包括以下几个主要部分: 1. 数据模型:数据模型是描述数据结构、数据操作和数据约束的抽象框架。常见的数据模型有层次模型、网状模型、关系模型(如SQL所基于的)以及近年来兴起的NoSQL模型,如...

    高级数据库系统习题答案.docx

    数据库系统通常分为几个层次,如物理层、逻辑层和视图层,物理独立性指的是数据库的逻辑结构变化不会影响到应用程序,而逻辑独立性则意味着数据的物理存储方式改变不会影响逻辑结构。这种分离使得数据库管理员可以...

    陕西师范大学数据库习题及答案

    习题内容可能包括以下几个方面: 1. **基本概念**:数据库、数据模型(如关系模型、层次模型、网状模型)、实体-关系模型(E-R模型)、数据独立性等。 2. **SQL语言**:SQL(Structured Query Language)是数据库...

    数据库试题及答案

    本资料主要涵盖的是数据结构相关的试题及答案,虽然标题提及“数据库试题”,但根据描述和标签,主要内容似乎更偏向于数据结构,而非数据库管理。数据结构是计算机科学中处理数据组织方式的一门基础课程,它对理解和...

    四级数据库真题和答案

    全国计算机四级数据库考试通常会涵盖以下几个方面: 1. 数据库理论:包括关系模型、范式理论(第一范式到第五范式)、数据依赖、关系代数和元组关系演算等。 2. SQL语言:深入理解SELECT语句的使用,包括子查询、...

    数据库答案及实验指导书

    针对这本教材,我们有两个重要的学习资料:《习题答案.doc》和《数据库实验指导书.pdf》。 首先,让我们关注《习题答案.doc》。这个文档通常包含了教材中各章节的练习题和思考题的解答。通过研读这些答案,你可以...

    历年数据库试题及答案

    在数据库试题中,通常会涵盖以下几个关键知识点: 1. **数据库系统基础**:包括数据库的定义、类型(如关系型数据库、非关系型数据库),以及数据库管理系统(DBMS)的基本功能和作用。 2. **关系模型**:这是最...

    数据库习题和答案

    根据给定的“数据库习题和答案”的标题、描述及部分内容,我们可以提炼出以下几个重要的知识点: ### 数据库基础知识概述 数据库是一种用于存储和管理数据的系统。它通过提供一种结构化的方式来组织、存储和处理...

    数据库系统工程师考试试卷+答案

    试卷可能包含以下几个关键知识点: 1. **数据库基础理论**:这部分可能包括数据库的定义、类型(如关系型、非关系型)以及它们的应用场景。考生需要理解数据库模型,如实体关系模型(ER模型)、层次模型和网状模型...

    软考-中级数据库工程师-2013-2019年真题(上午下午真题及答案)

    数据库工程师的考试内容通常涵盖以下几个核心知识点: 1. 数据库基础理论:包括数据库系统的基本概念,如关系模型、数据完整性、事务处理等。考生需要理解数据库的结构、操作方式以及数据管理的基本原则。 2. SQL...

Global site tag (gtag.js) - Google Analytics