转载地址为:http://www.cnblogs.com/finejob/articles/974900.html

题目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#]) )

经过调试验证的正确答案:
SELECT SN, SD FROM S 
           WHERE S# 
                              IN (SELECT SC.S# 
                                                      FROM SC RIGHT JOIN C 
                                                                   ON SC.C# = C.C#
                                                      GROUP BY SC.S#  --在结果集中以学生分组,分组后的 SC.C#选课数=C.C#课程数 即为全部课程
                                                      HAVING   COUNT(distinct(SC.C#))  --注意:一个学生同一门课程可能有多条成绩记录,需要distinct
                                                                          = ( select count(*) from C ) --注意:HAVING条件不能用COUNT(distinct(SC.C#)) = COUNT(distinct(C.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.SNOFROM 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:
======

有如下表记录:
ID        Name       EmailAddress                  LastLogon
100        test4       test4@yahoo.cn       2007-11-25 16:31:26
13          test1       test1@yahoo.cn       2007-3-22 16:27:07
19          test1       test1@yahoo.cn       2007-10-25 14:13:46
42          test1       test1@yahoo.cn       2007-11-20 14:20:10
45          test2       test2@yahoo.cn       2007-4-25 14:17:39
49          test2       test2@yahoo.cn       2007-5-25 14:22:36

用一句sql查询出每个用户最近一次登录的记录(每个用户只显示一条最近登录的记录)

方法一:
SELECT a.* from users  a  inner join
                              (SELECT [Name], LastLogon=MAX(LastLogon)    FROM  users    GROUP BY [Name])  b
                               on a.[Name]=b.[Name] and a.[LastLogon]=b.[LastLogon]

方法二:
SELECT a.* from users  a   inner join
                               (SELECT  Name,MAX(LogonID) LogonID     FROM  users    GROUP BY [Name])  b
                             on a.LogonID=b.LogonID
                             --where a.LogonId=b.LogonId

转载于:https://www.cnblogs.com/davidwang456/archive/2013/03/19/2969481.html

数据库常用面试题(SQL Server) (转载)相关推荐

  1. 把Oracle数据库移植到Microsoft SQL Server 7 0

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...

  2. C#连接4种类型数据库(Access、SQL Server、Oracle、MySQL)

    C#连接4种类型数据库(Access.SQL Server.Oracle.MySQL) 1.C#连接连接Access using System.Data; using System.Data.OleD ...

  3. mysql bak 还原数据库文件格式_Navicat操作SQL server 2008R2文件.bak文件还原

    项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...

  4. 我们常用的基础SQL Server能干啥?

    我们常用的基础SQL Server能干啥? 开发工具与关键技术:SQL Server 2014 Management Studio SQL Server数据库的功能 作者:李国旭 撰写时间:2019年 ...

  5. sql创建计算机用户,2015年计算机四级数据库复习要点:SQL Server 登录账户

    2015年计算机四级数据库复习要点:SQL Server 登录账户 系统内置的登录账户 1. BUILTIN\Administrators:是一个Windows组账户,表示所有的Windows Adm ...

  6. mysql数据库的分离_数据库分离和附加 (SQL Server)

    数据库分离和附加 (SQL Server)Database Detach and Attach (SQL Server) 06/30/2020 本文内容 适用于:Applies to: SQL Ser ...

  7. 数据库分离和附加 (SQL Server)

    数据库分离和附加 (SQL Server) 2018/11/2 适用对象:SQL ServerAzure SQL 数据库Azure SQL 数据仓库并行数据仓库 可以分离数据库的数据和事务日志文件,然 ...

  8. sql数据库服务器端口修改,SQL SERVER 2012更改默认的端口号为1772

    打开开始菜单,找到sqlserver的配置管理器,点击打开 按下图配置右边窗口三项: 按下图配置右边三项: 按下图配置右边三项: 点击下图左边的SQL Server网络配置/MSSQLSERVER的协 ...

  9. 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步...

    Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...

最新文章

  1. 全球自动驾驶政策概况及特征研究
  2. ios学习——键盘的收起
  3. Clustering Coefficient
  4. Triangular Sums http://acm.nyist.net/JudgeOnline/problem.php?pid=122
  5. WindowsMobile/Win Form-界面自适应
  6. linux 命令修改网络,linux网络命令学习
  7. LAMP+Redis详解(一)——基本原理
  8. python开发接口
  9. ryzen linux 搭配显卡,R7 1700配什么显卡?AMD Ryzen7 1700搭配显卡推荐 (全文)
  10. 就业推荐表鉴计算机水平,毕业生就业推荐表的鉴定评语
  11. linux 内核rps,Linux kernel之网络rps
  12. Android页面的跳转
  13. html5允许属性值不使用引号,HTML5概述 - 阿振的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. 2021-01-16 SONiC系统管理10 Telemetry
  15. 关于光通信的最强进阶科普
  16. 软件测试工程师是这么写年终报告的
  17. 跨专业计算机研究生如何毕业论文,跨专业考研论文要求
  18. 企业微信 ios 识别二维码 无法直接跳转 (安卓正常)
  19. 支付宝推“移动花卡”:花呗账单延后还
  20. 算法设计与分析—分支限界法应用(头歌实验)

热门文章

  1. linux远程图形操作系统,二、Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面...
  2. 服务器拉取openssl文件,使用openssl从服务器获取证书
  3. python分发包_Python 分发包中添加额外文件的方法
  4. 无边框窗体移动的方法
  5. java中的stack类和C++中的stack类的区别
  6. 物品回收平台java代码_java垃圾回收
  7. 便携式不锈钢管道焊接机器人_核电站双相不锈钢管道的焊接工艺及焊接接头性能探讨...
  8. mysql sql乱码怎么解决_MYSQL数据库导入SQL文件出现乱码如何解决
  9. mysql时间变成季度_Mysql 时间操作(当天, 昨天,7 天,30 天, 半年, 全年, 季度)
  10. 机器学习——线性回归数学推导