设为首页 加入收藏

TOP

oracle面试题及其答案(八)
2014-11-24 02:23:02 来源: 作者: 【 】 浏览:357
Tags:oracle 试题 及其 答案
于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
16. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
17. SQL Server常用测试题(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(*)=COUNT([S#]))
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)
  
18. SQL Server常用测试题(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
19. Question 1:Can you use a batch SQL or store procedure to calculating the Number of Days in a Month
找出当月的天数
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+’-’+cast(month(getdate()) as varchar)+’-01′ as datetime))))


20. Question2:Can you use a SQL statement to calculating it!
How can I print “10 to 20″ for books that sell for between $10 and $20,”unknown” for books whose price is null, and “other” for all other prices


select bookid,bookname,price=case when price is null then ‘unknown’
when price between 10 and 20 then ’10 to 20′ else price end
from books
21. Question3:Can you use a SQL statement to finding duplicate values!
How can I find authors with the same last name
You can use the table authors in datatabase pubs. I want to get the result as below:
Output:
au_lname number_dups
—————————————- ———–
Ringer 2
(1 row(s) affected)
Answer 3
select au_lname,number_dups=count(1) from authors group by au_lname
22. Question4:Can you create a cross-tab report in my SQ

首页 上一页 5 6 7 8 9 下一页 尾页 8/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何判断一段程序是由 C 编译程序.. 下一篇用链表模拟大整数加法运算

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: