sql语句找出相同数据题 查询和数学系李强选相同课程的学生表

数据库(8)
数据库中有三张表,分别为student,course,SC(即学生表,课程表,选课表)
//三张表截图如下:
--1.分别查询学生表和学生修课表中的全部数据。
SELECT * FROM student--查询学生表
SELECT * FROM course--查询课程表
--2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
SELECT Sno 学号,Cno 课程号,Grade 成绩
WHERE Grade BETWEEN 70 AND 80
--3.查询C01号课程成绩最高的分数
SELECT TOP 1 Grade&
WHERE Cno='C01'&
ORDER BY Grade DESC--降序DESC,升序ASC
--4.查询学生都选修了哪些课程,要求列出课程号。
SELECT Cname AS 学生选修的课程,Cno AS 课程号
FROM course
WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用来去除重复
--5.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
SELECT AVG(Grade) 平均成绩,MAX(Grade) 最高成绩,MIN(Grade) 最低成绩
WHERE Cno='C02'&
--6.统计每个系的学生人数。
SELECT Sdept 系别,COUNT(*) 人数
FROM student&
WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)&
GROUP BY Sdept
--7.统计每门课程的修课人数和考试最高分。
SELECT Cname 课程名,COUNT(*) 修课人数,MAX(Grade) 考试最高分
FROM SC,course
o IN(SELECT DISTINCT Cno FROM SC ) o
--8.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
SELECT student.Sname 学生姓名,student.Sno 学生学号,COUNT(SC.Sno) 选课门数
FROM student&
inner join SC ON SC.Sno=student.Sno
GROUP BY student.Sname,student.Sno
ORDER BY COUNT(SC.Sno) ASC
--9.统计选修课的学生总数和考试的平均成绩。
SELECT COUNT(DISTINCT(Sno)) AS 学生总数,AVG(Grade) AS 平均成绩
FROM SC& --//用DISTINCT消除重复的行
--10.查询选课门数超过2门的学生的平均成绩和选课门数。
SELECT Student.Sname,AVG(Sc.Grade) 平均成绩,COUNT(SC.Sno) 选课门数
--内联接join或inner join,内联系是比较运算符,只返回符合条件的行
&&& JOIN Student ON (SC.Sno = Student.Sno)
&&& JOIN Course ON (SC.Cno = o)
GROUP BY Student.Sname
HAVING COUNT(o) &2--分组条件
--11.列出总成绩超过200分的学生,要求列出学号、总成绩。
SELECT Sno 学号,SUM(Grade) 总成绩
GROUP BY Sno
HAVING SUM(Grade)&200
--17.查询选修了c02号课程的学生的姓名和所在系。
SELECT Sname 学生姓名,Sdept 所在系,SC.Cno AS 选修课程
FROM student
inner join SC ON student.Sno=SC.Sno
--12.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
SELECT Sname 学生姓名,SC.Cno 课程号,SC.Grade 成绩
FROM student
inner join SC ON student.Sno=SC.Sno--内连接表SC查询
WHERE SC.Grade&80
ORDER BY SC.Grade DESC
--13.查询计算机系男生修了&数据库基础&的学生的姓名、性别、成绩。
SELECT Sname 姓名,Ssex 性别,SC.Grade 成绩
FROM student
inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='数据库基础') --显示成绩的条件
AND student.Sno=SC.Sno --显示成绩的学生的学号
WHERE Sdept='计算机系' AND Ssex='男'&
--14.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
--这题使用到了表的自连接,所以需要给表取两个别名,如A和B
SELECT A.Sname 年龄相同的学生的姓名,A.Sage 年龄
FROM student A&
inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
GROUP BY A.Sname,A.Sage
ORDER BY A.Sage
--21.查询哪些课程没有人选,要求列出课程号和课程名。
SELECT Cno AS 课程号,Cname AS 课程名
FROM course
WHERE Cno NOT IN(SELECT o FROM SC)
--15.查询有考试成绩的所有学生的姓名、修课名称及考试成绩
--要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
SELECT student.Sname AS 有考试成绩的学生的姓名,ame AS 修课名称,SC.Grade AS 考试成绩
INTO [new_sc] --将查询结果放入新表new_sc中
FROM student,course,SC
WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno o
--16.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
--并要求将这两个查询结果合并成一个结果集,
--并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
--//此题用到了并union查询
SELECT Sdept 系名,Sname 姓名,Ssex 性别,ame 修课名称,SC.Grade 修课成绩
FROM student&
inner join SC&&&& ON student.Sno=SC.Sno
inner join course o
WHERE Sdept='信息系'
SELECT Sdept 系名,Sname 姓名,Ssex 性别,ame 修课名称,SC.Grade 修课成绩
FROM student&
inner join SC&&&& ON student.Sno=SC.Sno
inner join course o
WHERE Sdept='计算机系'
select sdept, sname,ssex,cname,grade from student,sc,course
where student.sno=sc.sno o and (sdept='信息系' or sdept='计算机系')
--17.用子查询实现如下查询:
--(1)&& &查询选修了C01号课程的学生的姓名和所在系。
SELECT Sname AS 选修了C01号课程的学生的姓名,Sdept AS 所在系
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')
--(2)&& &查询数学系成绩80分以上的学生的学号、姓名。
SELECT Sno AS 数学系成绩80分以上的学生的学号,Sname AS 姓名
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade&80)&
AND&& Sno IN(SELECT Sno FROM student WHERE Sdept='数学系')
--(3)&& &查询计算机系学生所选的课程名.
SELECT Cname AS 计算机系学生所选的课程名
FROM course
o IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='计算机系'))
--18.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现://////////////?????/
--(1)&& &在插入数据过程中建表。
--使用SELECT INTO插入数据的方法,是在插入数据的过程中建立新表
SELECT student.Sname AS 学生名字,ame AS 选修课程,SC.Cno AS 课程编号
INTO [SC_Info1]--将计算机系成绩高于80分的学生的修课情况插入到表SC_Info1中
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade&80 o AND student.Sno=SC.Sno
--(2)&& &先建一个新表,然后再插入数据。
--创建表SC_Info2
CREATE TABLE SC_Info2
&& &Sname char(7),
&& &Cname char(20),
&& &Cno&& char(10)
--往表SC_info2插入查询得到的结果
INSERT SC_Info2
SELECT student.Sname AS 学生名字,ame AS 选修课程,SC.Cno AS 课程编号
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade&80 o AND student.Sno=SC.Sno
--19.删除修课成绩小于50分的学生的修课记录
DELETE SC WHERE Grade&50 OR Grade IS NULL
--20.将所有选修了&c01&课程的学生的成绩加10分。
UPDATE SC&
SET Grade=Grade+10
WHERE Cno='C01'
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33608次
积分:1402
积分:1402
排名:千里之外
原创:98篇
转载:33篇
(13)(16)(4)(12)(12)(18)(23)(20)(11)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
数据库中SQL查询语句习题含的答案.doc 6页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
数据库中SQL查询语句习题含的答案
你可能关注的文档:
··········
··········
查询问题:设教学数据库Education有三个关系:
学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)
检索计算机系的全体学生的学号,姓名和性别;
检索学习课程号为C2的学生学号与姓名;
检索选修课程名为“DS”的学生学号与姓名;
(4)检索选修课程号为C2或C4的学生学号;
(5)检索至少选修课程号为C2和C4的学生学号;
(6)检索不学C2课的学生姓名和年龄;
(7)检索学习全部课程的学生姓名;
(8)查询所学课程包含学生S3所学课程的学生学号。
(1)检索计算机系的全体学生的学号,姓名和性别;
SELECT Sno,Sname,Sex
Sdept =’CS’;
(2)检索学习课程号为C2的学生学号与姓名;
(3)检索选修课程名为“DS”的学生学号与姓名
本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。 C →
基本思路:
(1)首先在C表中找出“DS”课程的课程号Cno;
(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno;
(3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。
SELECT Sno,Sname
(SELECT Sno
(SELECT Cno
Cname=‘DS’));
检索选修课程号为C2或C4的学生学号;
Cno=‘C2’
OR Cno=‘C4’;
检索至少选修课程号为C2和C4的学生学号;
X.Sno=Y.Sno
X.Cno=‘C2’ o=‘C4’ ;
检索不学C2课的学生姓名和年龄;
检索学习全部课程的学生姓名;
在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。
SELECT Sname
NOT EXISTS
(SELECT *
WHERE NOT EXISTS
(SELECT *
WHERE SC.Sno=S.Sno o));
查询所学课程包含学生S3所学课程的学生学号。
分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。
SELECT DISTINCT Sno
NOT EXISTS
(SELECT *
WHERE Y.Sno=‘S3’
NOT EXISTS
(SELECT *
WHERE Z.Sno=X.Sno o));
设教学数据库Education有三个关系:
学生关系S(SNO,SNAME,AGE,SEX,SDEPT);
学习关系SC(SNO,CNO,GRADE);
课程关系C(CNO,CNAME,CDEPT,TNAME)
查询问题:
1:查所有年龄在20岁以下的学生姓名及年龄。
2:查考试成绩有不及格的学生的学号
3:查所年龄在20至23岁之间的学生姓名、系别及年龄。
4:查计算机系、数学系、信息系的学生姓名、性别。
5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别
6:查所有姓“刘”的学生的姓名、学号和性别。
7:查姓“上官”且全名为3个汉字的学生姓名。
8:查所有不姓“张”的学生的姓名。
9:查DB_Design课程的课程号。
10:查缺考的学生的学号和课程号。
11:查年龄为空值的学生的学号和姓名。
12:查计算机系20岁以下的学生的学号和姓名。
13:查计算机系、数学系、信息系的学生姓名、性别。
14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。
15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。
正在加载中,请稍后...

我要回帖

更多关于 sql语句相同数据合并 的文章

 

随机推荐