经过昨天的一次面试,发觉自己SQL水平相当之差。故今天我自己操练了一套SQL题,得到一些提高。以下是练习内容,希望对大家也有所帮助:
问题描述:
为管理岗位业务培训信息,建立3个表:
S (SID,SNAME,SDEPT,SEX,AGE) SID,SNAME,SDEPT,SEX,AGE 分别代表学号、学员姓名、所属部门、学员性别、学员年龄
C (CID,CNAME ) CID,CNAME 分别代表课程编号、课程名称
SC ( SID,CID,GRADE ) SID,CID,GRADE 分别代表学号、所选修的课程编号、学习成绩
表结构与数据见Data4SqlTest1.sql
要求实现如下5个处理:
1. 使用标准SQL嵌套语句查询选修课程名称为“英语”的学员学号和姓名
2. 使用标准SQL Join语句查询选修课程名称为“英语”的学员学号和姓名
3. 使用标准SQL语句查询不选修“数学”课程的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过3门的学员学号和所属单位
1. 使用标准SQL嵌套语句查询选修课程名称为“英语”的学员学号和姓名
SELECT SNAME,SDEPT FROM S
WHERE SID IN(
SELECT SID FROM C,SC
WHERE C.CID=SC.CID
AND CNAME='英语')
2. 使用标准SQL Join语句查询选修课程名称为“英语”的学员学号和姓名
SELECT SNAME,SDEPT FROM S
JOIN SC ON S.SID=SC.SID JOIN C ON C.CID=SC.CID
WHERE CNAME='英语'
3. 使用标准SQL语句查询不选修“数学”课程的学员姓名和所属单位
select SNAME,SDEPT
from S
where SID not in(
select SC.SID
from SC
right join (select S.SID,C.CID from S join C ) as T on SC.SID=T.SID and SC.CID=T.CID join C on T.CID=C.CID
where C.CNAME='数学' and SC.SID is not null
)
或者是:
SELECT SNAME,SDEPT FROM S
WHERE SID NOT IN(
SELECT SID FROM SC
WHERE CID IN (SELECT CID FROM C WHERE CNAME='数学'))
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
select SNAME,SDEPT
from S
where SID in
(select S.SID
from S
inner join SC on S.SID=SC.SID
group by S.SID
having count(CID)=(select count(1) from C)
)
5. 查询选修了课程的学员人数
SELECT 学员人数=COUNT(DISTINCT (SID)) FROM SC
6. 查询选修课程超过3门的学员学号和所属单位
SELECT SNAME,SDEPT FROM S
WHERE SID IN(
SELECT SID FROM SC
GROUP BY SID
HAVING COUNT(DISTINCT (CID))>3)
第一次发博客请多关照 期待大家能对上述题目做更好的解答
分享到:
相关推荐
SQL server 2008
sql语句中的精华,简单明了,易于学习,对于自学者非常有好处,值得去下载看看
自己学习的笔记--查询计算机系CS男学生学号、姓名和考试成绩 SELECT A.Sno,A.Sname,B.degree FROM student A,sc B WHERE A.Sdept = 'CS' AND A.Ssex = '男' AND A.Sno = B.sno SELECT A.Sno,A.Sname,B.degree FROM ...
Sqlserver2008--学习笔记(自己总结)
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
边看书,边想,边写 书名:SQL Server 2000程序设计
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
本人培训期间的笔记。Oracle数据库包括标的建立,查询语句,事物管理,数据库设计等。
本人学习MySQL笔记,常用的数据库操作增删改查等和条件,排序,分页,聚合函数,分组,连接,子查询等高级数据库操作的总结
SQL 特殊语句(学习笔记),以XML 返回,处理大批量数据的添加,转换类型等实现
Todd总结的Mysql/MariaDB 基本语句,语法,让你三分钟快速入门sql语法,学习mysql的可以在安装完按照文档中的命令练习,很快就能掌握基本的mysql语句。
SQLServer数据库sql语句基本应用全解,是我学习过程中的笔记,我觉得很有用,所以分享给大家!!!
菜鸟级别入门笔记,以下语句都在sqlserver 2008中调试过,是学习sqlserver的入门\基本语句.当然,如果你的目的仅仅是使用数据库, 而不是维护\管理数据库,我想掌握这些基本也就够了.
SQL语句学习手册实例版(笔记) <br>可以给新手提供一个参考。
文档包括三部分,包括sql语句的基础语法和一些简单的小测试,最后有比较综合的练习,是之前学习sql时候做的笔记,希望对大家有帮助
SQL学习笔记,记录常用的SQL语句及用例。 以Oracle为主,再加上MySQL,SqlServer的一些区别
自己整理的SQL学习笔记,包括常用SQL语句使用方式,通俗易懂,学习SQL必备,
sqlserver数据库的学习笔记,里面有详细的知识模块,每一个模块都分得很清楚,有查修修改的sql语句,和语法,还有例子,让你一看就明白
多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] ...
SQL学习笔记,主要用来查询常用sql语句以及语法。