为管理学员培训信息,建立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

java常见手写sql面试题_java sql常见面试题相关推荐

  1. 你对java工程师的理解_JAVA工程师常见面试题(一):谈谈对死锁的看法?

    什么是死锁? 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进. 因此我们举个例子来描述,如果此时有一个线程A,按照先锁1再 ...

  2. java面试题:Redis常见面试题(实际面试有被问到)

    目录 1.Redis和Memcached相比,有哪些优势? 2.Redis为什么要把数据放到内存中? 3.Redis 为何这么快? 4.为何使用单线程? 5.缓存三大问题以及解决方案? 缓存穿透:查询 ...

  3. Java面试指北!13个认证授权常见面试题/知识点总结!| JavaGuide

    大家好,我是 Guide哥!端午已过,又要开始工作学习啦! 我发现有很多小伙伴对认证授权方面的知识不是特别了解,搞不清 Session 认证.JWT 以及 Cookie 这些概念. 所以,根据我根据日 ...

  4. java基本类型的面试,15、基本类型常见面试题

    1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错? 答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表 ...

  5. 测试面试题集-Dubbo常见面试题

    VOL 175 13 2020-11 今天距2021年48天 这是ITester软件测试小栈第175次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  6. mysql数据库的笔试题_MySQL数据库常见面试题

    SQL基础 1.MySQL的数据类型 2.MySQL的SQL语句分类 DDL(Data Definition Language)语句:数据定义语言,这些语句定义了不同的数据段.表.列.索引等数据库对象 ...

  7. 【面试题】计算机网络常见面试题

    文章目录 TCP的三次握手.四次挥手? 为什么要三次握手?两次行吗? 第 2 次握手传回了 ACK,为什么还要传回 SYN? 四次挥手 三次握手过程中可以携带数据吗? 三次握手连接阶段,最后一次ACK ...

  8. 合肥Java面试常考题_北大青鸟java 面试--常见面试题(中)

    上一文中,我们总结了java面试的基础,多线程,jvm的常见面试题,本文合肥北大青鸟合工大校区的袁老师继续介绍面试中网络.数据结构和算法.分布式理论和微服务的常见面试题. 一.网络 网络的话,主要集中 ...

  9. Java虚拟机常见面试题

    2019独角兽企业重金招聘Python工程师标准>>> 1.java引用的四种状态 强引用.软引用.弱引用.虚引用. 强引用 new一个Object存放在堆内存,然后用一个引用指向它 ...

最新文章

  1. Dubbo基础专题——第一章(带你认识Dubbo)
  2. Nginx 路由--Location的使用
  3. opencv python cv2.imdecode()函数报错 :TypeError: Expected cv::UMat for argument 'buf'
  4. 可实现自动设置尺寸的图片上传类
  5. xaml语言建立首个win8 Metro应用,rss阅读器
  6. IOS开发基础知识--碎片23
  7. Tensorflow学习——Keras
  8. 简单php修改mysql数据类型_MySQL入门很简单—MySQL数据类型
  9. 基于dubbo + maven 的项目搭建
  10. 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
  11. matlab对有周期性噪声的图像去噪,数字图像中去除周期性噪声研究.doc
  12. 7000条短信接口!福利赠送!
  13. dlna和miracast可以共存吗_关于无线显示技术,AirPlay,DLNA,Miracast,WiDi 等有何异同?...
  14. 路由与交换技术笔记(eNSP)
  15. Unity 快速实现镜子效果
  16. redis层级结构存储键值对
  17. 昔者,圣人之作易也,幽赞神明而生蓍
  18. C#panel渐变绘制
  19. 龙宫旅游策划方案:5A景区的突破性发展!
  20. 洞悉旅居新市场,木莲庄酒店集团开拓酒店多元新玩法

热门文章

  1. 微信公众号使用:微信公众平台企业号一次发布多条图文消息的方法
  2. Android10 读取和写入手机内部存储
  3. Unity+Android 打开安卓文件管理器,并拿到文件的真实路径
  4. 25 Creative Ways to Promote Your App for Free
  5. signature=f380c172efecdd0f7b9329d16d09ca45,Virtual Identity Signs in Online Communication
  6. Delta台达PLC控制器远程维护远程上下载操作说明
  7. http协议之response响应详解
  8. VBA中窗体模块、标准模块和类模块的区别
  9. 设定了所有种子后每次结果还是不一样 pytorch可重复 可复现问题
  10. Android开发 .9图 使用备忘