`
thisisvoa
  • 浏览: 63635 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java sql常见面试题

阅读更多

2007年09月18日 星期二 下午 05:28题目1

  问题描述:

  为管理学员培训信息,建立3个表:

  S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄

  C (C#,CN ) C#,CN 分别代表课程编号、课程名称

  SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

  1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

  --实现代码:

  SELECT SN,SD FROM S

  WHERE [S#] IN(

  SELECT [S#] FROM C,SC

  WHERE C.[C#]=SC.[C#]

  AND CN=N'税收基础')

  2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

  --实现代码:

  SELECT S.SN,S.SD FROM S,SC

  WHERE S.[S#]=SC.[S#]

  AND SC.[C#]='C2'

  3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

  --实现代码:

  SELECT SN,SD FROM S

  WHERE [S#] NOT IN(

  SELECT [S#] FROM SC

  WHERE [C#]='C5')

  4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

  --实现代码:

  SELECT SN,SD FROM S

  WHERE [S#] IN(

  SELECT [S#] FROM SC

  RIGHT JOIN

  C ON SC.[C#]=C.[C#] GROUP BY [S#]

  HAVING COUNT(*)=(SELECT COUNT(*) FROM C) );

  5. 查询选修了课程的学员人数

  --实现代码:

  SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC

  6. 查询选修课程超过5门的学员学号和所属单位

  --实现代码:

  SELECT SN,SD FROM S

  WHERE [S#] IN(

  SELECT [S#] FROM SC

  GROUP BY [S#]

  HAVING COUNT(DISTINCT [C#])>5)

题目2

  问题描述:

  已知关系模式:

  S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名

  C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师

  SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

  1. 找出没有选修过“李明”老师讲授课程的所有学生姓名

  --实现代码:

  SELECT SNAME FROM S

  WHERE NOT EXISTS(

  SELECT * FROM SC,C

  WHERE SC.CNO=C.CNO

  AND CNAME='李明'

  AND SC.SNO=S.SNO)

  2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

  --实现代码:

  SELECT S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

  FROM S,SC,(

  SELECT SNO

  FROM SC

  WHERE SCGRADE<60

  GROUP BY SNO

  HAVING COUNT(DISTINCT CNO)>=2

  )A WHERE S.SNO=A.SNO AND SC.SNO=A.SNO

  GROUP BY S.SNO,S.SNAME

  3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

  --实现代码:

  SELECT S.SNO,S.SNAME

  FROM S,(

  SELECT SC.SNO

  FROM SC,C

  WHERE SC.CNO=C.CNO

  AND C.CNAME IN('1','2')

  GROUP BY SNO

  HAVING COUNT(DISTINCT CNO)=2

  )SC WHERE S.SNO=SC.SNO

  4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

  --实现代码:

  SELECT S.SNO,S.SNAME

  FROM S,(

  SELECT SC1.SNO

  FROM SC SC1,C C1,SC SC2,C C2

  WHERE SC1.CNO=C1.CNO AND C1.NAME='1'

  AND SC2.CNO=C2.CNO AND C2.NAME='2'

  AND SC1.SCGRADE>SC2.SCGRADE

  )SC WHERE S.SNO=SC.SNO

  5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

  --实现代码:

  SELECT S.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]

  FROM S,(

  SELECT SC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE

  FROM SC SC1,C C1,SC SC2,C C2

  WHERE SC1.CNO=C1.CNO AND C1.NAME='1'

  AND SC2.CNO=C2.CNO AND C2.NAME='2'

  AND SC1.SCGRADE>SC2.SCGRADE

  )SC WHERE S.SNO=SC.SNO


题目3:
INNER JOIN返回的结果集是两个表中所有相匹配的数据。

inner Join 内连接,也就是一般的相等连接
用途:

当你要从两个或者以上的表中选取结果集时,你就会用到INNER JOIN。

例:

“Employees”表中的数据如下,

OID                   Name

01               Hansen, Ola

02                 Svendson, Tove

03                Svendson, Stephen

04                Pettersen, Kari


“Orders”表中的数据如下:

ID                  Product

01                  Printer

03                   Table

03                    Chair


用Employees的ID和Orders的ID相关联选取数据:

SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.ID = Orders.ID


返回结果:

Name                     Product

Hansen, Ola              Printer

Svendson, Stephen         Table

Svendson, Stephen            Chair


或者你也可以用JOIN关键字来完成上面的操作:

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.ID = Orders.ID


INNER JOIN的语法:

SELECT field1, field2, field3
FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield


题目4:

外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。


1. left outer join:左外关联


select e.last_name, e.department_id, d.department_name 
from employees e 
left outer join departments d 
on (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。

2. right outer join:右外关联

select e.last_name, e.department_id, d.department_name 
from employees e 
right outer join departments d 
on (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。

3. full outer join:全外关联

select e.last_name, e.department_id, d.department_name 
from employees e 
full outer join departments d 
on (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。

select * from tf_purview where purviewcode in (select purviewcode                         from tf_purview                       group by purviewcode                      having count(*) > 1) order by purviewcode

分享到:
评论
1 楼 flyfx 2012-04-10  
不错、不错 、谢谢分享啊

相关推荐

    sql面试题,JAVA常见面试题120道

    在准备Java和SQL面试时,理解并掌握这两个领域的核心概念是至关重要的。...同时,文档“java面试常见问题 120道.doc”和压缩包中的“sql试题.rar”将提供具体的题目和解答,进一步巩固你的理解和应用能力。

    java sql 数据库 面试 面试试题

    以下是一些常见的Java SQL数据库面试题及其详细解答,旨在帮助你准备面试: 1. **Java与数据库连接** - JDBC(Java Database Connectivity)是什么?它是如何工作的? - 描述一下JDBC驱动的四个主要类型。 - ...

    java常见面试题合集

    以下是一些基于“java常见面试题合集”的相关知识点: 1. **基础语法**: - 类与对象:理解类的定义、对象的创建与访问权限。 - 继承与多态:掌握单一继承和接口的多实现,以及方法的重写和重载。 - 封装与抽象...

    sql面试题,java面试题

    常见的SQL面试题涵盖以下几个方面: 1. 数据库基本概念:理解数据库、表、列、主键、外键等概念。 2. SELECT语句:熟练掌握选择、投影、联接、分组、排序、分页等查询操作。 3. 数据操作:了解INSERT、UPDATE、...

    Java面试常见面试题

    Java作为一门广泛使用的编程语言,其面试题涵盖了多个核心领域,包括基础语法、高级特性、容器、并发编程、SSM框架、JVM优化、数据库管理、服务器配置以及分布式技术。以下将详细介绍这些知识点: 1. **Java基础**...

    【面试必备】JAVA 最常见面试题全解析 附 PDF.pdf_java面试_javapdf_java_面试题_

    这份"【面试必备】JAVA 最常见面试题全解析 附 PDF"文档,正是为准备Java面试的开发者量身定制的资源,涵盖了Java的基础到高级知识点,旨在帮助你全面理解和掌握Java技术。 一、基础篇 1. Java语法:包括变量、数据...

    sql常见面试题

    ### SQL常见面试题解析 #### 1. 实现从`TestDB`数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目 这个问题的核心在于如何比较两个科目的发生额,并且确保所有月份都满足条件。假设`TestDB`表...

    2018年java常见面试题

    2018年的Java面试题反映了当时的行业趋势和技术重点,对于求职者和开发者来说,理解这些知识点至关重要。以下是一些可能出现在面试中的关键Java概念和问题: 1. **Java基础:** - **变量与数据类型**:理解基本...

    Java常见面试题208道.docx

    面试中,Java开发者需要对基础知识、容器、多线程、反射、对象拷贝、Java Web、异常处理、网络编程、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、消息中间件如RabbitMQ和Kafka、...

    Java常见面试题.rar

    这份“Java常见面试题.rar”压缩包文件显然为求职者提供了全面的准备材料,旨在帮助他们应对可能出现的各种Java面试挑战。 在Java面试中,常见的知识点包括但不限于以下几个方面: 1. **基础语法**:这是面试的...

    JAVA项目经理面试题.pdf

    由于提供的【部分内容】信息量非常庞大且部分内容重复、混乱,难以从中准确提取出完整的知识点。但从这些内容片段中,...在实际的面试中,这些问题将帮助面试官评估候选人是否具备带领JAVA项目成功的必要知识和经验。

    基础SQL_java程序员面试试题

    【SQL基础知识】 SQL,全称Structured Query Language,是一种用于管理关系数据库的标准语言。它用于查询、插入、更新和删除数据,...这些知识点是Java程序员面试中常见的题目,理解和掌握它们对于准备面试至关重要。

    java陷阱常见面试题

    本文将深入探讨Java基础陷阱、Java客户端陷阱以及Java服务器陷阱,并提供一些常见的面试题,帮助你更好地理解和应对这些问题。 一、Java基础陷阱 1. 内存管理:Java使用垃圾回收机制管理内存,但过度依赖可能导致...

    Java架构师面试题

    Java架构师面试题涵盖了许多关键领域,包括J2EE开发、大数据处理、日志管理、权限分配、服务扩展性、负载均衡、性能调优、系统整合、软件开发模型、云计算理解以及框架比较与安全性分析。以下是对这些知识点的详细...

    2018最新最全java高级工程师面试题

    Java作为一门广泛使用的编程语言,其高级工程师面试题往往涵盖了多方面的知识点,旨在考察候选人的技术深度、广度以及实际问题解决能力。2018年最全的Java高级工程师面试题集锦,包含了十几个文档,可以预见这些文档...

    java、sql面试基础题

    虽然题目中没有提供具体的SQL题目,但这里是一些常见的SQL面试基础知识点: 1. 数据库操作:包括创建数据库、表,插入、更新和删除数据,以及查询数据。 2. SQL语句类型:SELECT用于查询,INSERT用于插入,UPDATE...

    Java-常见面试题.pdf

    "Java面试题详解" 创建对象的方式 在 Java 中,创建对象有五种方式: 1. 手动 new 通过构造函数创建 2. 实现超类 Object 的 Cloneable 方法 3. 通过反射获取类模板对象,再通过 Class 对象的 newInstance() 方法...

    经典sql-java面试题

    最后,提到的“JAVA面试宝典.doc”和“sql面试题.rar”很可能是两份宝贵的资源,前者可能包含了丰富的Java面试知识点和解题策略,后者则可能包含各种SQL面试题及解答。利用这些资源进行系统性的学习和练习,将大大...

    后端+Java常见面试题+面试用

    多年工作经验准备的Java面试题 此套面试题包括了Java基础知识, JAVA高阶方面包括了JVM的面试题 数据库方面包括了MySQL的面试题,重点是MySQL索引,锁,事务,SQL优化等常用的考点 框架方面主要就是springboot框架,...

    交通银行Java专业面试题

    【交通银行Java专业面试题解析】 在准备交通银行的Java专业面试时,了解常见的Java编程概念和技术至关重要。交通银行作为一家国际知名的金融机构,其技术面试通常会涵盖Java的基础知识、面向对象编程、并发处理、...

Global site tag (gtag.js) - Google Analytics