java常见手写sql面试题_java sql常见面试题
为管理学员培训信息,建立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常见面试题相关推荐
- 你对java工程师的理解_JAVA工程师常见面试题(一):谈谈对死锁的看法?
什么是死锁? 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进. 因此我们举个例子来描述,如果此时有一个线程A,按照先锁1再 ...
- java面试题:Redis常见面试题(实际面试有被问到)
目录 1.Redis和Memcached相比,有哪些优势? 2.Redis为什么要把数据放到内存中? 3.Redis 为何这么快? 4.为何使用单线程? 5.缓存三大问题以及解决方案? 缓存穿透:查询 ...
- Java面试指北!13个认证授权常见面试题/知识点总结!| JavaGuide
大家好,我是 Guide哥!端午已过,又要开始工作学习啦! 我发现有很多小伙伴对认证授权方面的知识不是特别了解,搞不清 Session 认证.JWT 以及 Cookie 这些概念. 所以,根据我根据日 ...
- java基本类型的面试,15、基本类型常见面试题
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错? 答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表 ...
- 测试面试题集-Dubbo常见面试题
VOL 175 13 2020-11 今天距2021年48天 这是ITester软件测试小栈第175次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...
- mysql数据库的笔试题_MySQL数据库常见面试题
SQL基础 1.MySQL的数据类型 2.MySQL的SQL语句分类 DDL(Data Definition Language)语句:数据定义语言,这些语句定义了不同的数据段.表.列.索引等数据库对象 ...
- 【面试题】计算机网络常见面试题
文章目录 TCP的三次握手.四次挥手? 为什么要三次握手?两次行吗? 第 2 次握手传回了 ACK,为什么还要传回 SYN? 四次挥手 三次握手过程中可以携带数据吗? 三次握手连接阶段,最后一次ACK ...
- 合肥Java面试常考题_北大青鸟java 面试--常见面试题(中)
上一文中,我们总结了java面试的基础,多线程,jvm的常见面试题,本文合肥北大青鸟合工大校区的袁老师继续介绍面试中网络.数据结构和算法.分布式理论和微服务的常见面试题. 一.网络 网络的话,主要集中 ...
- Java虚拟机常见面试题
2019独角兽企业重金招聘Python工程师标准>>> 1.java引用的四种状态 强引用.软引用.弱引用.虚引用. 强引用 new一个Object存放在堆内存,然后用一个引用指向它 ...
最新文章
- Dubbo基础专题——第一章(带你认识Dubbo)
- Nginx 路由--Location的使用
- opencv python cv2.imdecode()函数报错 :TypeError: Expected cv::UMat for argument 'buf'
- 可实现自动设置尺寸的图片上传类
- xaml语言建立首个win8 Metro应用,rss阅读器
- IOS开发基础知识--碎片23
- Tensorflow学习——Keras
- 简单php修改mysql数据类型_MySQL入门很简单—MySQL数据类型
- 基于dubbo + maven 的项目搭建
- 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
- matlab对有周期性噪声的图像去噪,数字图像中去除周期性噪声研究.doc
- 7000条短信接口!福利赠送!
- dlna和miracast可以共存吗_关于无线显示技术,AirPlay,DLNA,Miracast,WiDi 等有何异同?...
- 路由与交换技术笔记(eNSP)
- Unity 快速实现镜子效果
- redis层级结构存储键值对
- 昔者,圣人之作易也,幽赞神明而生蓍
- C#panel渐变绘制
- 龙宫旅游策划方案:5A景区的突破性发展!
- 洞悉旅居新市场,木莲庄酒店集团开拓酒店多元新玩法
热门文章
- 微信公众号使用:微信公众平台企业号一次发布多条图文消息的方法
- Android10 读取和写入手机内部存储
- Unity+Android 打开安卓文件管理器,并拿到文件的真实路径
- 25 Creative Ways to Promote Your App for Free
- signature=f380c172efecdd0f7b9329d16d09ca45,Virtual Identity Signs in Online Communication
- Delta台达PLC控制器远程维护远程上下载操作说明
- http协议之response响应详解
- VBA中窗体模块、标准模块和类模块的区别
- 设定了所有种子后每次结果还是不一样 pytorch可重复 可复现问题
- Android开发 .9图 使用备忘